/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-02/php5.txt


Themen:
- Formulare
- Sessions
- Dateien/Verzeichnisse
- Cross Site Skripting - XSS

- Kommunikation zwischen Webbrowser/Webserver
- HTTP-Protokoll
- Cookies

DNS-Server und Webserver: Unterschiedliche Server

1.) Name des Servers
2.) ...

Anfrage des Webbrowsers

GET /index.php HTTP/1.1.
Host: localhost

Antwort:

HTTP/1.1 200 OK
Date:
Server: 
X-Powerd-By:
Transfer-Encoding:
Content-Type:

201b

<body>...

Response-Code: 200 OK, Seite wurde gefunden

201b bedeutet: 8129 = 8kByte - so lang sind die Daten

1.) Request
2.) Response

- Nachrichtenkopf: Header
- Response-Code
- Nachrichtenkörper: Body

8 verschiedene Anfrage-Typen: Response-Types:
- GET
- POST (Gleich wie GET, aber eventuell andere Parameter)
- HEAD (Das gleiche, aber ohne BODY)
- PUT (Lädt Datei auf Server hoch)
- DELETE (Löscht Datei auf dem Server)
- TRACE (Der Server liefert die Antwort, wie er sie bekommen hat - wurde unterwegs manipuliert?)
- OPTIONS
- CONNECT (Verschlüsselte Verbindung über PROXY)

Response-Code

200 OK
301 Moved Permanently
400 Bad Request
404 Not found

Cookies: HTTP: Zustandsloses Protokoll

Der Wert eines Cookies kann im HTTP-Header übertragen werden

Nutzen:
- Speichern von benutzerdefinierten Einstellungen
- Sessions
- Sammeln von Surfgewohnheiten

Sitzungscookies

 <?php
 setcookie ("meinCookie", "Inhalt des Cookies", time()+3600);
 echo "Cookie wurde gesendet.<BR />\n";
 ?>
 <A HREF="getcookie.php">Cookie auslesen</A>

 
PHP-Beispiel-Codes
- setcookie.php
- getcookie.php

PHP-Functions:
- setcookie (...)
- getcookie (...)

Parameter der Funktion cookie
- Name des Cookies
- Inhalt des Cookies
- Abgelaufen

(3 Parameter)

Zugriff auf Cookie

$_COOKIES ["Name des Cookies"];
$_COOKIES [];

Globale Variablen 
$_GET []: Für Addressleiste
$_POST []: Für Formulare
$_COOKIES []: Für Cookies

Stichwort: Global assoziatives Array

Formulare, was lernen?
- Formulare entwerfen
- Listen und Mehrfachauswahlen
- Benutzereingaben überprüfen
- Affenformular
- Übertragungsmöglichkeiten
- Passwortabfrage

Formulare bestehen aus zwei Komponenten
- HTML-Code
- Skript (PHP, ..)


<HTML>
<HEAD><TITLE>Formular</TITLE></HEAD>
<BODY>
 <FORM ACTION="formular1.php" METHOD="GET">
 Vorname: <INPUT TYPE="text" NAME="vorname" /> <BR />
 Nachname: <INPUT TYPE="text" NAME="nachname" /> <BR />
 <INPUT TYPE="submit" VALUE="Los gehts!" />
 </FORM>
 </BODY>
</HTML>

Formulare werden mit dem FORM-Tag definiert. 

- FORM-Tag
- Attribut ACTION 
- Parameter POST (Welcher HTTP-Request kommt zum Einsatz)

Eingabefelder:
- Textfelder TYPE="text"
- Passwordfelder TYPE="password"    
- Checkboxen TYPE="checkbox"
- Schaltflächen TYPE="submit", verbunden mit ACTION 

NAME: Eindeutiger Name 

Entweder POST oder GET 

$_POST ["name1"];
$_GET ["name2"];

Listen in Formularen

SELECT-Tag

