Problem mit Session-Variablen

soa

Erfahrenes Mitglied
Hallo,

ich habe ein kleines Problem mit zwei Variablen. Ich habe ein Formular mit diversen
Buttons.

Am Anfang des Scripts habe ich folgenden Code eingefügt:

PHP:
$result1 = mysql_query("SELECT Firma, Name FROM kunde
                        WHERE KD_ID = '$id' ");
                        
                        
  while ($sql1 = mysql_fetch_array($result1))
    {
      $firma = $sql1[0];
      $name = $sql1[1];
    }
    
    $_SESSION[name] = $name;
    $_SESSION[firma] = $firma;

Die Variablen füge ich nun im html Code mit <?php echo $_SESSION[name] = $name; ?>
ein. Das funktioniert soweit. Wenn ich das Formular ausführe ist die Session im Anschluss leer. Die Namen im html Code verschwinden und werden im neu generierten Code auch nicht neu ausgegben.


Ich kann das nicht ganz nachvollziehen. Hat jemand einen Tipp?

VG
SOA
 
Direkt aus deinem Quelltext kann ich jetzt nichts erkennen, aber:

Schlüssel von assoziativen PHP-Arrays schreibt man in Anführungszeichen
PHP:
$_SESSION['name'] = $name;

Wenn man Session-Variablen bei erneutem Aufruf/Aufruf eines anderen Scripts abfragen will, muss man erst eine Session starten
PHP:
session_start();

Und wenn dann immer noch etwas schief läuft, stellt sich evtl. die Frage nach Register globals...
 
Danke,

doch die Variablen werden am Anfang richtig gesetzt und die session_start();
steht am Anfang der Datei. Es läuft alles in einer Datei ab.

Danach arbeite ich mit Blöcken

if (isset($_POST[selektieren]))
{ tue dies Hier sind die Sessions == 0 }

if (isset($_POST[einsehen]))
{ tue jenes }

Gruß
SOA
 
Gibst du denn auch den Session-Inhalt so aus wie du geschrieben hast:
PHP:
echo $_SESSION['name'] = $name;

anstatt einfach folgendermaßen
PHP:
echo $_SESSION['name'];
zu schreiben? Oben weist du der Session-Variable einen neuen Wert zu, der vermutlich nicht initialisiert ist...
 
Allgemein solltest du wissen, was genau eine Ausdruck ist. Denn das echo-Sprachkonstrukt gibt nur die (Rückgabe-)Werte eines Ausdrucks wieder. Und da eine Zuweisung ähnlich einem Vergleich nur einen Boole’schen Wert zurückgibt, wird wahrscheinlich nur ein „1“ (Zuweisung war möglich) oder nichts (Zuweisung schlug fehl) ausgegeben.
Zu PHP-Sitzungen solltest du dann noch wissen, dass die PHP-Sitzung jedes mal gestartet werden muss, sollen die Sitzungsvariablen zur Verfügung stehen.
 
Zitat:
Zu PHP-Sitzungen solltest du dann noch wissen, dass die PHP-Sitzung jedes mal gestartet werden muss, sollen die Sitzungsvariablen zur Verfügung stehen.

Das habe ich jetzt nicht so genau verstanden:

Ich beginne meine Datei mit

<?php
session_start();

PHP Code
?>
html-Ausgabe --> Hier wird die Session richtig gesetzt.
Schicke ich das Formular ab, so ist die Session leer. Das verstehe ich nicht. Die Variable
hat den Wert NULL.

Muss ich die Session wieder neu starten, wenn ich nach der html Ausgabe
wieder neuen php Code schreibe:
<?php
session_start();

Das ganze funktioniert zum Teil mit hidden fields, wenn ich die Daten mit POST übergebe,
jedoch nur zum Teil, daher dachte ich, dass Sessions die Lösung sind.
 
Die session_start()-Funktion sorgt dafür, dass entweder eine bestehende Sitzung wieder aufgenommen wird oder aber einer neue gestartet wird. Daher muss der Aufruf der Funktion in jedem Skript erfolgen, in der die Sitzung-Variablen benötigt werden.
 
Zurück