Ankündigung

Einklappen
Keine Ankündigung bisher.

Session-Variable geht verloren?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anotherone
    hat ein Thema erstellt Session-Variable geht verloren?.

    Session-Variable geht verloren?

    Hallo,

    habe hier ein echt merkwürdiges Problem. Ich nutze eine Session-Variable ($_SESSION['typ']), um eine Typenbezeichung zu speichern. Dies passiert, wenn per Post eine entsprechender Wert übergeben wird:

    PHP-Code:
        if ($_POST['typ']!='') {
            
    $_SESSION['typ'] = $_POST['typ'];
        } 
    Nur wenige Zeilen tiefer, in denen nichts mit Session-Variablen gemacht wird (nur Datenbankabfragen) ist die Variable plötzlich leer.

    Woran kann das liegen?

  • Basti
    antwortet
    Zitat von Anotherone
    bin aber eben auch drauf gekommen, das bei on $typ und $_SESSION['typ'] das gleiche sind.
    ...nbis auf den Gültigkeitsbereich halt.

    Dachte immer, 4.3 wäre default off...
    Dem ist auch so. Seit 4.2. Musst du also wohl selbst mal umgelegt haben.

    Basti

    Einen Kommentar schreiben:


  • Anotherone
    antwortet
    Hast recht, hab den Beitrag von Basti grad erst gesehen, bin aber eben auch drauf gekommen, das bei on $typ und $_SESSION['typ'] das gleiche sind. Mein Server hier dagegen ist auf off. Dachte immer, 4.3 wäre default off...

    Dank für den Tip mit !empty

    Einen Kommentar schreiben:


  • Basti
    antwortet
    Hi.

    Bei register_globals = on referenzieren $typ und $_SESSION['typ'] auf den
    selben Wert. Von daher veränderst du $_SESSION['typ'], wenn du $typ
    veränderst. Das ist doch das Problem von dieser besch* Option. Falls du die
    also nicht abschalten willst, dann am besten deine ganze Applikation in eine
    Funktion main() setzen, dann läuft die auch auf Servern mit register_globals
    on.

    Basti

    PS:
    Dein if($_POST['typ'] != '') lässt vermuten, dass dein
    Error-Reporting-Level so eingestellt ist, dass NOTICEs nicht ausgegeben
    werden. Ändere das mal und dann schreib if (!empty($_POST['typ']).

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Seiteneffekte bei register_globals on können auch im Sessionmodul bemerkbar sein.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    @Bruchpilot
    darüber habe ich zuerst auch nachgedacht, kann aber net sein wenn die anderen sessions funktionieren!

    mh...ka...sry

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Auch beide gleich konfiguriert, insbesondere register_globals?

    Einen Kommentar schreiben:


  • Anotherone
    antwortet
    Da ist sie noch gesetzt. Mache ich das nach der letzten SQL-Abfrage, die den Wert ja braucht, ist sie leer. Sie ist aber auch vorher schon leer, da die SQL-Abfrage nicht ausgeführt wird (daher ist es ja aufgefallen). Das irritierende ist, das es auf meinem Server läuft, auf dem Produktivserver nicht. Beide Debian Sarge mit PHP 4.3.10

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    PHP-Code:
    <?php
     
    if ($_POST['typ']!='') { 
            
    $_SESSION['typ'] = $_POST['typ']; 
            echo 
    'test session:'.$_SESSION['typ'];
      } 
    ?>
    was kommt da heraus?

    Einen Kommentar schreiben:


  • Anotherone
    antwortet
    Ich habs schon fast befürchtet

    PHP-Code:
        $typ_query xtc_db_query("SELECT staubsaugertyp 
                                   FROM " 
    TABLE_SSB_NUMBERS 
                                   WHERE hersteller ='" 
    $_SESSION['hersteller_id'] . "' ORDER BY staubsaugertyp");

        
    $auswahl = array();
        
    $auswahl[0] = array('id' => '0''text' => ' -- bitte wählen -- ');
        
    $num 1;

        while (
    $typ xtc_db_fetch_array($typ_query)) {
            
    $auswahl[$num] = array('id' => $typ['staubsaugertyp'],
                               
    'text' => $typ['staubsaugertyp']);
            
    $num++;
        }

        if (
    $_POST['typ']!='') {
            
    $_SESSION['typ'] = $_POST['typ'];
        }

        
    $ssb_query xtc_db_query("SELECT beutelartikelnummer FROM " TABLE_SSB_NUMBERS " WHERE staubsaugertyp='".$_SESSION['typ']."'");
        
    $ssb_result xtc_db_fetch_array($ssb_query); 
    Stammt aus einem großen Ecommerce-Sytem und da wird die Session normalerweise ordentlich verwaltet, die hundert anderen Session-Werte bleiben auch erhalten, nur meiner geht verloren...

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    PHP-Code:
    <?php
    sessionstart
    () 
    ?>
    gesetzt??

    ein bisel mehr code...wir sind doch keine hellesher !!!

    thx stego87 :wink:

    Einen Kommentar schreiben:

Lädt...
X