<HTML>
<HEAD><TITLE>Einfache Liste</TITLE></HEAD>
<BODY>
 <FORM ACTION="list.php" METHOD="GET">
 <SELECT NAME="auswahl">
 <OPTION>Apfel</OPTION>
 <OPTION>Birne</OPTION>
 <OPTION>Banane</OPTION>
 <OPTION>Grapefruit</OPTION>
 </SELECT>
 <INPUT TYPE="submit" VALUE="Abschicken">
 <FORM>
 </BODY>
</HTML>

echo $_GET ['auswahl'];

Mehrfachauswahlen - SELECT-Tag, MULTIPLE Attribut   

<?php
 $wahl = $_GET['auswahl'];
 for ($i=0; $i < sizeof($wahl); $i++) {
    $wert = current($wahl);
    echo $wert ."<BR />\n";
    next($wahl);
}
?>


isset ()


Affenformular

Passwörter:

FORM INPUT TYPE="password"
Dann mit MD5 speichern

md5 ("password");

Sessions:

1.) session_start ();
2.) Session-ID
3.) $_SESSION []

Session-ID's ohne Cookies seit PHP 5.3 nicht mehr unterstützt

session_destroy ();

DBMS

Relationale Datenbank, Relation, Tupel

Datentypen:
- Ganzzahlen
- Fließkommazahlen
- Zeichenketten
- binäre Datentypen 

BIT 
TINYINT
BOOL BOOLEAN
SMALLINT
MEDIUMINT
INT INTEGER
BIGINT

Fließkommazahlen

FLOAT
DOUBLE
DECIMAL

CHAR
VARCHAR (M)
TINYTEXT TEXT MEDIUMTEXT LONGTEXT

BINARY
VARBINARY
TINYBLOB BLOB MEDIUMBLOB LONGBLOB

DATE
TIME 
DATETIME
TIMESTAMP

CREATE TABLE

mysql -u root -p -v < xyz.sql

DROP DATABASE 'xyz'
CREATE DATABASE 'xyz'
DROP TABLE 'abc'
CREATE TABLE 'abc' ('name1' VARCHAR (64), 'name2' VARCHAR (64))
INSERT INTO 'abc' VALUES ("Hallo", "Welt");
SHOW TABLES IN 'xyz'
USE 'xyz'
SELECT * FROM 'abc'
SELECT * FROM 'abc' WHERE expression
INSERT INTO 'abc' ('name1', 'name2') VALUES ("Hallo", "Welt");
DELETE FROM 'abc' WHERE expression

SELECT * FROM 'abc' JOIN 'def'

USING

SHOW DATABASES;
SET PASSWORD;

mysql_connect ();
mysql_close ();
mysql_query ();
mysql_error ();
mysql_real_escape_string ();
mysql_select_db ();
mysql_fetch_row ();
mysql_fetch_assoc ();
mysql_num_rows ();
mysql_num_fields ();
mysql_result ();

$handle = mysql_connect ('127.0.0.1', user, password);

if ($handle) ...
else ...

$query = "SELECT * FROM 'abc';

$result = mysql_quere ($query);

$row = mysql_fetch_assoc ($result);



In C 

int factorial(int x) {
    if (x <= 1)
        return 1;

    return x * factorial(x - 1);
}

In Python

def factorial(x):
    if x <= 1:
        return 1

    return x * factorial(x - 1)
    
Hallo Welt:

print "Hallo Welt!"

Perl:

  if   (<Bedingung>) {<Anweisungen>}
 [elsif (<Bedingung>) {<Anweisungen>}]
 [else         {<Anweisungen>}]
 
Ruby

# Definiere „Funktion“
def meine_funktion
  puts "Hier bin ich"
end

# Kann in andern Objekten wie eine Funktion benutzt werden
class ABC
  def gib_meine_funktion_aus
    meine_funktion
  end
end
mein_abc = ABC.new
mein_abc.gib_meine_funktion_aus # => Hier bin ich
mein_abc.meine_funktion # => Fehlermeldung, private method `meine_funktion' called


SDL:

#include <SDL2/SDL.h>

Definitionen:

SDL_Event event;
SDL_Window* window = NULL;
SDL_Surface* surface = NULL;

