2013-05-09 69 views
2

我刚刚在iPhone上创建了一个Web应用程序。我可以打开它并以毫无问题的方式登录,但每当我回到应用程序时,它都会忘记我之前的会话,并且必须重新输入我的用户名和密码。在iPhone Web应用程序中维护PHP会话

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

这是最好的答案我发现:Maintain PHP Session in web app on iPhone

在答案,Wilbo巴金斯(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巴金斯(https://stackoverflow.com/users/346440/wilbo-baggins)?

+0

嗨马克斯,巧合发现你的问题:)。您是否尝试输出session_id(),正如我对该问题的回答中所述?你是否确认每次都得到不同的session_id()?它看起来像你的解决方案应该工作,所以我不(但)确定问题在哪里。 – 2013-07-24 13:51:17

回答

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

希望这有助于。