棘轮框架:需要两次点击退出链接

时间:2013-07-24 17:43:31

标签: php ratchet

我刚开始使用Ratchet(http://maker.github.io/ratchet/),这很棒。但是,我遇到的一个大问题是,用户必须两次单击注销按钮(实际上是一个锚<a>)才能实际注销。

我打算将此作为一个应用程序保存到iPhone主屏幕,在那里它可以作为全屏webapp启动。通常,当关闭此类Web应用程序时,不会维护会话(与常规Safari相比,它是沙箱)。我99%肯定这次点击两次注销问题是因为我不仅使用PHP会话而且还使用cookie,以便用户在关闭全屏web应用程序后仍然保持登录状态(根据this post中的第二个答案)。

我的注销脚本如下:

// logout.php

<?php

session_start();

setcookie(session_name(),"",time()-3600);
$_SESSION = array();
session_destroy();
header('Location: /');

?>

我认为这个问题可能与Ratchet的push.js有关,但即使我使用data-ignore="push"设置注销链接,当前页面也会在Safari中重新打开(这本身很烦人,因为如果用户将其保存到主屏幕,我希望它只在该全屏界面中运行),我仍然需要再次点击注销。

此问题似乎也不是将其作为全屏网络应用程序运行的问题,因为我在通过Safari访问它时遇到同样的问题。

任何指针?

1 个答案:

答案 0 :(得分:0)

我相信我解决了这个问题。从我之前发布的链接开始,我已将以下代码插入到所有主要PHP页面中:

$cookieLifetime = 365 * 24 * 60 * 60; // A year in seconds
setcookie(session_name(),session_id(),time()+$cookieLifetime);

我不完全理解这一点,但我知道它基本上创建了一个cookie,即使应用程序在iOS的沙盒全屏Web应用程序模式下运行,也可以维护会话。我能够通过从我的login.php脚本中删除此代码来修复此问题,同时将其保留在我的应用的每个其他页面上。 logout.php仍然像以前一样。现在,即使iPhone重新启动,我保存到主屏幕的全屏Web应用程序也会让用户保持登录状态。他们也可以通过单击退出按钮注销而不是两次。