atexit (SDL_QUIT)

Aufrufe

SDL_Init (SDL_INIT_VIDEO);

window = SDL_CreateWindow ();
surface = SDL_GetWindowSurface (window);
SDL_PollEvent (&event)
SDL_DestroyWindow (window);


SDL_Init ();
SDL_CreateWindow ();
SDL_GetWindowSurface ();
SDL_PollEvent ()
SDL_DestroyWindow ();

SDL_Rect src, dst;

src.x;
sry.y;
src.w;
src.h;

dst.x;
dst.y;
dst.w;
dst.h;

image->w;
image->h;

SDL_FillRect ();
SDL_SetColorKey ();
SDL_KeyState ();
SDL_FillRect ();
SDL_BlitSurface ();
SDL_Flip ();
SDL_FreeSurface ();
SDL_LoadBMP ();

image = SDL_LoadBMP ("tux.bmp");

MySQL nach Excel exportieren:

 header('Content-Type: application/xls');
 header('Content-Disposition: attachment; filename=info.xls');
 

 
$connect = mysqli_connect("hostname", "username", "password", "db_name");
if(isset($_POST["submit"]))
{
 $query = "SELECT * FROM users";
 $res = mysqli_query($connect, $query);
 if(mysqli_num_rows($res) > 0)
 {
 $export .= '
 <table> 
 <tr> 
 <th> id </th>
 <th>firstname</th> 
 <th>lastname</th> 
 <th>dob</th> 
 
 </tr>
 ';
 while($row = mysqli_fetch_array($res))
 {
 $export .= '
 <tr>
 <td>'.$row["id"].'</td> 
 <td>'.$row["firstname"].'</td> 
 <td>'.$row["lastname"].'</td> 
 <td>'.$row["dob"].'</td> 
 
 
 </tr>
 ';
 }
 $export .= '</table>';
 header('Content-Type: application/xls');
 header('Content-Disposition: attachment; filename=info.xls');
 echo $export;
 }
}

Einfache Filterung

SELECT * FROM kunden WHERE name = 'a coding project'

Filterung mit Suchefunktion

SELECT * FROM kunden WHERE name LIKE '%coding%'

Filterung zwischen zwei Werten

SELECT * FROM kunden WHERE id BETWEEN 1 AND 5

Filterung mit Subselect

SELECT * FROM kunden WHERE name IN (SELECT name FROM names)

Einfache Sortierung

SELECT * FROM kunden ORDER BY name,id DESC

Spalte hinzufügen

ALTER TABLE kunden ADD column strasse VARCHAR(255);

Benutzer erstellen

GRANT ALL PRIVILEGES ON *.* TO NeuerUser IDENTIFIED BY 'passwort';



The INNER JOIN keyword selects records that have matching values in both tables.

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;




SELECT 
  SUM(b.anzahl), 
  p.produkt
FROM 
  bestellung b,
  produkt p  
WHERE
  b.pr_id = p.id
GROUP BY
  p.produkt



SELECT 
  SUM(b.anzahl), 
  p.produkt
FROM 
  bestellung b
INNER JOIN 
  produkt p ON (b.pr_id = p.id)
GROUP BY
  p.produkt


  
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

JOIN 
INNER JOIN 
LEFT JOIN 
RIGHT JOIN 



Doppelte Einträge verhindern
DISTINCT-Anweisung

SELECT DISTINCT vorname FROM users ORDER BY vorname
SELECT DISTINCT vorname, nachname FROM users ORDER BY vorname, nachname



EXCEL

=SUMME (A3;B5)
=SUMME (A2:A14)

Anzahl:

=ANZAHL(E1:F4)

Höchst und Tiefswerte Ermitteln:

MIN ()
MAX ()

Durschnitt:

MITTELWERT ()

Logische Prüfung 

=WENN (BEDINGUNG; DANN; SONST)

=WENN (C9="Montag";"Okay";"anderer Tag")

