PHP / JavaScript cookie就像一个指针,所以当我清除它时,我会失去价值;如何从cookie中获取值?

时间:2017-08-14 22:54:07

标签: 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 [&#39; important_value&#39;] )。

我认为发生的事情是&em> $ _ POST [&#39; important_value&#39;] 和 $ _ COOKIE [&#39; some_test&#39;] 指向同一件事,但我可能是错的。无论如何打印变量的地址?

更新:

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

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

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

1 个答案:

答案 0 :(得分:2)

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

  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

  4. 接收cookie
  5. 在下次访问时,您的PHP代码会看到cookie并将其分配给POST变量,该变量在页面执行后完成。
  6. 如果你破坏了cookie(通过取消注释你的注释行),在第3步浏览器删除cookie,所以在第4阶段浏览器上看不到你的cookie:)