Trotz korrekter _POST Übergabe der Session ID wird eine neue ID erzeugt.

sdh

Mitglied
Hallo!

Mein Problem: Ich übergebe eineaktuelle Session ID per mit einem Hidden Feld aus einem Formular.
Nach dem Submit wird die zweite Seite korrekt geöffnet, auch die Kontrollausgaben zeigen mir die Richtige Session ID. Alledings wird mit start_session($sid) eine neue Session ID erzeug und meine übergebenen Daten sind "verloren".

index.php
PHP:
<?PHP
session_start();
$_SESSION['text'] = "Test Inhalt!";
$sid = session_id();
echo "Session Text: " . $_SESSION['text'] . "<br>";
echo "Session ID:   " . session_id() . "<br>";
echo "Variable sid: " . $sid . "<br>";
?>
<FORM METHOD=post ACTION="show.php">
<INPUT TYPE=text   NAME="name" value="Unknown">
<INPUT TYPE=hidden NAME="sid" value="<?echo $sid ?>">
<INPUT TYPE=submit VALUE="Login">
</FORM>
Die Bildschirmausgabe der index.php:

Session Text: Test Inhalt!
Session ID: 944f3bf9d8795295404c5e2573de4570
Variable sid: 944f3bf9d8795295404c5e2573de4570
: und das Formularfeld...

show.php
PHP:
<?PHP
$sid = $_POST["sid"];
session_start($sid);
echo "Posted SID:  " . $sid . "<br>";
echo "Aktuelle SID:" . session_id() . "<br>";
echo "Session Inh.:" . $_SESSION["text"];
?>
Das Ergebnis von show.php:
Posted SID: 944f3bf9d8795295404c5e2573de4570
Aktuelle SID:47e377194e4e7b08aa822800270eaec8
Session Inh.:

Habe ich da nen Verständnissproblem? Es sollte doch bei Übergabe der Session ID auch selbige wieder gestartet werden? Bin für jede Hilfe dankbar. Im übrigen habe ich auch versucht die sid mit
PHP:
<FORM METHOD=post ACTION="show.php?sid=<?echo $sid?>">
zu übergeben. Das selbe Problem.
Das Session File auf dem Server ist vorhanden und enthält auch meine Variable, von daher schließe ich Berechtigungsprobleme aus.

Das ganze läuft auf einem Apache2 / PHP4 und Suse 9.0... auf einem anderen Server (ebenfalls Apache2 / PHP4 und Suse 9.0) läuft das ganze problemlos.

Eine auffällige Sache noch. Auf meinem "bösen" Server geben ich im IE 6 als Adresse ein: http://server/sess (sess ist das verzeichnis mit den Dateien), nach dem <Submit> steht in der Adressleiste immernoch die selbe Adresse, aber es ist die Seite show.php aufgerufen und vom Inhalt angezeigt.
Auf dem "guten" Server ändert sich der Eintrag in der Adressleiste auf http://server/sess/shop.php.

So, nun soll es gut sein... Nicht das ich hier als "Krimiauthor" abgestempelt werde;)

Ich bin für alle Hilfen und Lösungen dankbar...

Gruß
Sascha
 
Muss es denn wirklich
PHP:
session_start($sid);
heißen?

Wenn ich session_start(), so wie es auf php.net steht, richtig interpretiere, dann muss dieser "Funktion" doch gar kein Argument wie z.B. die Session-ID übergeben werden [ bool session_start ( void) ].
Die holt sie sich scheinbar selbst aus GET- oder COOKIE-Variablen.

Also vielleicht einfach mal in der show.php nur mit
PHP:
session_start();
probieren und versuchen, auf die SESSION-Variablen zuzugreifen.
 
Ich habe das erst auch ohne die Angabe der $sid versucht, das selbe Problem. Die automatische übergabe funktioniert, sollte ich es richtig verstanden haben, auch nur wenn der aufrufende Rechner Cookies erlaubt. Um auch User mit "Cookie-Verbot" den Zugriff zu ermölichen, wollte ich eben diese Variante nutzen...

Naja, neuer Tag neues Glück... werd mich dann mal wieder an die Arbeit (sessions) machen;-)

Nice Day...
 
Posted SID: 3c50414e1a6d772bf63a222633b7e5e8
Aktuelle SID:3c50414e1a6d772bf63a222633b7e5e8
Session Inh.:Test Inhalt!

Bei mir ist das Script also lauffähig, und zu deinem Problem. Hast du irgendwelche Anonym-Tools installiert? Dann kann sowas auftreten das er jedes mal eine neue Session beginnt....

Achja, du musst in session_start() nicht die session hineingeben. Er setzt die Session automatisch fort. Es muss nur ganz am Anfang jeder PHP Datei vorhanden sein.
 
Zuletzt bearbeitet:
Danke, der hinweis mit dem Anonymtool hat mich auf den richtigen Weg gebracht.
Mein Fehler war folgender:

Ich habe eine Domain bei einem Anbieter registriert der kein PHP unterstützt, und von dort aus eine Weiterleitung eingerichtet.

Nachdem ich aus
<FORM METHOD=post ACTION="show.php">
nun
<FORM METHOD=post ACTION="http://server/show.php">
gemacht habe funktioniert alles einwandfrei.

Danke für die Hilfe!
 
Wie gut das es auf dieser Welt noch "Engel" gibt:)

Muß ich dieses Thema eigentlich irgendwie schließen wenn es sich erledigt hat?
 
Aber eins noch dazu.

Muss nicht das session_id ($sid); vor dem session_start(); ausgeführt werden damit diese Variable gültig wird?
 
nein? :confused:

Es langt wenn man an den Anfang jeder Datei ein session_start() macht, um die aktuelle session fortzusetzen. Session Variablen und alles bleibt dann auch erhalten.
 

Neue Beiträge

Zurück