3

我刚刚在我的 iPhone 上创建了一个网络应用程序。我可以打开它并毫无问题地登录,但每当我返回应用程序时,它就会忘记我之前的会话,我必须重新输入我的用户名和密码。

对此还有其他一些问题,但他们的回答并没有帮助我解决问题,因为我不确定将提供的 PHP 放在哪里。

这是我找到的最佳答案:Maintain PHP Session in web app on iPhone

在答案中,Wilbo Baggins ( https://stackoverflow.com/users/346440/wilbo-baggins ) 提供了以下代码:

// Start or resume session
session_start(); 

// Extend cookie life time by an amount of your liking
$cookieLifetime = 365 * 24 * 60 * 60; // A year in seconds
setcookie(session_name(),session_id(),time()+$cookieLifetime);

我在网站标题中的<?php?>标签之间输入了该代码,但这并没有解决问题。我猜我把它放在了错误的地方,所以我正在寻找指导来解释我应该把它放在哪里。

谢谢。

--

BUMP:有没有人可以帮助我解决这个问题,或者至少知道如何与 Wilbo Baggins 取得联系(https://stackoverflow.com/users/346440/wilbo-baggins)?

4

1 回答 1

4

在您的 login.php 中,当登录信息正确时添加以下代码:

session_start();

//your code here

if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']),"apple")) //to prevent cookies for non-apple devices
{
    $cookieLifetime = 365 * 24 * 60 * 60; // A year in seconds
    setcookie("ses_id",session_id(),time()+$cookieLifetime);
}

然后,在您希望恢复 session_id 的所有其他 *.php 中,在 session_start() 之前添加以下行:

if($_COOKIE['ses_id']){
    session_id($_COOKIE['ses_id']);
}
session_start();

在您的 logout.php 中,添加以下代码:

session_start();
$cookieLifetime = 365 * 24 * 60 * 60; // A year in seconds
setcookie("ses_id","",time()-$cookieLifetime); //set lifetime to negative to autodelete cookie
session_destroy();

希望这可以帮助。

于 2013-09-12T18:46:21.920 回答