亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP cookie 設置后無法正常工作

PHP cookie 設置后無法正常工作

PHP
心有法竹 2023-03-04 10:47:33
我是 cookie 的新手,并試圖搜索我的問題,但找不到。我的代碼:索引.php<?php    if (isset($_GET["submit"])) {       setcookie("time",date('Y/m/d H:i:s'),time()+3600);       echo $_COOKIE["time"];   }   //Look if cookie isset, if not open overlay.   if (isset($_COOKIE["time"])) {      echo "<body>";   } else {       echo "<body onload='toggleOverlay(0)'>";    }?>當你在瀏覽器中打開頁面時,執行 php 代碼的底部,不應該有 cookie 'time',所以正文將與 onload="toggleoverlay()" 相呼應。這一切都很好。然后當我點擊提交按鈕接受 cookie 時,頁面重新加載,我的 php 代碼的上半部分被執行,一個名為“time”的 cookie 被創建為當前時間。然后應該執行底部部分,但它仍然與 onload 的主體相呼應,即使我剛剛創建了 cookie。當我試圖回應 cookie 時,我也收到錯誤(說 cookie 不存在)。當我再次手動重新加載頁面時,它就可以工作了。但這非常令人沮喪,因為您需要接受 cookie。然后頁面會重新加載,疊加層會再次打開。我認為這是因為創建 cookie 需要一些時間,到那時其他代碼已經執行,但是有人知道如何解決這個問題嗎?提前致謝。
查看完整描述

2 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

在將響應發送回客戶端(瀏覽器)之前,不會設置 cookie。直到客戶端的下一個請求之后,它才在您的 PHP 中可用。


你可以做下一步。


<?php

    $cookie_set = isset($_COOKIE['time']);


    if (!$cookie_set && isset($_GET['submit']) {

        setcookie('time', date('Y/m/d H:i:s'), time() + 3600);

        $cookie_set = true;

    }


    if ($cookie_set) {

        echo '<body>';

    } else {

        echo '<body onload="toggleOverlay(0)">';

    }


查看完整回答
反對 回復 2023-03-04
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

我找到了一個半解決方案,如果提交頁面,重新加載頁面,然后在創建 cookie 后,我再次重新加載頁面并更改 index.php?提交到 index.php


像這樣


 <?php 

   if (isset($_GET["submit"])) {

     setcookie("time",date('Y/m/d H:i:s'),time()+3600);


     echo $_COOKIE["time"];


     header("Refresh:0; url=index.php");

   }


   //Look if cookie isset, if not open overlay.

   if (isset($_COOKIE["time"])) {

      echo "<body>";

   } else {

      echo "<body onload='toggleOverlay(0)'>";

  }

?>

像這樣它可以工作,但它不是最好的解決方案。


查看完整回答
反對 回復 2023-03-04
  • 2 回答
  • 0 關注
  • 151 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號