=WENN(A1=“blau“;

=WENN(A5>100;A5-(A5*2%);A5)

=SUMMENPRODUKT
=HÄUFIGKEIT



<?php
$pdo = new PDO('mysql:host=localhost;dbname=databasename', 'username', 'password');
 
$sql = "SELECT * FROM users";
foreach ($pdo->query($sql) as $row) {
   echo $row['email']."<br />";
   echo $row['vorname']."<br />";
   echo $row['nachname']."<br /><br />";
}
?>

$stmt = $db->query ("SELECT * FROM codes");
$result = $stmt->fetchAll (PDO::FETCH_BOTH);


Eine "Certification Authority" (CA / Zertifizierungsstelle) ist eine Instanz, die digitale Zertifikate ausstellt und beglaubigt.


 Paket ca-certificates
 
 
 selbstsignierten Zertifikate
 
 CAs sind wesentlicher Bestandteil einer PKI (Public-Key-Infrastruktur) 
 
 - CA
 - PKI 
 - TLS-verschlüsselte Verbindung zum Server 
 
 Signatur ins Server-Zertifikat
 privater Schlüssel in RSA-Format erstellen 
 übliche Dateiendung: key 
 Außerdem: Zertifizierungsantrag, csr. Certificate Signing Request
 
 
 Ein Certificate Signing Request (CSR; deutsch Zertifikatsignierungsanforderung) oder Certification Reques ist ein digitaler Antrag, mittels einer digitalen Signatur aus einem öffentlichen Schlüssel ein digitales Zertifikat zu erstellen.
 
 Zwei Dateien:
 1.) beispiel.key 
 2.) beispiel.csr 
 
 Der Zertifizierungsantrag wird zum Signieren an eine CA übertragen 
 
 Man hat einen CSR - einen Certificate Signing Request - das ist ein Antrag - eine Datei - aber die ist ein Antrag - und den schickt man einer CA - und: Die signiert das - also beglaubigt das. Die CA kann man selber betreiben - das ist nicht offiziell. Dann heißt CA nicht einfach, nicht das Büro in dem man sitzt - sondern ist die ganze Software-Sammlung. 
 
 Jetzt schickt man den CSR an eine CA. 
 
 PKI-Datei: Man nennt alle Dateien gesammelt - PKI-Datei 
 
 Die CA verfügt über zwei Dateien:
 - ca.key 
 - ca.crt 
 
 Also, sagen wir so
 
 1.) Es gibt eine CA
 2.) Es gibt den Websitebetreiber
 
 1.) Es gibt einen Schlüssel
 2.) Es gibt eine Zertifikat 
 
 Schlüssel: Key 
 Zertifikat: CRT 
 
 In dem CRT ist der Key. Aber man hat zwei Dateien 
 
 Der Websitenbetreiber, hat 
 1.) Ein Zertifkat
 2.) Ein Key 
 Die CA hat ein 
 1.) Zertifikat
 2.) Einen Key 
 
 Damit gibt es:
 
 1.) CA 
 1.1.) Key 
 1.2.) CRT 
 2.) Homepage 
 2.1.) Key 
 2.2.) CRT 
 
 Die CA kann man selber sein. Dann ist das Zertifikat selbst signiert.
 
 Jetzt hat man noch den Zertifkatsantrag
 
 1.) Key 
 2.) CRT 
 3.) CSR 
 
 CSR = Zertifkatsantrag 
 
 Also, man hat statisch
 
  1.) CA 
 1.1.) Key 
 1.2.) CRT 
 2.) Homepage 
 2.1.) Key 
 2.2.) CRT 

 Jetzt das ist statisch, wenn es fertig ist. Damit die CA aber ein CRT für die Homepage erstellen kann, braucht die CA einen Antrag. Also, wenn die CA hundert Mal einen Key und einen CRT hat, dann hat der Nutzer davon nichts, wenn er keinen Antrag stellt.
 
 Also: Antrag: CSR
 
   1.) CA 
 1.1.) Key 
 1.2.) CRT 
 2.) Homepage 
 2.1.) Key 
 2.2.) CRT 
 2.3.) CSR 
 
 beispiel.key 
 beispiel.crt 
 beispiel.csr 
 
 CSR kann natürlich verschwinden - wenn der Antrag gestellt wurde und: Das Zertifkat da ist, kann der Antrag weg. 
 
 
 Dem Benutzer reicht aber das CRT der Homepage nicht. Er braucht auch das CRT des CA 
 
 ca.crt
 homepage.crt 
 
 Also, er kriegt das homepage.crt und überprüft die Richtig mit dem CRT des CA.
 
 Speicherformate:
 
 CA-Zertifikate - also, von der CA - einem Dienst, unterscheiden sich nicht von Client und Serverzertifikaten
 
 1.) CA-Zertifikat
 2.) Client-Zertifikat
 3.) Server-Zertifikat
 
 Linux, zwei verschiedene Dateiformate:
 
 1.) PEM-Format, Base64-kodiert 
 2.) DER-Format, binär kodiert (ASN.1-Format)
 
 PEM-Format: Also, in der Datei:
 
 BEGIN CERTIFICATE"/"END CERTIFICATE
 
 -----BEGIN CERTIFICATE-----
 
 
