PHP und Session-Handling

Dieses Thema PHP und Session-Handling im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Michael_B, 22. März 2004.

Thema: PHP und Session-Handling Hallöchen mal wieder, folgendes Problem: Ich starte in einem PHP-Skript eine Session, registriere danach eine...

  1. Hallöchen mal wieder,

    folgendes Problem: Ich starte in einem PHP-Skript eine Session, registriere danach eine Variable in der Session, weise dieser dann einen Wert zu. Innerhalb dieses Skripts kann ich ohne Probleme wieder auf diese Variable zugreifen. Sobald ich aber auf ein anderes Skript wechsle (die Session bleibt ja bestehen) ist diese Variable nicht mehr zugreifbar.

    Code:
    <? // Datei: index.php
    session_save_path(../../temp);
    session_start();
    $sid=session_id();
    session_register(ant);
    $_SESSION[ant]=array();
    session_register(count);
    $_SESSION[count]=0;
    
    echo \$_SESSION[\count\] = .$_SESSION[count].<br>\$_SESSION[\ant\] = .$_SESSION[ant].<br>\n;
    echo <a href=\test.php\>zum Test</a>\n;
    ?>
    
    Ausgabe von index.php:
    $_SESSION[count] = 0
    $_SESSION[ant] = Array
    zum Test

    Funktioniert wunderbar. Klicke ich jedoch nun auf den Link zum Test (Aufruf der test.php) kommt folgende Ausgabe:
    $_SESSION[count] =
    $_SESSION[ant] =

    Hier noch der Code von test.php
    Code:
    echo \$_SESSION[\count\] = .$_SESSION[count].<br>\$_SESSION[\ant\] = .$_SESSION[ant].<br><br>\n;
    Was mach ich hier denn falsch? Warum kann ich in einem anderen Skript die Variablen nicht mehr referenzieren?

    Thanks in advance.

    Michael
     
  2. Hi

    Probier es mal so:
    Code:
    <?php // Datei: index.php
    session_save_path(../../temp);
    session_start();
    
    $_SESSION[ant]=array();
    
    $_SESSION[count]=0;
    
    echo \$_SESSION[\count\] = .$_SESSION[count].<br>\$_SESSION[\ant\] = .$_SESSION[ant].<br>\n;
    echo <a href=\test.php\>zum Test</a>\n;
    ?>
    
    Gruß, Michael
     
  3. Das hat so (also ohne das session_register()) auch nicht funktioniert...

    Könnte es vielleicht sein, dass ich in der test.php irgendwas falsch mache/vergessen hab?

    THX
    Michael
     
  4. Ich habs hinbekommen:

    eigenartigerweise kann ich zwar in der index.php nach der Registrierung der Variablen per $_SESSION[variable] auf $variable zugreifen, das geht aber nicht mehr in weiteren Skripten... Hier gehts nur mit dem normalen Variablennamen, also mit $variable (und nicht $_SESSIION[...]).

    Wichtig ist, dass auch im Folgeskript session_start() ausgeführt wird...

    Danke nochmals.

    Erledigt

    Michael
     
  5. Hi

    Dann dürfte aber bei dir immernoch etwas falsch konfiguriert sein.
    Konfigurier mal den Path zum speichern der Temporären Dateien direkt in der php.ini.
    Sonst musst du das bei jeder Datei manuell setzen.

    Auch solltest du eine PHP Version >=4.3 haben, die alten machen mit dieser Art etwas in eine Session zu schreiben noch Probleme (glaub 4.1 war das)

    Gruß, Michael
     
  6. Das mit dem Session_savepath kann ich nicht ändern, da das ein server von unserem intranet ist und der von anderen stellen administriert wird...

    jedenfalls läuft da php 4.0 (schon wat älter), aber bisher hat es mit den Sessionvariablen funktioniert...
     
  7. Hi

    Ja da ist das noch ein Bug.
    Dann lieber $var = foo und
    session_register(var nehmen.

    Gabs da eigentlich schon die Superglobals?

    Gruß, Michael
     
  8. Keine Ahnung... weiss noch nicht mal was Superglobals sind. Kenne nur die normalen globalen... ???
     
  9. Hi

    $_SESSION ist eine Superglobal :)

    Ich glaub die wurden erst mit 4.1 eingeführt.

    Gruß, Michael