Probleme mit sessions

Hallo, ich bin's wieder,

ich habe ein Login-System geschrieben. Der User gibt auf der Startseite seine E-Mail und das Passwort ein. Darauf hin wird in einem IFrame auf der Seite eine php-Datei geladen, welche die Eingaben dann auf Richtigkeit überprüft. Alle Benutzerdaten werden daraufhin in das Array $_SESSION[x] geschrieben, also bsp.:
Code:
$_SESSION['ID'] = $sql_row[0];
$_SESSION['nachname'] = $sql_row[1];
$_SESSION['vorname'] = $sql_row[2];
und so weiter...

Danach wird das Hauptmenü "included" welches die Begrüßung "Hallo User x,y" sowie die zur Verfügung stehenden Optionen anzeigt.
Bis dahin okay.

Wenn jetzt der Link "persönliche Daten" angeklickt wird, soll sich im IFrame ein Formular öffnen, bei dem der Nutzer seine Daten ändern kann, wie etwa nach einem Umzug die neue Adresse usw.

Mein Problem: Das mit den sessions funktioniert hinten und vorn nicht und ich bin bald am durchdrehen.
Das Formular ist nicht wie gewünscht mit den Daten vorbelegt, es ist trotz session_start() am Dateianfang keine session_id vergeben und dann kriege ich auch noch eine MySQL-Fehlermeldung zu sehen (no valid mysql-result source oder so).

Wenn ich den Link für das Formular jetzt folgendermaßen lege: <a href="..../change.php?ID=x"> dann funktioniert es, aber es braucht nur jemand den Link in die Finger zu kriegen, schon kommt er an alle daten ran.

Ich weiß nicht mehr weiter und je mehr ich nachdenke, desto weniger blicke ich noch durch!

Ich hoffe, Ihr seht es mir nach, dass ich nun einen halben Roman geschrieben habe und es findet sich jemand, der mir bei meinem "session-Problem" helfen kann.

Hier noch ein Link zu meinem Problem: http://kunden.outdoorshop24.net, Email: test@x.y, Passwort 0000

Tausend Dank schonmal im Voraus...
 
Zuletzt bearbeitet:
Ich glaub, da musst du mit mehr Infos herüberkommen.

Eine Session ist da....weil ich einen Session-Cookie habe.
Was ist $sql_row...wann füllst du es?
Wie sieht der Query aus, der den SQL-Fehler produziert?
 
Hi,
also so sieht die MySQL-Abfrage aus:

PHP:
$query = "SELECT ID, name, vorname ......
   FROM customer_data
     WHERE ID = '".$_SESSION['ID']."';";
//Anm.: $_SESSION['ID'] meint nicht die session_id, sondern die fortlaufende ID der MySQL-Datenbank!

$result = mysql_query($query, $link);

$sql_row = mysql_fetch_row($result);

$_SESSION['ID'] = $sql_row[0];
$_SESSION['name'] = $sql_row[1];
$_SESSION['vorname'] = $sql_row[2];
.
.
.
Diese Daten werden korrekt in das $_SESSION-Array geladen. Mein Problem ist folgendes: Nach überprüfen der Login-Daten und schreiben in den Session-Array wird eine weitere Seite geladen, welche das erwähnte Menü lädt. Von diesem Menü aus geht es per Link weiter an das Benutzerformular. Doch hier gehen die Schwierigkeiten los:

Erstens:
PHP:
echo "SID: ".session_id();  //zum Testen anzeige der Session-ID

//Ausgegeben wird: nur SID und keine session-id, daher meine Vermutung mit der fehlenden Session.

Zweitens:
Das Formular soll mit den aktuellen Daten vorbelegt werden. Die Daten kommen ja aus dem $_SESSION-Array, welches offenbar wieder geleert ist. Aber wie gesagt, das Formular ist gähnend leer.


Ich habe also insgesamt 3 PHP-Dateien: Eine prüft die Login-Eingaben, eine zeigt das Hauptmenü an und dann die dritte für das Formular. In jede Datei habe ich zuerst den Befehl session_start(); hinterlegt.

Kann es vielleicht sein, dass bei jeder der drei Dateien eine andere Session startet?

LG
 
Ich war mal kurz auf deiner Seite. Ich würd sagen es liegt daran das du bei den Link die Session nicht mit übergiebst. So geht die Session Id verloren und er kann auf die Session nicht zugreiffen.

Vorallem wenn du mit Java link arbeitest History.back und soweiter dort werden die Session Nummer nicht mit übertragen und die neue Seite kennt dann auch nicht die Session.

Häng folgendes an alle links dran die im UserMenü sind oder dort wo auf die Session zugegrieffen wird.

PHP:
<a href="link.php?<?php echo strip_tags(SID)?>"  >Link menu</a>

also einfach bei deinen Links ?<?php echo strip_tags(SID)?> dran hängen. Somit wird bei jedem Link sie Session nummer mit übertragen und dann funktioniert auch das ganze.
 
Ich würde mal tippen, es hängt mit der Domain zusammen.

Das Login erfolgt auf http://kunden.outdoorshop24.net/....
Von dort gelangt man im iFrame wieder auf http://kunden.outdoorshop24.net/.... .....die Session ist vorhanden.

Der Link zum Daten-Ändern aber führt zu http://www.outdoorshop24.net/..... die Session ist weg, da der Cookie für diese Domain nicht gültig ist.

Probier mal, per [phpf]session_set_cookie_params[/phpf] oder [phpf]ini_set[/phpf] den Wert von session.cookie_domain in der login.php auf ...
.outdoorshop24.net
... zu setzen.
 
Zurück