.:: NAVIGATION ::.
 A Einleitung  

.:: INFO ::.

.:: user ::.
Username:
Password:
--> registrieren <--


765 registrierte Benutzer

SCHULE.AT

MySQL

PHP

Wie komme ich zu einem Lehrer-Account?

Zuerst registrieren, anschließend Mail an ingolacheiner.net mit Namen, gültiger e-mail-Adresse, Username, Passwort und Schulkennzahl

 

·:: Zurück  weiter ::·
.:: K Cookies und Sessions ::.

Cookies sind kleine Textdateien die am PC des Clients gespeichert werden . Cookies sind vorallem zum Speichern von userspezifischen Daten die man nicht am Server speichern möchte geeignet. Mit der Funktion setcookie() wird ein Cookie im Dateisystem des Client gespeichert:

// setcookie(name, value, expires, path, domain, secure);
setcookie("cookiename", "zu speichernde Daten ", time()+3600, "/");

 

Funktion Beschreibung
name Name des Cookies
value die zu speichernden Daten
expires Verfallsdatum des Cookies
path legt fest welcher Pfad das abgelegte Cookie wieder lesen darf
domain legt die Domain fest, die dieses Cookie auslesen kann
secure beschränkt den Cookie auf SSL-Verbindungen

Wichtig! Cookies müssen immer gesetzt werden bevor HTML-Code an den Browser ausgegeben wird. Das Cookie wird im Header der Datei mitgeschickt. Falls davor schon Daten geschickt wurden kann kein Cookie mehr gesetzt werden. PHP gibt eine Fehlermeldung aus.

Um ein Cookie wieder auszulesen kann man es als Variable mit seinem Namen ansprechen. Im Beispiel unten also $_COOKIE['besuche'].

setcookie("besuche", "2910");

if(isset($_COOKIE['besuche']))
echo "Besuche = $_COOKIE['besuche']";

Zuster prüfen wir mittels isset() ob ein Cookie existiert, gesetzt wurde. Ist dies der Fall können wir die gespeicherten Wert mit echo $_COOKIE['besuche'] ausgeben.

Mehrere Variablen in Cookies speichern

Um mehrere Informationen in einem Cookie speichern zu können, setzt man diese einfach zu einem String zusammen und separiert sie mittels eindeutigen Trennzeichen.

Liegen die Daten als Arrays vor, dann bietet sich die Funktion implode() an, um sie zu einem String zusammenzufassen. Einzelne Variablen werden mit dem Punktoperator zusammengeschlossen..


<?php
if(isset($_COOKIE["myCookie"]))
    {
    
$liste explode("§§"$_COOKIE["myCookie"]);
    
$name $liste[0] ;
    
$remain round(60 - ((time() - $liste[1])/ 60));
    echo 
"Hallo $name!<br />";
    echo 
"In $remain Minuten wird das Cookie gelöscht.";
    }
