我刚在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)取得联系?< / p>
答案 0 :(得分:3)
在您的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);
}
然后,在其他每个* .php中,您希望恢复session_id,在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();
希望这有帮助。