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);