Session ID wird fehlerhaft übergeben

HL1234

Grünschnabel
Hallo vielleicht kann mir jemand helfen?
Ich habe folgenden Fehler und den Code poste ich weiter unten:

F E H L E R:

beim ersten Aufruf von 'Nochmal' nach dem einmal 'Session beenden' angeklickt wurde
wird die Session-ID nicht übergeben ==> $_SESSION['s_aufruf'] gibt es nicht
und es kommt zu Fehlermeldungen
beim zweiten anklicken gibt es eine neue ID und dann geht es...

irgendie muß ich was falsch machen. Ich möchte das Skript rekursiv aufrufen mit der Session eine Variable beibehalten und in dem Skript via $_Get['f'] unterscheiden, ob die Seite zum ersten Mal aufgerufen wird und eine Session erzeugt wird - oder ob die Seite wiederholt aufgerufen wird, und dann die abgespeicherte Session Variable weiter bearbeitet werden kann.

Code:
<?php

error_reporting(E_ALL);


if ( !isset($_GET['f']) )
{

    // Unterbinden von Cookies:
    ini_set("session.use_cookies", "0");

    // Da wir die Session-ID automatisch anfügen,
    // muß PHP diese Aufgabe nicht mehr übernehmen:
    ini_set("url_rewriter.tags", "");

    //z.B Session lebt 20 Minuten ! vor session_start();
    //ini_set("session.gc_maxlifetime", 1200);
    
    //Alte Session mit 100% Wahrscheinlicheit löschen ! vor session_start();
    ini_set("session.gc_probability", 100);
    
    session_name("HLID");

    session_start();
 
    echo "<html><head><title>CGI-TEST</title></head><body><div align=\"left\">";
  
    echo "<h3>Du rufst mich zum ersten Mal auf</h3>";

    $sid = session_id();
    echo "sid = $sid<br><br>";

    $_SESSION['s_aufruf'] = 1;

    $out = $_SESSION['s_aufruf'];
    echo "\$_SESSION['s_aufruf'] = $out]<br>";

//    Die Konstante SID entspricht: $sid = session_id(); und PHPSESSID=$sid
    echo '<a href="test_cgi.php?f=1&' . SID . '">Nochmal! <br><p></a>';


    echo '<a href="test_cgi.php?f=0">Ende der Session!</a>';

    echo "</div></body>";

    
    //session_write_close(); 
}
else 
{

    session_start();  //zweiter durchlauf 

   // session_id($_GET['HLID']);


    foreach ($HTTP_SESSION_VARS as $k => $v) 
    {      
        echo '<p>' . $k . ' = ' . $v . '</p>';    
    }
    
    
    if ($_GET['f'] == 1)
    {
    
        
        echo "<html><head><title>CGI-TEST</title></head><body><div align=\"left\">";

        
        /*
        F E H L E R:
        
        beim ersten Aufruf von 'Nochmal' nach dem einmal 'Session beenden' angeklickt wurde
        wird die Session-ID nicht übergeben  ==> $_SESSION['s_aufruf'] gibt es nicht 
        und es kommt zu Fehlermeldungen
        beim zweiten anklicken gibt es eine neue ID und dann geht es...
        
        
        
        
        */
        
        
        
        $sid = session_id();
        echo "sid = $sid<br><br>";

        echo "<h3>Session Ausgabe</h3>";


        //extract($_SESSION);
        $out = $_SESSION['s_aufruf'];
        echo "\$_SESSION['s_aufruf'] = $out<br>";
       
        $_SESSION['s_aufruf']++; 



        $out = $_SESSION['s_aufruf'];
        echo "\$_SESSION['s_aufruf'] = $out";
        echo "</div></body>";

        //Die Konstante SID entspricht: $sid = session_id(); und PHPSESSID=$sid
        echo '<a href="test_cgi.php?f=1&' . "HLID=$sid" . '">Nochmal! <br><p></a>';

        echo '<a href="test_cgi.php?f=0">Session beenden?</a>';


    }

    
    If ($_GET['f'] == 0)
    {
        
        //session_write_close();
        
        session_destroy(); //alle Variablen einer Session verwerfen und die Session(datei) löschen
        
        //unset($_SESSION['s_aufruf']); //gibt eine Variable oder ein Array-Element vollständig frei

        //session_unset(); 
    
        echo "<html><head><title>CGI-TEST</title></head><body><div align=\"left\">";
  
        echo "<h3>Session zu Ende</h3>";


$sid = session_id();
echo "sid = $sid<br>";


        echo '<a href="test_cgi.php">Neue Session?</a>';

        echo "</div></body>";
    }

}


?>

Danke Harald
 
Zurück