Marktplatz Downloads Tutorials Forum

Designnation bietet auch:

Tutorial hinzufügen

Beliebte Links Weitere Optionen

Tutorial suchen

Titel

Schlüsselwörter

PHP / MySQL Tutorial: Sessions und Cookies



Ranking: +6   Kommentare: 6   |   Bewertung: Keine Berechtigung!  

  • Hallo DN und willkommen bei dem Tutorial zum Thema Cookies und Sessions.
    Es gibt tausende Cookies und Sessions, vor allem von Foren, Communityseiten, Logins, usw. Ich will euch mal ein wenig erklären, was das ist und wie man sie nutzt.

    1. Was sind Cookies und Sessions? Wo ist der Unterschied?
    In Cookies und Sessions kann man Daten schreiben, die auch beim Wechsel der aktuellen Seite behalten werden. Cookies speichern die Daten dabei auf der Festplatte des Benutzers und Sessions sind nur so lange gültig, wie der Benutzer den Browser offen lässt. Wird der Browser geschlossen, werden auch die Sessions gelöscht, die Cookies bleiben bestehen. Man kann mit Hilfe von Sessions und Cookies Logins für Administrationsbereiche erstellen, aber dem Benutzer auch sagen, wann er das letzte mal auf der Seite war, es gibt viele Einsatzmöglichkeiten.

    2. Sessions in PHP
    Um Sessions in einer PHP-Seite zu nutzen, muss zu allererst die Funktion session_start() aufgerufen werden. Wichtig dabei ist, dass vorher kein Zeichen ausgegeben wurde, da es sonst zu einem Fehler kommen kann. Man kann die Fehler aber auch umgehen, in dem man die Funktion ob_start() verwendet. Sie Puffert die Ausgabe und lässt zu, dass session_start() ausgeführt werden kann.

    Code:


    <?php



        
    // Startet die Sessions

        
    session_start();



        
    // Weiterer Codes

    Die Session ist nun gestartet und es können Daten in die Session-Variablen gespeichert bzw. aus diesen ausgelesen werden. Die Session-Variablen sehen so aus: $_SESSION['VariablenName']

    Bsp.: Benutzer schreibt seinen Namen in ein Textfeld eines Formulars und sendet das Formular ab. Das PHP-Script speichert den Namen in einer Session-Variable und gibt den Namen aus. Da der Name immer ausgegeben werden soll, solange eine Session mit dem Namen vorhanden ist, wird vorher abgefragt, ob die Session bereits existiert. Falls dies der Fall sein sollte, wird das Formular nicht angezeigt.
    index.php

    Code:


    <?php



        session_start
    ();



        
    // Überprüft, ob die Session mit dem Benutzernamen vorhanden ist

        
    if(!isset($_SESSION['BenutzerName']))

        {

            
    // Überprüft, ob das Formular abgeschickt wurde und das Feld Name ausgefüllt ist

            
    if(!isset($_POST['SendeName']) OR trim($_POST['Name']) == "")

            {

                
    // Formular

                
    echo("<form action="test.php" method="post">n");

                echo(
    "  Dein Name: <input type="text" name="Name" />n");

                echo(
    "  <input type="submit" name="SendeName" value="Ok" />n");

                echo(
    "</form>n");

            }

            else

            {

                
    // Speichert den eingegebenen Namen in der Session ab

                
    $_SESSION['BenutzerName'] = htmlspecialchars($_POST['Name']);

            }

        }

        

        
    // Prüft nochmals, ob die Session mit dem Benutzernamen vorhanden ist. Würde man den Teil als else-Bedingung

        // an die obere Abfrage hängen, würde nach dem Senden des Formulars der Name noch nicht ausgegeben, erst

        // beim aktualisieren der Seite

        
    if(isset($_SESSION['BenutzerName']))

        {

            echo(
    "Willkommen ".$_SESSION['BenutzerName']."<br />n");

        }

        

    ?>

    Die Funktion htmlspecialchars("string") wandelt alle Sonderzeichen in HTML-Code um, aus < wird z.B. &lt; und aus & wird &amp;

    Will man eine Session-Variable nun löschen, kann man dies mit unset(mixed Var tun:

    Code:


    <?php



        
    unset($_SESSION['BenutzerName']);



    ?>

    Zur Sicherheit gibt es noch etwas zu sagen: Die Session wird auf dem Server gespeichert und wenn man nun die Session-ID mit einem Link an einen Freund oder sonst jemanden gibt, dieser den Link verfolgt, ist er mit euren Daten eingelogt, darum immer schön aufpassen, bei der Linkweitergabe. Die meisten Server sind wohl so konfiguriert, dass die Session-ID "unsichtbar" für den Benutzer bleibt, will man sie dennoch benutzen, kann man die ID mit der Funktion session_id() aufrufen.

    3. Cookies in PHP

    Im Gegensatz zu Sessions, werden Cookies auf dem Computer des Benutzers gespeichert. Der Benutzer kann den Browser schließen, den PC Herunterfahren, Neustarten usw. Die Daten bleiben dabei bestehen und können beim nächsten Aufruf der Seite ausgelesen werden. Geeignet ist sowas z.B. um dem User zu sagen, wann er das letzte mal die Seite besucht hat oder um sein Login zu speichern, damit er sich nicht immer wieder neu anmelden muss.

    Um Cookies zu setzen, benutzt man die Funktion setcookie().

    Bsp: Der Benutzer besucht die Webseite, wir prüfen, ob er bereits ein Cookie hat. Falls ja, geben wir einen Text aus, wann er das letzte mal hier war, ansonsten Speichern wir ein neues Cookie und geben einen Text aus, dass er das erste Mal diese Seite besucht. Wenn er schon einmal da war, werden wir eine Session anlegen, falls sie nicht schon existiert, in der wir speichern, wann er das letzte mal da war. Damit verhindern wir, dass der Benutzer gesagt bekommt, dass er gerade eben schonmal da war. Außerdem prüfen wir, ob der letzte Besuch des Users länger als 30 min her ist, damit er nicht gesagt bekommt, dass er vor 3 min da war. Das Cookie wird bei jedem Klick mit der aktuellen Zeit überschrieben, damit wir möglichst genau den letzten Zeitpunkt seines Besuches haben.
    index.php

    Code:


    <?php



        session_start
    ();

        
    ob_start();

        

        
    // Prüft, ob eine Session bereits gesetzt wurde

        
    if(!isset($_SESSION['LetzterBesuch']))

        {

            
    // Prüft, ob das Cookie existiert und ob das Cookie + 30min kleiner als "jetzt" ist

            
    if(isset($_COOKIE['LetzterBesuch']) AND ($_COOKIE['LetzterBesuch'] + 60 30) < time())

            {

                
    // Session bekommt den Wert vom Cookie

                
    $_SESSION['LetzterBesuch'] = $_COOKIE['LetzterBesuch'];

            }

            else

            {

                
    // Session bekommt den Wert -1

                
    $_SESSION['LetzterBesuch'] = -1;

            }

        }



        
    // Prüft den Wert von Session, welcher -1 oder den Wert des Cookies annehmen kann

        
    if($_SESSION['LetzterBesuch'] > 0)

        {

            
    // Umwandeln der Zeit aus der Session in Datum und Uhrzeit

            
    $datum date("d.m.Y"$_SESSION['LetzterBesuch']);

            
    $uhrzeit date("H:i"$_SESSION['LetzterBesuch']);

            
    // Ausgeben, wann der User das letzte Mal da war

            
    echo("Du warst das letzte Mal hier am ".$datum.", um ".$uhrzeit." Uhr.<br />n");

        }

        else

        {

            
    // Ausgeben, dass der User das erste Mal da ist

            
    echo("Du bist zum ersten Mal auf dieser Seite.<br />n");

        }



        
    $jetzt time();

        
    $ablaufDesCookies time() + 60 60 24 365;

        
    // Cookie speichern

        
    setcookie("LetzterBesuch"$jetzt$ablaufDesCookies);



    ?>

    Zur Sicherheit von Cookies gibt es eigentlich auch nicht viel zu sagen. Eine andere Webseite kann das Cookie nicht lesen, aber jemand, der eure Logindaten haben will und zugang zu eurem Rechner bekommt, kann das Cookie aus dem Ordner, in dem es gespeichert ist, rauskopieren und bei sich einfügen und erhält damit eure Daten.


    Um ein Cookie zu löschen, kann man ebenfalls die unset() funktion nutzen:

    Code:


    <?php



        
    unset($_COOKIE['CookieName']);



    ?>

    Das war es, bei Fragen einfach anschreiben =)



