依赖会话var不存在以查看cookie是否被禁用

时间:2014-01-18 09:51:38

标签: php cookies

逻辑,手册和谷歌说我是对的,但我不是专业人士,我喜欢100%确定它适用于所有浏览器,无论在任何情况下。

我想检查用户是否在浏览器中禁用了Cookie。我不能依赖isset($_COOKIE['test'],因为当它是新用户或用户删除了所有cookie时,将无法启用cookie和cookie。 我提出了一个非常简单的解决方案,但我的问题是:我能确定这个有效吗?

如果第1页是: domain / index.php

<?php
session_start();
$_SESSION['id']='Hello';
session_write_close();
header('Location: login');
?>

第2页是: domain / login / index.php

<?php
session_start();
if(empty($_SESSION['id'])){
    echo 'Turn on your cookies!';
    }
?>

这总是有效吗? 的 [编辑] 回答我自己的问题:不,这不起作用。

我在下面发布了一个有效的解决方案。 感谢大家指点我正确的方向。

1 个答案:

答案 0 :(得分:0)

感谢大家指点我正确的方向。

我的解决方案有效,所以我会与您分享:

index.php

<?php
ini_set('session.use_cookies',1);
ini_set('session.use_only_cookies',1);
ini_set('session.cookie_httponly',1);


$name='test';
if(empty($_COOKIE[$name]){
    session_start();
    //it seems nessecary to write something in the session
    $_SESSION['test']=test;
    session_write_close();
    }

//redirect to a login page
header('Location: http://example.com/login/');
}
?>

login / index.php

<?php
$name='test';
if(empty($_COOKIE[$name])){
  echo 'Turn on your cookies';
die;
}
?>

请参阅the manual on sessions and cookies