Pflegen Sie die PHP-Session in der web-app auf dem iPhone
Habe ich eine jquery mobile-web-app. Auf meinem iPhone, wenn ich auf die web app ich habe eine login-und session-Variablen. Wenn ich die app verlassen zu gehen, um einen anderen Speicherort auf das Telefon und dann wieder auf die web-app muss ich wieder einloggen. Wie es scheint, die Sitzung wird nicht beibehalten. Weiter, wenn ich einen externen link und es öffnet sich safari für diesen link, dieselbe Sitzung nicht übertragen auf die safari-Fenster. Gibt es eine Möglichkeit zur Aufrechterhaltung der Sitzung?
- Die akzeptierte Antwort auf diese Frage ist falsch. Siehe meine Antwort unten, wie zur Aufrechterhaltung der Sitzung, auch zwischen Gerät neu startet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, du bist unter Bezugnahme auf die Apple - "Vollbild-capable" - meta-tag "web apps". Sie existieren in einer sandbox, also Nein, die session-Daten nicht aufrechterhalten werden.
session_name($_GET['session_id']); session_start();
Akzeptierte Antwort auf diese Frage ist falsch, dies ist einfach zu tun.
Der trick ist, dies zu tun:
Das ist es! Keine lokale cache-manifest erforderlich und Sie können die Arbeit mit Sitzungen in Ihrem web-app, wie Sie mit web-Seiten, die in einem regulären desktop-oder mobilen browser. Getestet habe ich auf iPhone 5 (iOS 6.1) und iPhone Simulator /iPad 2 (beide iOS 6.0) und das funktionierte auch, wenn das Herunterfahren und Neustarten des Gerät /simulator während der Sitzung.
Es funktioniert hervorragend: die daraus resultierenden session-cookie wird von mehreren Instanzen der web-app, wenn ein Benutzer fügt die web-app zum home-Bildschirm mehrere Male, und es sei denn, Safari Private-Browsing-Modus eingeschaltet ist, wird das session-cookie werden auch verfügbar sein, wenn das surfen auf Ihrer web-Seite direkt aus Safari, statt mit der web-app. Also egal, wie der Benutzer die Ansätze Ihrer app, die aktuelle session scheint immer wieder auf, wenn Sie diese Strategie verwenden.
Es selbst zu versuchen, verwenden Sie obigen code und output
session_id()
in Ihrer web-Seite (vorübergehend, wie es ist ein Sicherheitsrisiko) und sehen, ob es Veränderungen zwischen schließen und öffnen Sie Ihre web-app aus dem home-Bildschirm (versuchen Sie einen Neustart Ihres Geräts während der Sitzung). Wenn die ausgegebenen session-ID ändert sich nicht, es funktioniert: es wird scheinbar gespeichert wird, die in einigen (shared) lokale cache von Safari.Getestet und bestätigt, dass, unter iOS 4.2.1, 5.1.1, 6.0 und 6.1.
Haftungsausschluss: die Dokumentation von Apple ausdrücklich die Notwendigkeit einer lokalen cache-manifest-um Daten lokal speichern in einer web-app, aber diese Lösung funktioniert ohne, dass. Dh, diese Lösung kann sich auf die undokumentierte oder fehlerhaftes Verhalten von Mobile Safari. Aber, da es funktioniert auf so vielen iOS-Versionen, ich bin unter dem Eindruck, dass dies das beabsichtigte Verhalten (zumindest auf der Apple-Teil), nur unklar dokumentiert.
Wenn Sie nicht wollen, öffnen Sie in safari beim Klick auf einen link, dann nutzen Sie einfach dieses git.
https://gist.github.com/kylebarrow/1042026
Im Grunde nur die Datei kopieren stay_standalone.js zu Ihrem Projekt und Ihrer Ansicht nach gehören diese Zeile:
Wenn Sie Sie nicht verwenden Cookies, müssen Sie erstellen Sie eine Sitzung auf Ihrem server-Seite, aber es wird dauern, bis die Benutzer verwenden die gleiche ip-Adresse oder die Zeit, die Ihr server so konfiguriert sind, dass die Sitzungen, das heißt, wenn Sie den Benutzer wechseln zu 3g WiFi die Anwendung erkennt, die andere IP-Adresse, so wird die Sitzung geschlossen.