Sven Rautenberg: Cross-Origin-Request und $_SESSION-Array

Beitrag lesen

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() und session_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