Check browser cookies enabled php

PHP Cookies

A cookie is often used to identify a user. A cookie is a small file that the server embeds on the user’s computer. Each time the same computer requests a page with a browser, it will send the cookie too. With PHP, you can both create and retrieve cookie values.

Create Cookies With PHP

A cookie is created with the setcookie() function.

Syntax

Only the name parameter is required. All other parameters are optional.

The following example creates a cookie named «user» with the value «John Doe». The cookie will expire after 30 days (86400 * 30). The «/» means that the cookie is available in entire website (otherwise, select the directory you prefer).

We then retrieve the value of the cookie «user» (using the global variable $_COOKIE). We also use the isset() function to find out if the cookie is set:

Example

$cookie_name = «user»;
$cookie_value = «John Doe»;
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), «/»); // 86400 = 1 day
?>

if(!isset($_COOKIE[$cookie_name])) echo «Cookie named ‘» . $cookie_name . «‘ is not set!»;
> else echo «Cookie ‘» . $cookie_name . «‘ is set!
«;
echo «Value is: » . $_COOKIE[$cookie_name];
>
?>

Читайте также:  Css закомментировать кусок кода

Note: The setcookie() function must appear BEFORE the tag.

Note: The value of the cookie is automatically URLencoded when sending the cookie, and automatically decoded when received (to prevent URLencoding, use setrawcookie() instead).

To modify a cookie, just set (again) the cookie using the setcookie() function:

Example

$cookie_name = «user»;
$cookie_value = «Alex Porter»;
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), «/»);
?>

if(!isset($_COOKIE[$cookie_name])) echo «Cookie named ‘» . $cookie_name . «‘ is not set!»;
> else echo «Cookie ‘» . $cookie_name . «‘ is set!
«;
echo «Value is: » . $_COOKIE[$cookie_name];
>
?>

To delete a cookie, use the setcookie() function with an expiration date in the past:

Example

echo «Cookie ‘user’ is deleted.»;
?>

Check if Cookies are Enabled

The following example creates a small script that checks whether cookies are enabled. First, try to create a test cookie with the setcookie() function, then count the $_COOKIE array variable:

Example

if(count($_COOKIE) > 0) echo «Cookies are enabled.»;
> else echo «Cookies are disabled.»;
>
?>

Complete PHP Network Reference

For a complete reference of Network functions, go to our complete PHP Network Reference.

Источник

Detect If Cookies Are Enabled in PHP

In JavaScript you simple test for the cookieEnabled property, which is supported in all major browsers. If you deal with an older browser, you can set a cookie and check if it exists. (borrowed from Modernizer):

if (navigator.cookieEnabled) return true;

