簡體   English   中英

單擊復選框時未保存 Cookie

[英]Cookie not being saved when checkbox is clicked

我有一個復選框,當我單擊它時,我希望它設置一個具有數組值的 cookie。 但是當我點擊復選框時,它並沒有設置我的 cookie。

我不明白為什么沒有設置它。 我為 cookie 的值創建數組的方式有問題嗎?

這是我的代碼:

 extract($_POST);
 $code = $_POST['code'];
 $total= 100;
 if(isset($save)){
        echo "Saved";
        $cookie = array(
            'name'   => $code,
            'value'  => $total,
    );
    setcookie("cookie",json_encode($cookie),86500);
}

 if(isset($_COOKIE['cookie'])){
        echo "SET";
    }else{
        echo "NOT SET";
    }


<form method='post'>
     <input type="checkbox" name="save" value="1">Save
     <input name='code' />
</form
  1. 正如 CBroe 所提到的,您應該避免使用 extract (為了安全)。

  2. 你應該有一個提交按鈕(但我想你有一個但沒有包含在你發布的代碼中,對吧?)

  3. 請使用 time() 來計算 cookie 的壽命,因此請使用類似:

setcookie("cookie",json_encode($cookie),time()+3600);
  1. 使用 header 重定向在設置 cookies 后重新加載腳本(如下所示)——以便顯示 cookie 的最新狀態:
header('Location: '.$_SERVER['PHP_SELF']);

因此,請使用以下代碼:

<?php
// extract($_POST);
 $code = $_POST['code'];
 $total= $_POST['total'];
 if( isset($_POST["save"]) ){

    if ($_POST["save"]=="1") {
        echo "Saved";
        $cookie = array(
            'name'   => $code,
            'value'  => $total,
    );
    setcookie("cookie",json_encode($cookie),time()+3600);
}
header('Location: '.$_SERVER['PHP_SELF']);
die;
}

 if(isset($_COOKIE['cookie'])){
        echo "SET";

$getcookie=json_decode($_COOKIE['cookie']);
echo "<br>Name:". $getcookie ->name;
echo "<br>Value:". $getcookie ->value;
echo "<br>";

    }else{
        echo "NOT SET";
    }

?>

<form method='post' action=#>
     <input type="checkbox" name="save" value="1">Save (must tick to save as cookie)
     <input name='code' placeholder='Enter Name'/>
     <input name='total' placeholder='Enter a value'/>

     <input type=submit>
</form>

暫無
暫無

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

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