-----END CERTIFICATE-----

In diesem Format sind sie lesbar und enthalten, Strings wie


MIIG9TCCBd2gAwIBAgISA101uy+kA82E9A89jwHfDLh1MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0I


Bemerkung: Intermediate Certificates

CA-Zertifikate hinterlegen: (Abspeichern)

- Dateien in einem Verzeichnis - alle im PEM-Format und müssen Dateiendung *.pem haben 
- Einzelne Dateien mit allen CA's - in einer PEM
- NSS-Datenbank 
- ...
- Hardware-Tokens, können in Hardware gespeichert werden 

OpenSSL 
GnuTLS 
NSS 

/etc/ssl/certs 

Paket: Programm: ca-certificates, allgemein, anerkannte öffentliche CA-Zertifikate 

Aufbau eine CA-Certificates:

1.) Subject: Beschreibung wofür 
2.) Issuer: Ausstellende Instanz 

Selbstsignierte Zertifikate sind keine, die über eine CA signiert wurden 

1.) beispiel.key 
2.) beispiel.csr 
3.) Signieren 
4:) 

Es gibt die Möglichkeit, dass sie 

CRT, CSR, KEY heißen.

CRT: Zertifikat 
CSR: Antrag 
KEY: Schlüssel 

Oder sie heißen alle PEM, weil sie im PEM Format sind. 

Dann heißen die entsprechend 

req.pem 
cert.pem 
key.pem 



Certificate Authority (CA) erstellen
openssl genrsa -aes256 -out ca-key.pem 2048

Root-Zertifikat
openssl req -x509 -new -nodes -extensions v3_ca -key ca-key.pem -days 1024 -out ca-root.pem -sha512

Root-Zertifikat auf den Clients importieren
sudo cp ca-root.pem /usr/share/ca-certificates/myca-root.crt
sudo dpkg-reconfigure ca-certificates

Ein neues Zertifikat ausstellen

openssl genrsa -out zertifikat-key.pem 4096

openssl req -new -key zertifikat-key.pem -out zertifikat.csr -sha512

openssl x509 -req -in zertifikat.csr -CA ca-root.pem -CAkey ca-key.pem -CAcreateserial -out zertifikat-pub.pem -days 365 -sha512

zertifikat-key.pem, zertifikat-pub.pem, ca-root.pem


POST /test.php HTTP/1.1
Host: localhost
Content-Length: 7
Content-Type: application/x-www-form-urlencoded

q=Hallo


openssl s_client -connect www.facebook.com:443


Set-Cookie: PHPSESSID=ssi4fhgg2e6bnbmg0c7rf65jo1; path=/
Set-Cookie: Cookie23=Inhalt; expires=Sat, 16-Apr-2022 19:45:26 GMT; Max-Age=3600


