我正在一个需要JavaScript和会话的页面上工作。我已经有代码来警告用户是否禁用了javascript。现在,我想处理禁用cookie的情况,因为会话ID存储在cookie中。
我只想到了几个主意:
解决此问题的最佳方法是什么?谢谢
编辑
根据链接的文章,我想出了自己的方法,并认为我可以分享,其他人也许可以使用它,也许我会得到一些批评。(假设您的PHP会话存储在名为的Cookie中PHPSESSID)
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>
在JavaScript中,您可以简单测试cookieEnabled属性,所有主要浏览器都支持该属性。如果您使用的是较旧的浏览器,则可以设置Cookie并检查其是否存在。(从Modernizer借来的):
if (navigator.cookieEnabled) return true; // set and read cookie document.cookie = "cookietest=1"; var ret = document.cookie.indexOf("cookietest=") != -1; // delete cookie document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT"; return ret;
在PHP中,它相当“复杂”,因为您必须刷新页面或重定向到另一个脚本。在这里,我将使用两个脚本:
somescript.php
<?php session_start(); setcookie('foo', 'bar', time()+3600); header("location: check.php");
check.php
<?php echo (isset($_COOKIE['foo']) && $_COOKIE['foo']=='bar') ? 'enabled' : 'disabled';