Прозрачный, чистый и простой подход, проверка доступности файлов cookie с помощью PHP и использование преимуществ 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 из чистого JavaScript)
Серверный код (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 не получен, он отвечает HTTP 200 строкой «false» - и вызывается функция showCookiesMessage
.