<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 获取字符串值?
最佳答案
让我们了解您的代码是如何工作的:
浏览器请求页面 yourpage.php。第一次运行时 cookie 是空的,因此在服务器端您的 cookie 无论如何都是空的。
浏览器用你的 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>
浏览器从你的 JS 接收 cookie
- 在下次访问时,您的 PHP 代码会看到 cookie,并将其分配给 POST 变量,该变量在页面执行后结束其生命周期。
- 如果您销毁 cookie(通过取消注释行的注释),浏览器将在第 3 步删除 cookie,因此在第 4 阶段浏览器看不到您的 cookie :)
关于javascript - PHP/JavaScript cookie 的作用就像一个指针,因此当我清除它时,我会丢失该值;如何从 cookie 中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684191/