sessions in php 4.3.4

Lapachon

Mitglied
Hi!

Was kann es da haben, wenn die Sessions nicht auf eine dritte Seite überliefert werden?

seite1.php

session_start();
$_SESSION['$b1_firmenname'] = 'b1_firmenname';

seite2.php

session_start();
$_SESSION['$b1_firmenname'] = 'b1_firmenname';

echo "fn=$b1_firmenname";

Ausgabe:

fn=ebay

seite3.php

session_start();
$_SESSION['$b1_firmenname'] = 'b1_firmenname';

Ausgabe:

Warning: Undefined variable: b1_firmenname' blabla

Was kanns da haben? Die Sessions werden anscheinden auf die 2 Seite überliefert, nur nicht mehr auf die 3.

LG

Lapachon
 
Es liegt wahrscheinlich daran, dass die Variable $b1_firmenname nicht definiert ist, und somit auch auf einen nicht existierenden Index in der $_SESSION-Variable zeigt.
 
falsche SESSION Definition

Hi ,

also ich würde mal sagen Du solltest Dich mit SESSIONS erst einmal beschäftigen. Am besten hier: PHP.net

Als ersten Tipp: Sessions werden folgendermassen deklariert:

PHP:
$_SESSION["b1_firmenname"] = $b1_firmenname;

Oder:

PHP:
session_register('b1_firmenname');
$b1_firmenname = "irgend ein Wert";

Vielleicht hilft das erst mal.

ND
 
Ich habe mich in den letzten zwei Tagen mit Sessions beschäftigt, bin aber zu keinem Ergebniss gekommen. Mittlerweile überliefert er mir die Session auf die 2te Seite, aber nicht mehr auf die 3te.
Die Werte die in der Session stehen, kommen von Eingabefeldern. Es gibt eine input type="text" name="b1_firmenname". Was da eingegeben wird, möchte ich in der Session speichern, und am ende von dem Fragebogen mittels insert into query in meine db speichern.
 
hm ... versteh nich wo das Problem ist.

Denke es sollte so klappen:

1. Wenn das Formular abgeschickt wird, wird der Inhalt des Textfeldes übergeben. Und zwar ist $b1_firmenname = der Inhalt des Textfeldes.

2. Klar, dass Du den Wert von $b1_firmenname noch auf der zweiten Seite siehst. Hier startest Du jetzt die Session und deklarierst die Session variablen:

PHP:
session_start();

$_SESSION["b1_firmenname"] = $b1_firmenname;
Und schon ist der Wert des Eingabefeldes in der Sessionvariablen B1_firmenname.

3. Auf der letzten Seite fügst die Werte der einzelnen Sessionvariablen in die DB:
PHP:
$query = "INSERT INTO tabelle SET 
                  eintrag1 =  '  ".$_SESSION["b1_firmenname"]. " ' ,
                  eintrag2 =  '  ".$_SESSION["b2_firmenname"]. " ' ,
                  eintrag3 =  '  ".$_SESSION["b3_firmenname"]. " ' ";
Gruss

ND
 
Übrigens:

Du musst die Session auf jeder Seite mit session_start(); neu öffnen - auch da wo Du die einzelnen Sessionvariablen deklarierst. Bei Dir wurden die Daten von der ersten Seite nicht mittels der Session übertragen, sondern einfach nur durch das abschicken des Formulares. Prüfen kannst Du das, indem Du einfach den Wert der Sessionvariablen mal am Bildschirm zeigts mit echo $_SESSION["..."];

ND
 
Re: falsche SESSION Definition

Original geschrieben von duke-skelington
Als ersten Tipp: Sessions werden folgendermassen deklariert:

PHP:
$_SESSION["b1_firmenname"] = $b1_firmenname;

Allgemein werden Array-Elemente, wenn der Index aus einer Variablen kommst so agesprochen:
PHP:
  $array[$element]; //OHNE Hochkomma und was auch immer!

und wenn der Index statisch eingehackt wirde dann so
PHP:
  $array['index'];  //OHNE Hochkomme, Anführungszeichen etc!

Das andere, Register Globals ausschalten. Schlechter Stil !
Will heissen, schickst du aus einem Formular meinem Eingabefeld, welches den namen "Testeintrag" hat, Daten ab, ist die, wenn den Register Globals akitivert ist, als Variable $Testeintrag zur verfügung.
Man sollte alledings auf solche Daten über die Supergloablen Arrays $_POST['testeintrag'] bzw. $_GET['testeintrag'] (je nach Methode des Formulars) oder $_REQUEST['testeintrag'] ($_POST & $_GET vereint) zugreifen.
Ergo msus dein Code auf Seite2.php eher so aussehen:
PHP:
 $_SESSION['$b1_firmenname'] = $_POST['b1_firmenname'];

Beim Aufruf von Seite3.php muss dieser aber erstmal die Session id bekannt sein, also musst du sie ihr mitübergeben (gleiches Gilt auch für den Wechsel von Seite1.php zu Seite2.php).
Dann kansnt du auch den Wert aus dem Array auslesen.
Um zu sehen was sonst noch alles im Session-Array steht (falls du denn mehr gepsiehcert hast) geht das mit print_r($_SESSION) bzw var_dump($_SESSION)

hth
 
Zurück