else
    {
    if(isset(
$_POST["name"]))
        {
        
$expires time() + 3600;
        
$zeit time();
        
$value $_POST["name"] . "§§" $_POST["zeit"];
        
setCookie("meinCookie"$value $expires""""FALSE);
        echo 
"Cookie wurde gesetzt";
        }
    else
        {
        echo 
"<form action=\"" $_SERVER["PHP_SELF"] . "\" method=\"post\">";
        echo 
"Name:<br /><input name=\"name\" />";
        echo 
"<input tpye=\"submit\" value=\"go\" />";
        echo 
"</form>";
        }
    }
?>

 

Übung K1

Falls noch kein Cookie gesetzt wurde soll ein Formular zur Namenseingabe erscheinen. Falls bereits ein Cookie gesetzt wurde soll folgender Text ausgegeben werden: Hallo "DeinName"! Du bist bereits x mal hiergewesen! Dabei soll bei jedem neuen Aufruf der Seite der Zähler um eins erhöht werden. Probier das ganze einfach unten aus!

Name:

Lösung

Session

Das http-Protokoll bietet keine Möglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden. Für einen Warenkorb oder ähnliches ist es aber notwendig dass der Server den Client von dem eine neue Seite angefordert wird "wiedererkennt".

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander setzen. Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu, mit der sich der Client am Server "ausweisen" kann.

Genau wie beim Cookie stehen auch bei der Session alle registrierten Variablen jedem Script zu Verfügung.

Sessions mit PHP

Mittels session_start() wird eine Session begonnen - mittels session_register() werden Variablen in dieser Session registriert und sind daher für alle Scripts aufrufbar.

Funktionen für die Session-Verwaltung

Funktion Beschreibung
session_start() startet eine Session im Skript
session_destroy() löscht aktuelle Session und alle Daten
session_name() gibt den Namen der Session zurück
session_id() gibt die Session-ID zurück
session_register() registriert eine Variable in der Session
session_unregister() löscht eine Variable aus der Session
session_is_registered() überprüft eine Variable, ob sie in der Session gespeichert ist. Gibt TRUE oder FALSE zurück.
session_unset() löscht alle Variablen aus der Session

Achtung! Bei den Funktionen session_register(), session_unregister() und session_is_registered() darf nur der Name als Argument übergeben werden (Dolllarzeichen wird weggelassen).

$daten = "Meine Daten";
session_register("daten");
if(session_is_registered("daten"))
{
echo $_SESSION["daten"];
}

Ein Beispiel

Um die Session-Verwaltung ausprobieren zu können, benötigen wir mehrere Datein, die immer wieder auf die aktuelle Session zugreifen. Das Beispiel ist aus dem Buch: Dirk Ammelburger, Goto PHP4 2002.

Die erste Datei dient dazu, dass der User seinen Namen eingeben kann, die Session gestartet wird und die Startzeit in der Session registriert wird.

<?php
//Session wird gestartet!
session_start();

//Ausgabe der Daten!
echo "Sie haben die Session-ID: " session_id();
echo 
"<br />";
echo 
"Ihr Sessionname lautet: " session_name();
echo 
"<br />";

//Startzeitpunkt wird festgestellt und registriert!
$startzeit time();
session_register("startzeit");
?>

<!-- HTML-Formular für den Usernamen -->
Willkommen!<br />
<form action="session_b.php" method="post">
Bitte Namen eingeben:<br />
<input name="name" />
<imput type="submit" value="anmelden" />
</form>

<?php
//Sessiondaten werden überprüft!
if (session_is_registered("startzeit"))
{
    echo 
"Ihre Startzeit wurde erfolgreich registriert!";

?>
          
session_a.php

<?php
//Session wird gestartet!
session_start();
//Formulardaten werden überpüft!
if($_POST["name"] == ""
{
    
$_POST["name"] = "nobody";
}
// Begrüßung
echo "Hallo " $_POST["name"] . "!<br />";
//Zeit auf der Seite wird berechnet und ausgegeben
$dzeit time() - $_SESSION["startzeit"];
echo 
"Du bist seit $dzeit Sekunden angemeldet!<br />";
//Daten werden in der Session registriert, wenn nötig!
if(!(session_is_registered("name")))

    
session_register("name"); 
}
//Ausgabe weiterer Sessiondaten!
if(session_is_registered("lang"))
{
    echo 
"Du möchtest die Sprache " $_SESSION["lang"] . " lernen!<br /><br />";
}
?> 
<!-- HTML-Linkliste -->
<a href="session_c.php?mylang=C">Ich will C lernen!</a><br />
<a href="session_c.php?mylang=PHP">Ich will PHP lernen!</a><br /> 
<a href="session_c.php?mylang=Java">Ich will Java lernen!</a><br /> 
<a href="session_d.php">Session verlassen!</a><br />

session_b.php

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen. Nun steht die Startzeit wieder zur Verfügung und wir berechnen die Aufenthaltsdauer unseres Users. Außerdem prüfen wir den eingegebenen Namen.

<?php
//Session wird gestartet!Alle Daten sind wieder vorhanden!
session_start();
//Begrüßung 
echo "Hallo " $_SESSION["name"] . " <br />";
//Zeit auf der Seite wird berechnet und ausgegeben
$dzeit time() - $_SESSION["startzeit"];
echo 
"Du bist seit $dzeit Sekunden angemeldet!<br><br>";
//Variablen werden gesetzt!
$lang $_GET["mylang"];
//Die Session wird überprüft und bei Bedarf aktualisiert!
if (!session_is_registered("lang"))
{
    
session_register("lang");

echo 
"Sie haben die Sprache " $_SESSION["lang"] . " gewählt!<br><br>";
?>
<!-- HTML-Link -->
<a href="session_b.php>weiter</a>

session_c.php

Wir registrieren die Variable $lang. In diese wird je nach angeklickten Link eine Programmiersprache geschrieben. Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird.

Um die Session wieder zu verlassen, zu zerstören klickt man auf den letzten Link.

<?php
//Session wird gestartet!Alle Daten sind wieder vorhanden!
session_start();
//Begrüßung 
echo "Hallo " $_SESSION["name"] . "<br />";
//Zeit auf der Seite wird berechnet und ausgegeben
$dzeit time() - $_SESSION["startzeit"];
echo 
"Du bist sei $dzeit Sekunden angemeldet!<br><br>";
//Session wird beendet!
session_destroy();
echo 
"Ihre Session wurde beendet!<br>";
?>
<!-- HTML-Link -->
<a href="session_a.php>wieder anmelden</a>
session_d.php

In diesem Skript wird die Session zerstört, das heißt die Session-ID und alle registrierten Variablen werden wieder gelöscht.

 

Übung K2

Erstellt von: ingo am 4. 12. 05
Erstelle ein einfaches Login-Script, dass mit Sessions arbeitet. Wobei der Username und das Passwort in einer Datei wie unten dargestellt gespeichert werden sollen.

user1|pwuser1|\r\n
user2|pwuser2|\r\n

Außerdem soll Inhalt einer anderen Datei nur nach erfolgreichem Login sichtbar sein.

Lösung

Nur angemeldete Lehrer können Lösungen sehen!



·:: Zurück  weiter ::·

   


© 2005 unter OPL
ingolacheiner.net