在iPhone Web应用程序上维护PHP会话

时间:2013-05-09 17:31:34

标签: php iphone web-applications cookies iphone-web-app

我刚在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>

1 个答案:

答案 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();

希望这有帮助。