【问题标题】:How can I check using PHP if some cookie is created through javascript?如果某些 cookie 是通过 javascript 创建的,我如何使用 PHP 检查?
【发布时间】:2015-12-29 22:30:27
【问题描述】:

我希望我的 PHP 代码能够区分由 JavaScript(使用 document.cookie)和 PHP(使用 setcookie())创建的 cookie。

让我们假设下面的伪代码:-

<?php

   $X = $_COOKIE['X'];

   if($X_COOKIE_IS_SET_BY_PHP)
      // ALL IS GOOD
   else if($X_COOKIE_IS_SET_BY_JAVASCRIPT)
      // SET A COOKIE USING PHP

?>

【问题讨论】:

  • 没有区别。 Cookie 就是 Cookie。
  • 只需将 cookie 名称 + 由 PHP 设置的值存储在数据库中(无论如何您都应该这样做)。任何不在数据库中的 cookie 变量,都不是由 PHP 生成的。

标签: javascript php cookies


【解决方案1】:

没有区别。饼干是饼干。

唯一的方法(尽管非常不可靠)是在会话中记住您是否从 PHP 设置 cookie。如果不是,那么它可能是从 JavaScript 设置的。但就像我说的,这是不可靠的。 cookie 可能是在较早的会话中从 PHP 设置的,或者有人可能手动弄乱了 cookie。

我认为最好的方法是完全使用会话变量。会话将前导值保留在服务器上。如果你也需要 JavaScript 中的值,你可以设置一个 cookie,或者在一个小脚本中添加值,但是在 PHP 中你根本不会读回 cookie 值,只需使用服务器上的会话值,然后重置每个请求上的 cookie,因此客户端也知道该值。

【讨论】:

    【解决方案2】:

    Cookie 不是存储在服务器端的东西。它是存储在用户计算机/浏览器中的一段数据。当您在 PHP 中使用 setcookie() 时,服务器会发送带有标头的 cookie,浏览器将其存储在用户的计算机中(并且浏览器将其与下一个请求一起发回)。 cookie 的存储位置与document.cookie 将存储的位置相同。因此,存储后,我们无法区分它是由 PHP 还是 Javascript 存储的,因为没有记录任何相关信息。

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 2022-08-22
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      相关资源
      最近更新 更多