PHP: session und cookies zugleich möglich?

  • Hallo! Lassen sich Cookies und Sessions zugleich nutzen? Bei meinem php Script gibt es nur Probleme (oder habe ich einfach nur einen Fehler??) Ausgelesen wird nur die Session Variable oder gar nichts.

    <?php
    session_start();


    if (isset($_COOKIE['teilnehmer']))
    {
    $mail=$_COOKIE['teilnehmer'];
    $_SESSION['mail']=$mail;

    $cookie = $_COOKIE['teilnehmer'];
    print("der alte bereits gesetzte cookie lautet: ");
    print($cookie);
    exit();


    }
    else
    {
    $teilnehmer=session_id();
    $mail=$teilnehmer;
    $_SESSION['mail']=$mail;
    setcookie("teilnehmer", $teilnehmer);

    $cookie = $_COOKIE['teilnehmer'];
    print("der neue nun gesetzte cookie lautet: ");
    print($cookie);
    exit();

  • Vielen Dank!

    das Problem habe ich jetzt gelöst. Der Cookie muss mit einer Zeitvariablen belegt werden. Sonst löscht das Schließen des Browsers wohl den Inhalt des Cookies. Das Skript unten funktioniert jetzt. Allerdings noch eine Frage: Warum liest beim Setzen des Cookies die Funktion den Cookie nicht gleich wieder aus?

    setcookie('teilnehmer', $teilnehmer, time()+3600);
    $cookie = $_COOKIE['teilnehmer'];


    Ist das das Problem mit refresh? Denn beim nächsten Öffnen oder Ansprechen der Seite ist ja alles da.

    Beispielscode:

    <?php
    session_start();


    if (isset($_COOKIE['teilnehmer']))
    {
    $mail=$_COOKIE['teilnehmer'];
    $_SESSION['mail']=$mail;
    $cookie = $_COOKIE['teilnehmer'];

    print("der alte bereits gesetzte cookie -cookie- lautet: ");
    print($cookie);
    print("<br>der alte bereits gesetzte cookie -mail- lautet: ");
    print($mail);
    exit();


    }
    else
    {
    $teilnehmer=session_id();
    $mail=$teilnehmer;
    $_SESSION['mail']=$mail;
    setcookie('teilnehmer', $teilnehmer, time()+3600);
    $cookie = $_COOKIE['teilnehmer'];

    print("der neue nun gesetzte cookie -cookie- lautet: ");
    print($cookie);
    print("<br> der neue nun gesetzte cookie -mail- lautet: ");
    print($mail);
    print("<br> die Session ID lautet: ");
    print($teilnehmer);

    exit();

    }

    ?>

  • $_COOKIE wird aus den Headerdaten gelesen, die beim verarbeiten des Requests vom Webserver zur Verfügung gestellt werden.
    Wenn du einen Cookie setzt, kann dieser also erst beim nächsten Request angesprochen werden.