如何检查哪些用户接受cookie?

时间:2011-11-14 17:37:35

标签: php cookies session-cookies setcookie

我想检查哪些用户接受了Cookie,这样我就可以在我们的某个PHP网站上获得大多数接受Cookie的用户。

我的想法是在Users表中创建一个临时acceptsCookies列以帮助跟踪此情况(例如,如果用户接受Cookie,则其acceptsCookies将设置为“Y”,否则它将被设置为“N”)。

如何在单个页面上执行此操作(设置测试Cookie,检查是否已接受/设置,更新数据库)?

更新:要明确,这必须在PHP中完成100%。

3 个答案:

答案 0 :(得分:4)

您无法一步完成,因为Cookie必须先向浏览器发送,并且只会在后续请求中发回给您。所以,如果你有类似的东西:

<?php
    session_start();
    session_write_close(); // unlock session file so checkcookie.php below won't block.
    setcookie(...);
?>
<html>
<body>

<img src="checkcookie.php" width="0" height="0" />

您可以使用checkcookie.php脚本更新会话的acceptedCookie值。

答案 1 :(得分:1)

使用PHP,您无法在单个页面上执行此操作。另一种选择是检查javascript,然后将ajax调用提交到另一个php页面:

<script>
   var tmpcookie = new Date();
   chkcookie = (tmpcookie.getTime() + '');
   document.cookie = "chkcookie=" + chkcookie + "; path=/";
    if (document.cookie.indexOf(chkcookie,0) < 0) {
      //AJAX CALL IN HERE SAYING NO COOKIES
      }
    else {
      //AJAX CALL IN HERE SAYING ACCEPTING COOKIES
    }
</SCRIPT>

答案 2 :(得分:0)

PHP 单独无法确定用户是否在单个页面中接受了cookie。

PHP将cookie作为标题发送,然后在下一页请求中读取客户端发送的标题。 PHP无法在交付的同一页面中找到cookie是否被接受。这就是JavaScript的领域。