<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中获取字符串值?
答案 0 :(得分:2)
让我们了解您的代码是如何工作的:
浏览器请求页面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