【发布时间】:2014-11-10 14:56:20
【问题描述】:
1 年前,我制作了一个运行良好的 PHP 社交网络。通过浏览器,一旦用户登录,我使用 $_SESSION 变量来存储凭据并通过所有页面记住用户。一切正常。
现在我正在尝试使用 Phonegap 和 jQuery Mobile 构建网站的应用程序版本。乍一看,我尝试使用相同的方法:为了管理用户登录,我使用电子邮件和密码实现了一个简单的表单,它将 ajax 请求发送到“check_login.php”文件。 如果 email 和 pw 正确,我“登录用户”,这意味着我将所有内容都存储在 session 变量中,就像我一直做的那样。
我注意到,这让我抓狂的是,使用这种方法数据没有被存储到 $_SESSION 变量中。使用我的应用程序,每次我向服务器发送 AJAX 请求时,$_SESSION 变量都消失了,看起来登录数据没有被存储。就像我从未登录过一样。(当然,我已将 session_start() 放在每个页面的顶部)。此外,每次我向服务器发送 AJAX 请求时,session_id() 都会发生变化。
这正常吗?这是否意味着 Phonegap 我不能依赖 $_SESSION 变量,或者我只是错过了一些东西? 如果是,为什么?
【问题讨论】:
-
检查
session_id()。确认您在任何地方都获得了相同的会话 ID。如果不是,那么会话 cookie 会丢失,您的移动设备会获得新的/不同的会话。例如您并没有“丢失”您的会话 - 您只是获得了新的会话。 -
phonegap/cordova 不适用于会话。是众所周知的问题。使用 localstorage 等其他方法,或使用 deviceId 进行身份验证。只是谷歌有很多howto。
标签: php ajax session jquery-mobile cordova