Problem mit Session und PHP 4.2.3

JanDelay

Mitglied
Hallo,

ich habe ein kleines Problem mit meinem Onlineshop und den Sessions.

Ich habe hier bei mir einen Apacheserver mit PHP 4.1.2 laufen und auf der Kiste von 1und1 läuft 4.2.3.

Da ich mein komplettes Script bis jetz nur Offline getestet hatte habe ich die letzen Tage verzweifelt versucht das Problem zu lösen:

Ich habe ein kleines Beispielscript geschrieben was den "Fehler" zeigt:

PHP:
<?

session_start();

if(!isset($_GET['step'])) $_GET['step'] = 1;

function fillSession($_POST)	{
	global $_SESSION;
	foreach($_POST as $index=>$value)	{
	echo "\$_SESSION[".$index."] = ".$value."<br>";
		$_SESSION[$index] = $value;
	}
}



	fillSession($_POST);

if(isset($_POST['submitbackstep2'])) $_GET['step'] = 1;


switch($_GET['step']) {

case "1";
echo "<br>";
echo $_SESSION['step1text']." Schritt 1<br>";
echo $_SESSION['step2text']." Schritt 2<br>";
?>

<form action="<? echo $_SERVER['PHP_SELF'];?>?step=2" method="post">
<input type="text" name="step1text">
<input type="submit" name="submitstep1" value="send">
</form>

<?
break;

case "2";


echo $_SESSION['step1text']." Schritt 1<br>";
echo $_SESSION['step2text']." Schritt 2<br>";
?>

<form action="<? echo $_SERVER['PHP_SELF'];?>?step=3" method="post">
<input type="text" name="step2text">
<input type="submit" name="submitbackstep2" value="back">
</form>


<?

break;

}


?>

Unter 4.1.2 funktioniert dieses Script Problemlos.

Ich gebe bei Schritt 1 einen Wert an Schritt 2 weiter.
Wenn ich nun bei Schritt 2 einen Wert angebe und zu Schritt 1 zurück gehe sind beide $_SESSION Variablen noch mit den richtigen Werten gefüllt.

Bei 4.2.3 allerdings behält die $_SESSION sich nur einen Schritt lang den Wert.

Anzuschauen unter www.rainbow-werbung.net/admin/steptest.php

Wenn ich die session konfiguration über phpinfo() vergleiche kann ich auch keine Unterschiede erkennen.

Oder mache ich bei der $_SESSION-Variablendeklaration etwas verkehrt?

mfg

Patrick Hau
 
Zuletzt bearbeitet:
hab das gleiche problem ... ich weiß nicht ob es an der php-version liegt aber bei mir werden die
$_SESSION['wasauchimmer']
variablen auch nur einen schritt weiter vergeben ... auch wenn ich mit session_id arbeite was ich normalerweise lasse weils auch so geht ...
ich hab mir die session vars auch mal ausgeben lassen ... aber am ende vom script ...
anscheinend werden die teilweise ... warum auch immer überschrieben ...
denn wenn ich die in einer includierten datei wiedergebe werden die vars noch vernünftig gesetzt, am ende der index.php ausgegeben werden sie verändert ...

komishc komisch komisch
 
ich meine den fehler gefunden zu haben..

ich habe aus allen funktionen

PHP:
global $_SESSION;

entfernt und schon klappt alles :D
 
Man kann ja nicht immer gleich alles auf einmal wissen :)

Mich wundert es nur das bei 4.1.2 alles einwandfrei ..... Warum geht "f u n z t" nich? ^^
 
Zuletzt bearbeitet:
Original geschrieben von JanDelay
Mich wundert es nur das bei 4.1.2 alles einwandfrei ..... Warum geht "f u n z t" nich? ^^
1) Weil die superglobalen Arrays erst ab PHP 4.2.0 als Standard implementiert wurden.

2) Weil das Internetslang ist, der hier nicht gewünscht ist.
 
Zurück