Moin!
Okay, das probiere ich jetzt. Ich habe auf der ersten Seite :
Bitte streiche aus deinem Nutzungsverhalten komplett die Befehle session_is_registered() und session_register()!
<?php
session_start();
if (!session_is_registered('cart')) {
session_register('cart');
$_SESSION['cart'] = array();
}
?>
Danach surfe ich mit Ajax auf meiner Seite. Alle Links sind Ajax-Links.
Danach versuche ich, mein Korb zu füllen. Es geht nicht. $_SESSION['cart'] ist immer leer.
Vermutlich wegen deiner fehlerhaften Session-Befehle. Den einzigen Befehl, den du zwingend benötigst, ist session_start(). Im Bedarfsfall eventuell dann noch session_id(), session_name() und session_regenerate_id(). Nur in extremen Ausnahmefällen noch session_destroy().
Dann ist es mir aufgefallen, dass er meine SID nicht kennt, weil ich es mittransportieren muss. Und nun die Frage, was muss mein SID mittransportieren? Der Name der Session oder $_SESSION['cart']?
Die Session-ID ist üblicherweise als Cookie abgelegt. Prüfe, ob das der Fall ist. Falls du lokal testest: Dein Servername muß Punkte enthalten, sowas wie "localhost" oder "testserver" funktioniert nicht. Browser erlauben Cookies von Domains, die keine Punkte enthalten, nicht.
Alternativ mußt du die Kombination der Funktionsergebnisse session_name() und session_id() im AJAX-Request selbst einbauen und zurückschicken. Gegebenenfalls kannst du dir auch den Inhalt der Konstanten SID zunutze machen, die gefüllt ist, wenn PHP kein Cookie feststellen konnte.
- Sven Rautenberg
"Love your nation - respect the others."