3 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
JavaScript的
在JavaScript中,您可以簡(jiǎn)單測(cè)試cookieEnabled屬性,所有主要瀏覽器都支持該屬性。如果您使用的是較舊的瀏覽器,則可以設(shè)置Cookie并檢查其是否存在。(從Modernizer借來(lái)的):
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;
現(xiàn)代化Cookie檢查提交
檢查是否啟用了Cookies
PHP
在PHP中,它相當(dāng)“復(fù)雜”,因?yàn)槟仨毸⑿马?yè)面或重定向到另一個(gè)腳本。在這里,我將使用兩個(gè)腳本:
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貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
但是要檢查是否使用isset($ _ COOKIE [“ cookie”])啟用了cookie,您必須刷新。我以這種方式進(jìn)行操作(使用基于Cookie的會(huì)話:)
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貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
一種透明,干凈且簡(jiǎn)單的方法,使用PHP檢查cookie的可用性,并利用AJAX透明重定向的優(yōu)勢(shì),因此不會(huì)觸發(fā)頁(yè)面重新加載。它也不需要會(huì)話。
客戶端代碼(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調(diào)用替換為純JavaScript AJAX調(diào)用)
服務(wù)器端代碼(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();
}
}
第一次調(diào)用腳本時(shí),將設(shè)置cookie,并且腳本告訴瀏覽器重定向到其自身。瀏覽器將透明地執(zhí)行此操作。沒(méi)有頁(yè)面重新加載發(fā)生,因?yàn)樗窃贏JAX調(diào)用范圍內(nèi)完成的。
第二次,當(dāng)通過(guò)重定向調(diào)用時(shí),如果收到cookie,則腳本將響應(yīng)HTTP 200(帶有字符串“ true”),因此將showCookiesMessage調(diào)用該函數(shù)。
如果第二次調(diào)用腳本(由“ reload”參數(shù)標(biāo)識(shí))并且未接收到cookie,則它將使用字符串“ false”響應(yīng)HTTP 200-并且showCookiesMessage將調(diào)用該函數(shù)。
添加回答
舉報(bào)