Moin!
für eine HTML5-App habe ich ein API geschrieben, welches verschiedene Abfragen an den Server regelt. Serverseitig existiert ein Login-Skript (login.php) und ein Skript für das Handling der Abfragen (api.php).
Wo ist das Cross-Origin in deiner Frage?
Wenn ich dann von einem Client aus, auf das API-Skript zugreifen will, übergebe ich die Session-ID und versuche sie wiederherzustellen (mit
session_name()
undsession_start()
). Soweit scheint das auch zu funkionieren (es kann natürlich auch sein, er erstellt einfach eine neue Session, die er so nennt). Fakt ist: Das Session-Array bleibt leer. Nun habe ich schon einige Zeit herumprobiert, habe aber scheinbar ein Verständnisproblem.
Dass "session_name" die falsche Funktion ist, um die Session-ID zu setzen, hat dedlfix schon gesagt. Es sei hier aus Gründen der Eindrücklickkeit wiederholt.
if(isset($_POST['SID'])){ session_name($_POST['SID']); echo("SESSION wiederaufgenommen: ".$_POST['SID']."\n");}
session_start();
echo(session_name()."\n"); // hier wird die korrekte Session-ID, die auch übergeben wurde, ausgegeben
print_r($_SESSION); // ist trotz allem leer :(
Es ist zu beachten, dass das Ausgeben von Text vor dem Start der Session unschöne Effekte mit nicht setzbaren Headern zur Folge haben kann, sofern PHP standardmäßig ein Session-Cookie mit der ID generieren will.
- Sven Rautenberg