Thomas Beck: Unbekannte Variable bei Übergaben

Hallo zusammen,

ich habe in PHP folgendes Problem:
Ich definieren eine Variable $variable. Diese wird bei einem erfolgreichen Login auf 1 gesetzt.

in meinem PHP-Teil des Dokuments ist folgende Abfrage enthelten:
<?php
   if($variable==1)
   {
    if($_POST["send"] == "1")
    {
       include("Warenkorb.php");
    }
    else
    {
      if($_POST["send"] == "3")
      {
         include("mail.php");
      }
      else
      {
         include("getr_tab.php");
      }
    }
   }
   else echo "schlecht";
   ?>

Es soll also überhaupt erst die Verarbeitung geschehen, wenn $variable auf 1 steht. Beim ersten Programmdurchlauf funktioniert dies auch. Nur wenn ich in getr_tab.php (dieser Zweig wird als erstes durchlaufen) "send" auf 1 setze und wieder auf die Startseite verweise ist $variable nun unbekannt, ergo läuft er immer in den else-Zweig rein.
Ich tippe es liegt an der fehlenden Übergabe von $variable zurück an die Startseite, weiß aber auch nicht wie ich diese bewerkstelligen soll und wäre über Tips sehr dankbar!

Grüße,
Thomas

  1. wie sieht denn getr_tab.php aus ? was passiert da genau ? Wie verweist Du wieder auf die Startseite ?
    Eine Variable ist nur solange gesetzt, wie das Script aktiv ist.

    1. Hallo, <-- heute mal nur ne kurze Begrüßung

      wie sieht denn getr_tab.php aus ? was passiert da genau ? Wie verweist Du wieder auf die Startseite ?
      Eine Variable ist nur solange gesetzt, wie das Script aktiv ist.

      ... oder man sie "durchschleppt" von Request-Response zu Request-Response...

      Dazu eigenen sich ein als hidden_var übergebenes Array aller gesammelten Werte. Das hat(!) natürlich nur Sinn, wenn es sich nicht um manipulationsgefährdete Daten / Verfahren handelt.

      Sonst hilft nur eine Session (siehe U.R.)

      Grüße
              <-- das ist jetzt eine kurze Schlußformel
      Tom

  2. Hallo,

    du könntest das ja über eine Session-Variable regeln, die angelegt wird, wenn dein Userlein sich erfolgreich eingelogged hat.

    if(alles in ordnung bei login) {
      $_SESSION['variable'] = 1;
    }

    und statt if($variable == 1) machst du halt

    if($_SESSION['variable'] == 1) { mach was }

    Ich hoffe, das hilft Dir.

    Liebe Grüße, Uschi

  3. Hallo (auch) Thomas,

    Ich tippe es liegt an der fehlenden Übergabe von $variable zurück an die Startseite, weiß aber auch nicht wie ich diese bewerkstelligen soll und wäre über Tips sehr dankbar!

    Wenn Du "Ping-Pong" spielst (Formular - Server - Formular - Server), musst Du die Variable
    z.B. in ein Hidden-Feld im Formular schreiben (wo es aber manipuliert werden kann!), oder
    aber Du schreibst die in eine Session-Variable auf dem Server und gibst nur die Session-ID
    als Hidden-Variable im Formular weiter.

    Ein paar Seiten aus der d.c.l.p-FAQ:
    Variablen und Formulare
    http://www.dclp-faq.de/ch/ch-webvariablen.html

    Das "Affenformular" - Formularverarbeitungen in Normalform
    http://www.dclp-faq.de/q/q-stil-normalform.html

    Sessions
    http://www.dclp-faq.de/ch/ch-version4_session.html

    Was sind Sessions und warum sind sie nützlich?
    http://www.dclp-faq.de/q/q-sessions-zweck.html

    Gruesse,

    Thomas