Problem mit Sessionvariablen

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

  • Problem mit Sessionvariablen

    Ich habe ein Problem mit einer Sessionvariablen:
    Die Session wird gestartet, die Variable gesetzt. Überprüfe ich den Wert nach dem Setzen, so steht der korrekte Wert drin.

    PHP-Code:
    <? session_start();
    if($_GET['view']>0) {
        $_SESSION['archiv_org_id'] = $_GET['view'];
        }
    weiter im Code, kommt der Aufruf der Datei c_grafik.php, direkt vor dem Aufruf enthält die Variable noch den richtigen Wert:

    PHP-Code:
    if($_SESSION['archiv_org_id']>0) {
    ?>
    <img src="c_grafik.php?graph=31" alt="Schaubild"> 
    in c_grafik.php sollte an dieser Stelle dann der Wert zum Einsatz kommen:

    PHP-Code:
    elseif ($graph==31) {
        
    $caWhere "FROM archiv_orginaldaten_values WHERE archivId = " $_SESSION['archiv_org_id'];

    Aber bereits in der ersten Zeile von c_grafik.php ist die Variable leer. Andere Sessionvariablen, die ebenfalls in c_grafik verwendet werden, bleiben aber korrekt gesetzt.

    Und weil das noch nicht seltsam genug ist: Dies sind Ausschnitte aus der Version 1.1 meines Programms, der genau selbe Code kommt in der Version 1.07 vor. Dort funktioniert er. Rufe ich in meinem Browser (egal ob firefox oder Internet explorer) zunächst die Programmstelle in der Version 1.07 auf, so funktioniert es anschließend auch in der 1.1

    Ich bin ziemlich ratlos, woran das liegen könnte. Bin für jeden Tipp dankbar.

  • #2
    Du includest c_grafik.php nicht sondern schreibst ein Imagetag. Dafür sendet der Browser einen zweiten, separaten Request, der zwar den Sessioncookie enthält, aber vermutlich fehlt ein session_start()!

    Kommentar


    • #3
      Ich habe eine Protokolldatei, in die ich Ausgaben schreiben kann:

      PHP-Code:
      msgprot("Archiv_org_id:  ".$_SESSION['archiv_org_id']); 
      Dort steht dann z.B. "Archiv_org_id: 5" oder im Fall, dass sie leer ist dann "Archiv_org_id: "

      Allerdings hast Du recht, ich könnte auch noch den Debugger vom Zendtstudio anwerfen, habe ich noch nicht gemacht, weil ich in der Regel mit der Protokolldatei besser zurecht komme.

      Aber Fakt bleibt rufe ich zunächst in der 1.1 diese Programmstelle auf, so bekomme ich kein Schaubild (c_grafik zeichnet im folgenden ein Schaubild), rufe ich zunächst in der 1.07 das Schaubild auf, so funktioniert es danach auch in der 1.1 und zwar für beliebige viele verschiedene Schaubilder.

      Kommentar


      • #4
        Original geschrieben von onemorenerd
        Du includest c_grafik.php nicht sondern schreibst ein Imagetag. Dafür sendet der Browser einen zweiten, separaten Request, der zwar den Sessioncookie enthält, aber vermutlich fehlt ein session_start()!
        Habe es nun mit einem session_start() in c_grafik.php versucht, das bringt leider auch keinen Erfolg.
        Weiterhin bleibt dann die Frage, warum andere Sessionvariablen auf die selbe Art funktionieren?

        Kommentar


        • #5
          In c_grafik.php hast du also nachdem du als erste Zeile session_start() geschrieben hast keinen Inhalt der $_SESSION (var_dump($_SESSION) ? Bist du sicher, dass deine PHP Konf Session Cookies zulässt ? Hast du es schonmal probiert die Session ID im Link zu c_grafik.php anzugeben ?
          Desweiteren solltest du saubererweise $_GET['graph'] anstattt $graph verwenden.

          Gruss

          tobi
          ¨
          p.s. error_reporting() voll aufgedreht und keine Fehlermeldungen ?
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            So, nun ists gelöst. es wurde kurz nach dem ersten session_start() über ein require noch einemal session_start() aufgerufen.

            Etwas seltsam finde ich weiterhin, dass es hier nun geholfen hat die alte Version aufzurufen und danach die neue und dann der Fehler verschwunden war.

            Vielen Dank für die Antworten.

            Kommentar


            • #7
              So, nun ists gelöst. es wurde kurz nach dem ersten session_start() über ein require noch einemal session_start() aufgeruf
              und das hätte dir ein
              PHP-Code:
              error_reporting(E_ALL); 
              als Warning um die Ohren gehauen. Also immer das error_reporting() aufdrehen, wie es auch in unseren Regeln steht.

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar

              Lädt...
              X