【问题标题】:Maintaining a PHP session on an iPhone web app在 iPhone Web 应用程序上维护 PHP 会话
【发布时间】:2013-05-04 06:38:14
【问题描述】:

我刚刚在我的 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) 取得联系?

【问题讨论】:

  • 嗨,Max,偶然发现了你的问题 :)。您是否尝试过输出我在该问题的回答中提到的 session_id() ?您是否确认每次都获得不同的 session_id() ?看起来您的解决方案应该有效,所以我(还)不确定问题出在哪里。
  • @WilboBaggins 我目前遇到了类似的问题。你介意看看我的问题吗?谢谢。
  • @J.Do,没问题,但你指的是什么问题?
  • @WilboBaggins 这个问题stackoverflow.com/questions/54533864/…

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


【解决方案1】:

在你的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();

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2014-08-02
    • 2014-10-13
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多