3 回答
TA贡献1848条经验 获得超5个赞
JavaScript的
在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;
现代化Cookie检查提交
检查是否启用了Cookies
PHP
在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';
TA贡献1836条经验 获得超5个赞
但是要检查是否使用isset($ _ COOKIE [“ cookie”])启用了cookie,您必须刷新。我以这种方式进行操作(使用基于Cookie的会话:)
session_start();
$a = session_id();
session_destroy();
session_start();
$b = session_id();
session_destroy();
if ($a == $b)
echo"Cookies ON";
else
echo"Cookies OFF";
TA贡献1818条经验 获得超7个赞
一种透明,干净且简单的方法,使用PHP检查cookie的可用性,并利用AJAX透明重定向的优势,因此不会触发页面重新加载。它也不需要会话。
客户端代码(JavaScript)
function showCookiesMessage(cookiesEnabled) {
if (cookiesEnabled == 'true')
alert('Cookies enabled');
else
alert('Cookies disabled');
}
$(document).ready(function() {
var jqxhr = $.get('/cookiesEnabled.php');
jqxhr.done(showCookiesMessage);
});
(可以将JQuery AJAX调用替换为纯JavaScript AJAX调用)
服务器端代码(PHP)
if (isset($_COOKIE['cookieCheck'])) {
echo 'true';
} else {
if (isset($_GET['reload'])) {
echo 'false';
} else {
setcookie('cookieCheck', '1', time() + 60);
header('Location: ' . $_SERVER['PHP_SELF'] . '?reload');
exit();
}
}
第一次调用脚本时,将设置cookie,并且脚本告诉浏览器重定向到其自身。浏览器将透明地执行此操作。没有页面重新加载发生,因为它是在AJAX调用范围内完成的。
第二次,当通过重定向调用时,如果收到cookie,则脚本将响应HTTP 200(带有字符串“ true”),因此将showCookiesMessage调用该函数。
如果第二次调用脚本(由“ reload”参数标识)并且未接收到cookie,则它将使用字符串“ false”响应HTTP 200-并且showCookiesMessage将调用该函数。
添加回答
举报