Chris: Sessionsübergabe bei require_once in CASE

Beitrag lesen

Hallo,

Axel hat Dir noch einen anderen Fehler genannt.
Dein Script hat auch noch mehr Fehler.

ok habe ich abgeändert. ich glaube mein problem ist, dass beim wiederholten aufrufen der datei meine session-variable wieder überschrieben wird:

session_start();
$_SESSION['myvar'] = $vari; //$vari wurde nur beim ersten aufrufen mit dem link test.php?$vari=001 mitgegeben und ist jetzt in meiner session gespeichert.

Das ist richtig.

Als erstes solltest Du mal oben ins Script schreiben:

error_reporting(E_ALL);
ini_set('display_errors','1');

Dann werden Dir alle Versäumnisse angezeigt, was am Anfang aber zu Folgefehlern (cannot send headers, o.ä.) führen wird. Mach Dir nix draus :-)

Und dann solltest Du die Kommunikationswege trennen:

$_GET ist ein Array mit allen Werten, die als Parameter der URi kommen
$_POST ist ein Array mit allen Werten, die per <form method="post" ...> kommen
$_COOKIE ist ein Array, dass die Cookies enthält,
usw.

Wenn Dein Parameter also per URi übertragen wurde

test.php?vari=001   ## bitte ohne den Dollar

dann kannst Du das jetzt prüfen und verarbeiten:

if (isset($_GET['vari'])
  {
    $_SESSION['vari'] = $_GET['vari'];
  }

Nun wird die Session nur bedient, wenn die Variable gesendet wurde.

beim erneuten aufrufen der datei test.php ohne die mitgabe der variablen über die URL überschreibt es meine $_SESSION['myvar'] - in diesem Fall steht nichts drin, das $vari='' ist.

Viel schlimmer, wenn sie nichts gesendet wurde, löst sie der Zugriff auf die GET-Variable (die nun nicht angelegt ist) eine Notice aus, die Dir aber nicht angezeigt wird, weil Notices in der Standardeinstellung auf OFF stehen. Das hast Du nun aber mit error_reporting() korrigiert. Notices gehören bei PHP zu den  wichtigsten Fehlermeldungen, da das Script trotz Fehler weiterläuft!

Wie kann ich verhindern, das, wenn meine Session-variable angelegt wurde, nicht wieder überschrieben wird?

Bin ich auf dem Holzweg?

Nein, Du bist auf dem goldenen Weg! Mach weiter so und frag auch weiter so. Qualifizierte Fragen werden hier meistens POST-wendend *gg* beantwortet.

LG

Chris