// set and read cookie
document.cookie = "cookietest=1";
var ret = document.cookie.indexOf("cookietest cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";

return ret;

PHP

In PHP it is rather «complicated» since you have to refresh the page or redirect to another script. Here I will use two scripts:

session_start();
setcookie('foo', 'bar', time()+3600);
header("location: check.php");

Detect if cookies are enabled in PHP

I think its better to make one file set cookie and redirect to another file. Then the next file can check the value and determine if cookie is enabled. See the example.

Create two files, cookiechecker.php and stat.php

// cookiechecker.php
// save the referrer in session. if cookie works we can get back to it later.
session_start();
$_SESSION['page'] = $_SERVER['HTTP_REFERER'];
// setting cookie to test
setcookie('foo', 'bar', time()+3600);
header("location: stat.php");

// cookie is working
session_start();
// get back to our old page
header(«location: «);
else: // show the message ?>
cookie is not working

Load cookiechecker.php in browser it’ll tell cookie is working . Call it with command line like curl . It’ll say, cookie is not working

Update

Here is a single file solution.

session_start();

if (isset($_GET['check']) && $_GET['check'] == true) if (isset($_COOKIE['foo']) && $_COOKIE['foo'] == 'bar') // cookie is working
// get back to our old page
header("location: ");
> else // show the message "cookie is not working"
>
> else // save the referrer in session. if cookie works we can get back to it later.
$_SESSION['page'] = $_SERVER['HTTP_REFERER'];
// set a cookie to test
setcookie('foo', 'bar', time() + 3600);
// redirecting to the same page to check
header("location: ?check=true");
>

Check if cookies are enabled without redirect

It’s not possible because Cookies are in the browser, and PHP send them when the page has render, so will be available just in the second page.
A possible way to fix this is using javascript.
If you really should do it in PHP, for some crazy reason, send all your request to a main controller and save the state using other method, for example, write a var into a file, then redirect and in the next redirections you’ll know if the cookies are enabled without needed any other redirection. Example:

$file = 'cookie_fake_'.$userIP;
if( !isset($_COOKIE['COOK_CHK']) && !file_exists($file) ) file_put_contents($file, 'dummy');
setcookie('COOK_CHK',uniqid(),time()+60*60*24);
header('Location:/');
exit;
>
if(!isset($_COOKIE['COOK_CHK'])) setcookie('COOK_CHK',uniqid(),time()+60*60*24);
echo"Cookies are disabled!";
exit;
>

Then you should write something to clean old files every hour or so, of course you can use a cache layer or a database or anything like that instead of writing a file.

Edit: The previous code will be really f** up if the user enables cookies and refresh the page, now I’ve fixed so it works at the second time it refresh. Not perfect but. You really should do this using javascript.

How to detect server-side whether cookies are disabled

Send a redirect response with the cookie set; when processing the (special) redirected URL test for the cookie — if it’s there redirect to normal processing, otherwise redirect to an error state.

Note that this can only tell you the browser permitted the cookie to be set, but not for how long. My FF allows me to force all cookies to «session» mode, unless the site is specifically added to an exception list — such cookies will be discarded when FF shuts down regardless of the server specified expiry. And this is the mode I run FF in always.

How to detect that JavaScript and/or Cookies are disabled?

For checking cookies you can use:

function checkCookie() var cookieEnabled = navigator.cookieEnabled; 
if (!cookieEnabled) <
document.cookie = "testcookie";
cookieEnabled = document.cookie.indexOf("testcookie")!=-1;
>
return cookieEnabled || showCookieFail();
>

function showCookieFail() // do something here
>

// within a window load,dom ready or something like that place your:
checkCookie();

And for checking JavaScript use a tag with some kind of message inside

Источник

As we know HTTP is a stateless protocol. In web during Client Server communication to identify a particular user it is required to maintain state. In this cause there are several state management techniques. State management techniques are available for both the side client & server. Cookie is a client side state management technique.

A Cookie is a simple text file. It can store maximum 4MB data. Due to cookies are resides in client machine in text format storing data in a cookie is not secured. Cookies are two types session cookies & persistent cookies. Session cookies are available for only that time user is interacting. Once the user close the instance of browser session cookies get destroyed. Where persistent cookies having an expiry time. During we create a cookie we have to set the expiry time for persistent cookies. Expiry time can be a day, month or a year too. Cookies are generally used for websites that have huge databases, having signup & login, have customization themes other advanced features.

Before create a cookie using any programming language we need to check first is Cookies enabled in the client browser or not. Programmatically to check this here I wrote a small php script. Which will tell you is in your machine cookies are enabled or disabled.

The logic I implemented in below script is so simple. Using setcookie() method in php I am creating a cookie with the name demo-cookie. Later using php count() function I am counting the number of cookies available in your machine. If it is greater then 0 then my cookie demo-cookie is created successfully. It means in your browser cookies are enabled. In reverse case if count is not grater then 0 then in your browser cookies are disabled. To enable cookies in your browser go to the browser setting.

is-Cookie-enabled.php

Источник

Check browser cookies enabled php

БлогNot. PHP: проверить, включены ли в браузере клиента cookies

PHP: проверить, включены ли в браузере клиента cookies

Про сами cookies («куки») и их назначение писать ничего не буду, информации на эту тему куча, а вот вопрос из заголовка, конечно, не новый, но всегда актуальный.

В инете есть как разумные, но неполные, так и бредовые варианты. Давайте напишем небольшой сценарий testcookie.php , который постараемся сделать «универсальным».

Идея в том, что при первом входе на страницу посылается кука без указания срока хранения (временная) и кука, которой назначено жить 2 недели (постоянная). Две недели — это просто так, а вот две куки — потому что в некоторых браузерах можно сделать такую конфигурацию, что куки без даты (их ещё называют сеансовыми) принимаются, а с датой нет, ну или наоборот. Вот картинка выдачи теста из IE8:

Затем делается перезагрузка страницы с переданным ей же параметром step=1 . Это нужно потому, что вначале сервер направляет cookie клиенту как часть отклика HTTP, потом клиент, если он готов принять cookie, возвращает её серверу.

Следовательно, для проверки того, удался ли этот возврат, нужно ждать следующего запроса HTTP.

Чтобы отличить второй вход от первого, используется условие на наличие переменной $_GET[‘step’] .

 else < //Это повторный вызов? $temp_cookie = $_COOKIE['temp_cookie']=='ok'?'1':'0'; //Установилась временная кука? $persist_cookie = $_COOKIE['persist_cookie']=='ok'?'1':'0'; //А постоянная? setcookie ('temp_cookie','',time()-14*24*60*60); setcookie ('persist_cookie','',time()-14*24*60*60); //Надёжный способ удалить кукиз - поставить пустой и просроченный //. Теперь проверяем наличие временных и постоянных кукизов echo '
Cookie test:'; echo '
Temp cookies: '.$temp_cookie; echo '
Persist cookies: '.$persist_cookie; > ?>

На некоторых локалхостах это может не работать, где есть траблы с куками или отдельными настройками безопасности для локальных и внешних адресов, но на любом удалённом сервере работать должно.

А вот с точки зрения SEO может получиться полная фигня. Клиент или поисковый бот заходит по ссылке script.php?step=1 , скрипт проверяет наличие куки, и, видя, что её нет, решает, что куки отключены в браузере. Напрашивается идея сделать через переменную сессии, их-то, вроде бы, нигде не отключают? Как-то вот так:

 else < //Это повторный вызов? $temp_cookie = $_COOKIE['temp_cookie']=='ok'?'1':'0'; //Установилась временная кука? $persist_cookie = $_COOKIE['persist_cookie']=='ok'?'1':'0'; //А постоянная? setcookie ('temp_cookie','',time()-14*24*60*60); setcookie ('persist_cookie','',time()-14*24*60*60); unset($_SESSION['test_cookie']); session_destroy (); //Надёжный способ удалить кукиз - поставить пустой и просроченный //. Теперь проверяем наличие временных и постоянных кукизов echo '
Cookie test:'; echo '
Temp cookies: '.$temp_cookie; echo '
Persist cookies: '.$persist_cookie; > ?>

Увы, на самом деле, в ряде г****браузеров, не соблюдающих никаких стандартов, например, в той же «Опере» 11.50, отключение кукизов будет означать и отключение сессий. Так что в этом случае она выдаст что-нибудь вроде циклического редиректа.

А вот в IE8, к примеру, всё сработает корректно (настройки Cookie в нём находятся так: меню Сервис, Свойства обозревателя, вкладка Конфиденциальность, кнопка Дополнительно).

Массу способов можно придумать с применением Javascript, но он-то тоже может быть отключён.

В общем, если знаете способ надёжней и кроссбраузерней приведённого — пишите 🙂 А на практике, конечно, проще всего исходить из того, что 99% пользователей ничего про отключение кукизов не знают и никогда их не отключают.

Вот совсем короткий код для проверки того, включены ли в браузере cookie-файлы, проверенный в PHP 7.4.2 (XAMPP).

20.07.2011, 00:13 [14831 просмотр]

Источник

Оцените статью