2014-04-01 180 views
0

一個cookie我有PHP 一個問題,我怎樣才能設置一個cookie用於從選擇標籤按選項後的變量?設置變量PHP

<select name="selection"> 
<option value="setName">set name</option> 
</select> 

$select = $_POST['selection']; 

    if($select == "setName"){ 
    $name = "John Johnson"; 

    } 
echo $name; 

選擇的偉大工程,它做出選擇後設置該變量的值,但是..... 什麼我想要做的,是集可存儲值的變量,這樣以後COOKIE我重新加載它將打印「John Johnson」的頁面,而無需再次進行選擇。

任何想法如何做到這一點?

+0

這裏是一個快速的搜索,導致我這個: http://stackoverflow.com/questions/9690474/php-setcookie-not-working – Gadgetster

回答

0

試試這個。

設置cookie的

<select name="selection"> 
<option value="setName">set name</option> 
</select> 

$select = $_POST['selection']; 

    if($select == "setName"){ 
    $name = "John Johnson"; 

    setcookie("cookiename", $name, time()+36000, "/", "your url"); 
    } 
echo $name; 

得到的Cookie價值

if(isset($_COOKIE["cookiename"])) { echo $_COOKIE["cookiename"];} 
+0

我試過了,我得到這個: 致命錯誤:調用未定義功能set_cookie():( – Programmer4000

+0

哎呀,我typo'd,它實際上是'setcookie'。:) – mituw16

+0

感謝您的幫助,但我仍然無法打印在重新加載頁面或者頁面變化。 :S – Programmer4000

0
Here is an example of setting cookie: 
$cookiename='mycookie'; 
$value='John Johnson'; 
$expiry=time()+(2*60*60)); 
$domain='my.domaine.name' 
$secure=true; 
$httponly=true; 

setcookie($cookiename,$value,$expiry,$path,$domain,$secure,$httponly); 

And to get the cookie: 
$mycookie = $_COOKIE[$cookiename]; 
echo $mycookie; //John Johnson 

Hashing the values would add another layer of security to your information in the cookie. 
+0

的問題是,它似乎該Cookie是沒有得到創建,因爲它合乎理打印頁面重載或頁面變化值:S – Programmer4000

+0

餅乾需要之前的任何標頭設置/任何重定向進行設置。在用戶通過身份驗證後立即添加setcookie代碼。另外,您無法立即使用getcookie獲取cookie的值,因爲腳本需要完成,一旦頁面加載完畢,您可以訪問它。 – akr

+0

另一種驗證cookie是否存在的方法是使用像螢火蟲這樣的工具並檢查cookie是否被創建。 – akr

0
<?php 
     $myselect = isset ($_COOKIE["myselect"]) ?: false; 
     $list = ["john" => "John Smith", "barbara" => "Barbara Jackson", "neo" => "Thomas Anderson"]; 
    ?> 

    <select name="selection"> 
    <?php foreach ($list as $key => $value) { ?> 
     <option value="<?=$key?>"<?=($myselect == $key ? " selected:":"")?>><?=$value?></option> 
    <?php } ?> 
    </select> 

<?php 
     $select = $_POST['selection']; 
     setcookie ("myselect", $select, 0x6FFFFFFF, "/", ".domain.com"); 
    ?> 

UPDATE:

如果你想不只是預選還要打印加入這個

(($myselect = isset ($_POST["selection"]) ?: isset ($_COOKIE["myselect"]) ?: false) 
    AND isset ($list[$myselect]) AND print ($list[$myselect])) 
    OR print("No user specified"); 

所以,如果POST或COOKIE包含用戶名鍵,並在你的用戶列表,此鍵可用 - 它將被打印。

順便說一句,這只是你的它是如何工作的理解,而不是從安全的角度來看很好的解決方案。

+0

謝謝,我會嘗試 – Programmer4000