3

iPhoneでWebアプリを作成しました。問題なく開いてログインできますが、アプリに戻ると以前のセッションが忘れられ、ユーザー名とパスワードを再入力する必要があります。

これについて他にもいくつか質問がありましたが、提供された PHP をどこに置くべきかわからないため、それらの回答は問題の解決に役立ちませんでした。

これは私が見つけた最良の答えです: iPhone の Web アプリで PHP セッションを維持する

回答では、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 に答える