相关疑难解决方法(0)

检查cookie是否已启用

我正在开发一个需要javascript和会话的页面.如果禁用了javascript,我已经有代码警告用户.现在,我想处理禁用cookie的情况,因为会话ID存储在cookie中.

我想到了几个想法:

  1. 在会话ID和表单中嵌入会话ID
  2. 警告用户如果禁用了cookie,他们必须启用cookie(需要帮助检测是否禁用了cookie)

解决这个问题的最佳方法是什么?谢谢

编辑

根据链接的文章,我提出了自己的方法,并认为我会分享,其他人可能会使用它,也许我会得到一些批评.(假设您的PHP会话存储在名为的cookie中PHPSESSID)

<div id="form" style="display:none">Content goes here</div>
<noscript>Sorry, but Javascript is required</noscript>
<script type="text/javascript"><!--
if(document.cookie.indexOf('PHPSESSID')!=-1)
   document.getElementById('form').style.display='';
else
   document.write('<p>Sorry, but cookies must be enabled</p>');
--></script>
Run Code Online (Sandbox Code Playgroud)

javascript php session-cookies

65
推荐指数
5
解决办法
9万
查看次数

如何判断会话是否有效?

根据请求,您可以通过几种不同的方式判断会话是否已启动,例如:

$isSessionActive = (session_id() != "");
Run Code Online (Sandbox Code Playgroud)

要么:

$isSessionActive = defined('SID');
Run Code Online (Sandbox Code Playgroud)

但是,如果你开始一个会话,然后关闭它们,它们都会失败; session_id()将返回先前会话的ID,同时SID将定义.同样,如果您已经激活会话,此时调用session_start()将生成一个E_NOTICE.是否有一种理智的方法来检查会话当前是否处于活动状态,而不必求助于输出缓冲,关闭运算符(@session_start())或其他类似hacky的东西?

编辑:我写了一个补丁试图让这个功能包含在PHP中:http://bugs.php.net/bug.php?id = 52982

编辑8/29/2011:添加到PHP 5.4的新功能修复此问题:"通过新函数,session_status公开会话状态"

// as of 8/29/2011
$isSessionActive = (session_status() == PHP_SESSION_ACTIVE);
Run Code Online (Sandbox Code Playgroud)

编辑12/5/11:PHP手册上的session_status().

php session

41
推荐指数
4
解决办法
7万
查看次数

标签 统计

php ×2

javascript ×1

session ×1

session-cookies ×1