【问题标题】:How to check which users accept cookies?如何检查哪些用户接受 cookie?
【发布时间】:2011-12-28 20:48:40
【问题描述】:

我想检查哪些用户接受 cookie,以便在我们的一个 PHP 网站上获得接受 cookie 的用户的粗略百分比。

我的想法是在用户表中创建一个临时的acceptsCookies 列来帮助跟踪这一点(例如,如果用户接受 cookie,那么他们的acceptsCookies 将设置为“Y”,否则将设置为到“N”)。

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

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

【问题讨论】:

  • 听起来并不难,JavaScript 也可以设置和读取cookies。尝试自己做,如果遇到困难,请来这里寻求更具体问题的帮助。这是一个问答网站,而不是一个为我构建代码的网站。
  • @Truth:我不能使用 Javascript,因此我指定了 PHP 并且没有标记 Javascript。
  • 那么你也应该在你的问题中指定你不能使用 JavaScript。
  • @Truth:请停止回复,您的一般态度和反对票根本没有帮助。似乎您是唯一一个不理解这个问题的人,因为我已经有了两个有用的答案,其中一个是我正在寻找的非常聪明的解决方案。下次不要假设任何事情。
  • @Truth:实际上,是的,您确实投了反对票。当您对我投反对票为 -1 并在上方留下您的第一条评论时,您是唯一的“观点”。另外,不要将别人的误解与你自己的误解混为一谈,尤其是当英语不是你的第一语言时。最后,写“听起来并不难”、“试着自己做”和“不是为我构建代码的网站”对我和你可能成为的任何“其他”人完全没有帮助试图帮助。为了证明你错了,我已经有了我的解决方案。因此,请随时继续与自己交谈,以帮助“其他人”,因为我已经找到了我正在寻找的东西。

标签: php cookies session-cookies setcookie


【解决方案1】:

您不能一步完成,因为 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 脚本更新您会话的接受Cookie 值。

【讨论】:

  • 非常聪明,马克,谢谢。所以只是为了确认一下,这会在一个页面中完成吗?
  • 是的,因为图像会触发对服务器的单独请求。就我个人而言,我只是在第二个页面请求中进行检查,因为为此目的使用资产感觉有点“不确定”,即使它会起作用。
  • 技术上是两页。一个页面设置cookie,然后当浏览器请求该图像脚本时,您的服务器将自动获取主页设置的cookie,假设浏览器允许cookie。
  • @Marc B:但就用户而言,只有一个“页面”,对吗?
  • 是的。但是,这只会让您的服务器提前一两分钟意识到 cookie 的功能。 cookie 仍然会在用户在您的网站上提出的任何请求时发送,并且这些页面也可以在此时进行更新。可以把它想象成一家接受预订的餐厅,但不在乎你是否站在前门外用手机拨打预订电话。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    使用 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>
    

    【讨论】:

    • 对不起,我没有意识到你不能使用 javascript。我的错。
    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2011-06-30
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多