簡體   English   中英

PHP / JavaScript cookie的行為就像一個指針,因此當我清除它時,我會失去價值; 如何從Cookie中獲取價值?

[英]PHP/JavaScript cookie acting like a pointer so when I clear it, I lose the value; how do I grab the value from the cookie?

<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 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM