javascript - PHP/JavaScript cookie 的作用就像一个指针,因此当我清除它时,我会丢失该值;如何从 cookie 中获取值?

标签 javascript php cookies

<script type="text/javascript">
    var test = "test";
    document.cookie = "some_test=" + guid;
</script>

<?php $_POST['important_value'] = ((isset($_COOKIE['some_test'])) ? ($_COOKIE['some_test']) : ('')); ?>

<script>
    //document.cookie = "some_test=;expires=Thu, 01 Jan 1970 00:00:00 UTC;";
    console.log(document.cookie);
</script>

只要我不取消注释该行以清除 cookie,此代码就会完全按照预期工作。目标是将 JavaScript 变量 (test) 移动到 PHP 变量 ($_POST['important_value'])。

我认为发生的情况是 $_POST['important_value']$_COOKIE['some_test'] 指向同一件事,但我可能是错的。有没有办法打印变量的地址?

更新:

debug_zval_dump($_POST['important_value']);
// string(39) "750118664537365903071115537365768136624" refcount(3)

debug_zval_dump($_COOKIE['some_test']);
// string(39) "750118664537365903071115537365768136624" refcount(3) 

我假设这意味着我的假设是正确的?如何在没有指针的情况下从 cookie 获取字符串值?

最佳答案

让我们了解您的代码是如何工作的:

  1. 浏览器请求页面 yourpage.php。第一次运行时 cookie 是空的,因此在服务器端您的 cookie 无论如何都是空的。

  2. 浏览器用你的 JS 加载页面,实际上第一次运行它是相等的:

    <script type="text/javascript">
      var test = "test";
      document.cookie = "some_test=" + guid;
    </script>
    
    <script>
        //document.cookie = "some_test=;expires=Thu, 01 Jan 1970 00:00:00 UTC;";
        console.log(document.cookie);
    </script>
    
  3. 浏览器从你的 JS 接收 cookie

  4. 在下次访问时,您的 PHP 代码会看到 cookie,并将其分配给 POST 变量,该变量在页面执行后结束其生命周期。
  5. 如果您销毁 cookie(通过取消注释行的注释),浏览器将在第 3 步删除 cookie,因此在第 4 阶段浏览器看不到您的 cookie :)

关于javascript - PHP/JavaScript cookie 的作用就像一个指针,因此当我清除它时,我会丢失该值;如何从 cookie 中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684191/

相关文章:

javascript - 无法在React中使用d3.js绘制条形图

javascript - 通过迭代,使用数组中的字符串动态设置变量

php - 如何以自动递增且不重复的方式发布ID

javascript COOKIE - 如何添加路径=/?

javascript - 每次刷新后初始化 localStorage

java - 如何在 tomcat 8 中将 Cookie 处理器更改为 LegacyCookieProcessor

javascript - 如何克服 WhatWG/W3C/Chrome version 33.0.1750.146 "regression bug"with &lt;input type ="number"/> fields

用于表单验证的 javascript 适用于 firefox 但不适用于 IE8

php - MYSQL/PHP 选择不同

php - 使用 PHP/MySQL 和可选的 JavaScript 配置位置信息