openssl s_client -crlf -connect www.ituenix.de:443
.*2014-12-18_Fortuna,_Johannes_Benk_at_Neue_Burg,_Vienna_-hu-_6224.jpg .*2014-12-18_Fortuna,_Johannes_Benk_at_Neue_Burg,_Vienna_-hu-_6224.jpg .*20220504_121603_600x800.jpg .*20220504_121603_600x800.jpg .*20220504_121611_600x800.jpg .*20220504_121611_600x800.jpg .*20220504_121722_800x600.jpg .*20220504_121722_800x600.jpg .*20220504_121725_800x600.jpg .*20220504_121725_800x600.jpg .*20220504_121727_800x600.jpg .*20220504_121727_800x600.jpg .*20220504_210134_800x600_640x480.jpg .*20220504_210134_800x600_640x480.jpg .*20220504_210134_800x600.jpg .*20220504_210134_800x600.jpg .*704x396.jpeg .*704x396.jpeg .*freuddurchgestrichen.jpg .*freuddurchgestrichen.jpg .*img/Screenshot_20220508_101728.png .*img/Screenshot_20220508_101728.png .*img/Screenshot_20220508_101910.png .*img/Screenshot_20220508_101910.png .*img/Screenshot_20220508_110500.png .*img/Screenshot_20220508_110500.png .*img/Screenshot_20220510_122914.png .*img/Screenshot_20220510_122914.png .*img/Screenshot_20220510_204633.png .*img/Screenshot_20220510_204633.png .*img/Screenshot_20220511_100926.png .*img/Screenshot_20220511_100926.png .*img/Screenshot_20220511_125411.png .*img/Screenshot_20220511_125411.png .*img/Screenshot_20220511_182704.png .*img/Screenshot_20220511_182704.png .*img/Screenshot_20220511_184159.png .*img/Screenshot_20220511_184159.png .*inlondonwirdfreudbegeistertaufgenommen100 _v-gseapremiumxl.jpg .*inlondonwirdfreudbegeistertaufgenommen100 _v-gseapremiumxl.jpg .*justizdurchgestrichen.jpg .*justizdurchgestrichen.jpg .*justiz-t9417.jpg .*justiz-t9417.jpg .*slotj/slot-game-master/examples/Screenshot_20200915-112100.jpg .*slotj/slot-game-master/examples/Screenshot_20200915-112100.jpg .*slotj/slot-game-master/examples/Screenshot_20200915-112108.jpg .*slotj/slot-game-master/examples/Screenshot_20200915-112108.jpg .*slotj/slot-game-master/examples/Screenshot_20200915-112117.jpg .*slotj/slot-game-master/examples/Screenshot_20200915-112117.jpg .*slotj/slot-game-master/examples/Screenshot_2021-07-27-233210.jpg .*slotj/slot-game-master/examples/Screenshot_2021-07-27-233210.jpg .*slotj/slot-game-master/src/assets/atlas.png .*slotj/slot-game-master/src/assets/atlas.png .*slotj/slot-game-master/src/public/android-chrome-192x192.png .*slotj/slot-game-master/src/public/android-chrome-192x192.png .*slotj/slot-game-master/src/public/android-chrome-512x512.png .*slotj/slot-game-master/src/public/android-chrome-512x512.png .*slotj/slot-game-master/src/public/apple-touch-icon.png .*slotj/slot-game-master/src/public/apple-touch-icon.png .*slotj/slot-game-master/src/public/favicon-16x16.png .*slotj/slot-game-master/src/public/favicon-16x16.png .*slotj/slot-game-master/src/public/favicon-32x32.png .*slotj/slot-game-master/src/public/favicon-32x32.png .*slotj/slot-game-master/src/public/mstile-150x150.png .*slotj/slot-game-master/src/public/mstile-150x150.png .*slotj/slotjs-master/static/github/github-s-e-16.png .*slotj/slotjs-master/static/github/github-s-e-16.png .*slotj/slotjs-master/static/gmzcodes/gmzcodes-t-e-32.png .*slotj/slotjs-master/static/gmzcodes/gmzcodes-t-e-32.png .*slotj/slotjs-master/static/logo/slotjs-t-e-128.png .*slotj/slotjs-master/static/logo/slotjs-t-e-128.png .*slotj/slotjs-master/static/logo/slotjs-t-e-16.png .*slotj/slotjs-master/static/logo/slotjs-t-e-16.png .*slotj/slotjs-master/static/logo/slotjs-t-e-256.png .*slotj/slotjs-master/static/logo/slotjs-t-e-256.png .*slotj/slotjs-master/static/logo/slotjs-t-e-32.png .*slotj/slotjs-master/static/logo/slotjs-t-e-32.png .*slotj/slotjs-master/static/logo/slotjs-t-e-48.png .*slotj/slotjs-master/static/logo/slotjs-t-e-48.png .*slotj/slotjs-master/static/logo/slotjs-t-e-512.png .*slotj/slotjs-master/static/logo/slotjs-t-e-512.png .*slotj/slotjs-master/static/logo/slotjs-t-e-64.png .*slotj/slotjs-master/static/logo/slotjs-t-e-64.png .*slotj/slotjs-master/static/screenshots/slotjs-old.png .*slotj/slotjs-master/static/screenshots/slotjs-old.png .*slotj/slotjs-master/static/screenshots/slotjs.png .*slotj/slotjs-master/static/screenshots/slotjs.png .*slotm/slot-game-master/examples/Screenshot_20200915-112100.jpg .*slotm/slot-game-master/examples/Screenshot_20200915-112100.jpg .*slotm/slot-game-master/examples/Screenshot_20200915-112108.jpg .*slotm/slot-game-master/examples/Screenshot_20200915-112108.jpg .*slotm/slot-game-master/examples/Screenshot_20200915-112117.jpg .*slotm/slot-game-master/examples/Screenshot_20200915-112117.jpg .*slotm/slot-game-master/examples/Screenshot_2021-07-27-233210.jpg .*slotm/slot-game-master/examples/Screenshot_2021-07-27-233210.jpg .*slotm/slot-game-master/src/assets/atlas.png .*slotm/slot-game-master/src/assets/atlas.png .*slotm/slot-game-master/src/public/android-chrome-192x192.png .*slotm/slot-game-master/src/public/android-chrome-192x192.png .*slotm/slot-game-master/src/public/android-chrome-512x512.png .*slotm/slot-game-master/src/public/android-chrome-512x512.png .*slotm/slot-game-master/src/public/apple-touch-icon.png .*slotm/slot-game-master/src/public/apple-touch-icon.png .*slotm/slot-game-master/src/public/favicon-16x16.png .*slotm/slot-game-master/src/public/favicon-16x16.png .*slotm/slot-game-master/src/public/favicon-32x32.png .*slotm/slot-game-master/src/public/favicon-32x32.png .*slotm/slot-game-master/src/public/mstile-150x150.png .*slotm/slot-game-master/src/public/mstile-150x150.png .*Slotmachine-master/SlotMachine-master/images/apple.png .*Slotmachine-master/SlotMachine-master/images/apple.png .*Slotmachine-master/SlotMachine-master/images/cherry.png .*Slotmachine-master/SlotMachine-master/images/cherry.png .*Slotmachine-master/SlotMachine-master/images/grapes.png .*Slotmachine-master/SlotMachine-master/images/grapes.png .*Slotmachine-master/SlotMachine-master/images/lemon.png .*Slotmachine-master/SlotMachine-master/images/lemon.png .*Slotmachine-master/SlotMachine-master/images/orange.png .*Slotmachine-master/SlotMachine-master/images/orange.png .*Slotmachine-master/SlotMachine-master/images/pear.png .*Slotmachine-master/SlotMachine-master/images/pear.png .*Slotmachine-master/SlotMachine-master/images/watermelon.png .*Slotmachine-master/SlotMachine-master/images/watermelon.png .*Slotmachine-master/SlotMachine-master/index.php .*Slotmachine-master/SlotMachine-master/index.php .*text/poker2.txt .*text/poker2.txt .*text/poker.txt .*text/poker.txt