Hi,
Die SID lege ich in einem Cookie ab. Jetzt fiel mir aber ein, dass es nicht so clever ist die SID in einem Cookie abzulegen. Wenn jemand die Cookies nämlich deaktiviert hat, dann ...
Da haben sich die PHP-Entwickler längst vor dir Gedanken drum macht ...
Als Alternative würde ich sie nun in einem 'hidden input' dem Formular anhängen.
Das geschieht schon automatisch, wenn in der Konfiguration die Optionen session.use_only_cookies auf 0/off und session.use_trans_sid auf 1/on stehen*. So lange noch nicht fest steht, ob die Übermittlung der SID per Cookie vom Client zurück an den Server erfolgreich war, wird sie dann immer wieder per GET?POST übergeben.
Jetzt habe ich aber dazu folgende Frage: Wird bei der Uservalidierung, falls die Eingaben ungültig sind und das Formular wieder aufgerufen wird, jedes Mal eine neue Session erstellt sammt SID?
Was verstehst du unter Uservalidierung?
Sofern du im Script, an welches du die Formulardaten sendest, die Session wieder aufnimmst, sollte es kein Problem geben.
Ich hoffe, Ihr reißt mir nicht den Kopf ab, falls das Thema schon bis zum Erbrechen behandelt wurde.
Ich weiss, dass Anfänger oft Probleme mit dem Konzept der Sessions und ihrer Umsetzung in PHP haben - und kann mir das nur so erklären, dass viel mehr Magie hineininterpretiert wird, als eigentlich vor sich geht.
Sieh $_SESSION als Variable an, in der du Werte hinterlegen kannst, die auch in einer nachfolgend vom gleichen Client angeforderten Instanz eines anderen (oder des gleichen) Scriptes immer noch zur Verfügung stehen.
Alles, was du im Normalfall dafür tun musst ist, session_start zu Beginn jeden Scriptes aufrufen.
MfG ChrisB
* Ob die Konfiguration auf deinem Webspace dem entspricht, kannst du feststellen, wenn du den entsprechenden Abschnitt der Ausgabe von phpinfo() mit der Liste der Session-Einstellungen im Manual abgleichst. Vorrangig interessant wären hier erst mal session.use_cookies/session.use_only_cookies sowie session.use_trans_sid und url_rewriter.tags.
Bei Abweichungen kannst du ggf. eine Änderung per .htaccess/eigener php.ini im Verzeichnis erreichen; oder du machst es (in jedem Script!) über ini_set().
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]