2013-05-09 54 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(); 

希望這有助於。