2017-01-26 3 views
1

Ich mache einen sehr einfachen Stammeskriegsspieltyp und verwende Unity für die Benutzeroberfläche anstelle eines Browsers. Ich habe mich gefragt, wie ich die Sitzung für die ganze Spielsitzung am Leben erhalten konnte, nachdem ein Login erfolgreich war.Verwenden Sie die Sitzung erneut, wenn Sie Unity verwenden

Ich machte einen wirklich einfachen Test, der nicht funktioniert. Ich habe ein InputField, das eine Zeichenfolge (die Anmeldung) und eine Schaltfläche verwendet, die den Text dieses InputField an das PHP-Skript sendet. Das PHP-Skript speichert es in $ _SESSION ['Benutzername']. Ein weiterer Button wechselt einfach zu einer anderen Seite und gibt $ _SESSION ['username'] aus, aber es besagt, dass die Variable nicht gesetzt ist.

Ich habe versucht, session_id() zu verwenden, aber das ändert nichts. (Ich habe es vielleicht falsch benutzt ..) Ich hoffe, ich habe mich klar gemacht, weil es ziemlich schwer zu erklären ist. Vielen Dank im Voraus

+0

Sie haben um die Session-ID auf jede PHP-Anfrage – Philipp

+0

zu senden und wie kann ich es anwenden? weil ich session_id (£ theID) gemacht habe; es hat nicht funktioniert. Gibt es noch einen anderen, um die ID zu setzen? – Redfloyd

+0

Sie müssen die Sitzungs-ID einstellen, bevor Sie session_start anrufen – Philipp

Antwort

1

Einheit behandelt nicht automatisch Cookies/Sitzungs-IDs. So erhalten Sie jedes Mal, wenn die Ergebnisse von www, speichern Sie das Cookie mit der Session-ID in playerprefs, etwa so:

if (www.responseHeaders.ContainsKey("SET-COOKIE")) { 
    PlayerPrefs.SetString("php_cookie", www.responseHeaders["SET-COOKIE"]); 
} 

Dann die Zeichenfolge Cookie wieder in jede Anfrage wie folgt:

WWWForm form = new WWWForm(); 
Dictionary<string, string> headers = form.headers; 
headers["Cookie"] = PlayerPrefs.GetString("php_cookie"); 
WWW www = new WWW("[full url]", form.data, headers); 
while (www != null && !www.isDone) yield return null; 

(Ich weiß nicht, ob das immer noch der Fall ist, aber ich konnte es nicht mit einem normalen WWW arbeiten, ich musste das WWWForm verwenden, um Header zu setzen. Aber das war schon eine Weile her.)

+1

Vielen Dank! – Redfloyd

Verwandte Themen