/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-01/php.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 ()