Veröffentlicht von: deleted_1373545880
Veröffentlicht am: 28 Feb. 2008
Bookmarks: social bookmarking yigg it Linkarena Technorati Yahoo Mr. Wrong
Schlüsserwörter: Cookies HTML PHP Session Sicherheit Web


Themenverwandte Tutorials


Kommentar(e) (6)


Escandade sagt:

Ich habs jetzt nur kurz überflogen, find es gut soweit.

Aber wie stelle ich die Länge bis zum Logout ein? Bei mir isses so, dass man nach i.wie 2-3 Mins Inaktivität ausgeloggt ist... -.-

Und falls man 2-3 Mins an einem Beitrag schreibt, dann speicherts denn ohne benutzernamen und ohne benutzerid :/ dann sind die 2 felder einfach leer in der db :/

wie kann ich das regeln, dass eine session mind. 30 mins geht bis man automatisch ausgeloggt ist?

gruss und danke =)

23 Feb. 2009 21:36:24 • Antworten


SaferServer sagt:

Einfach gehaltenes und übersichtliches Tutorial. Gibt n Bienchen von mir ;)

29 Sep. 2008 17:39:03 • Antworten


Yakkul sagt:

Sehr gutes Tutorial!

17 Mar. 2008 11:57:43 • Antworten


Beastie sagt:

Vielen Dank, gut geschriebenes Tutorial

3 Mar. 2008 05:43:30 • Antworten


D4rk sagt:

ähhm, soweit ich weiß nutzt joomla im Frontend gar keine sessions...

29 Feb. 2008 15:27:11 • Antworten


stuffjm sagt:

vielen Dank, jetzt weiß ich endlich wie man das bei joomla (CMS) mit den cookies macht

29 Feb. 2008 15:14:34 • Antworten



Anfang

<<

1

>>

Ende

Kommentar eintragen


!! Jetzt kostenlos anmelden oder einloggen und mitdiskutieren!


Partner: • Designer in ActionFlash HilfeTutorials.dePixelio.deFlashstar BlogLizenzfreie Bilder