2011-06-29 82 views
4

我該如何設置cookie值和名稱,以便用戶可以在表單中輸入值?以及我如何在第二頁上顯示該值? (我不能爲此使用cookie,所以雖然可能有更聰明的方法來做到這一點,但我只想知道如何使用cookie做到這一點!!)謝謝!在form_data從php表單獲取cookie值

<?php 
setcookie($color, 'color'); 
setcookie($name, 'name'); 
?> 

<?php 
echo "<form action=\"form_data.php\" method=\"post\">"; 
echo "favorite color:<input type=\"text\" name=\"color\" size=\"20\"><br/>"; 
echo "name:<input type=\"text\" name=\"name\" size=\"20\"><br/>"; 
echo "<input type=\"submit\" value=\"Submit\" />"; 
echo "<br /><input type=\"hidden\" name=\"submitted\" value=\"true\" />"; 
?> 

數據:

<?php 
    echo "<b>fav color:</b>".$_COOKIE['color']; 
    echo "<b>name:</b>".$_COOKIE['name']; 
    ?> 

回答

5

首先在每一頁上,你有你的方式:

<?php 
echo "<form action=\"form_data.php\" method=\"post\">"; 
echo "favorite color:<input type=\"text\" name=\"color\" size=\"20\"><br/>"; 
echo "name:<input type=\"text\" name=\"name\" size=\"20\"><br/>"; 
echo "<input type=\"submit\" value=\"Submit\" />"; 
echo "<br /><input type=\"hidden\" name=\"submitted\" value=\"true\" />"; 
?> 

然後在form_data.php:

<?php 
// set the cookie with the submitted user data 
setcookie('color',$_POST['color']); 
setcookie('name', $_POST['name']); 
echo "<b>fav color:</b>".$_COOKIE['color']; 
echo "<b>name:</b>".$_COOKIE['name']; 
?> 

但是,你會發現,$ _COOKIE變量尚不可用...如果您重新加載該頁面,它們將會出現。

爲了適應餅乾的這種行爲,你可以設置在form_data.php重定向:

<?php 
if (!empty($_POST)) { 
    // set the cookie with the submitted user data 
    setcookie('color',$_POST['color']); 
    setcookie('name', $_POST['name']); 
    // redirect the user to final landing page so cookie info is available 
    header("Location:form_data.php"); 
} else { 
    echo "<b>fav color:</b>".$_COOKIE['color']; 
    echo "<b>name:</b>".$_COOKIE['name']; 
} 
?> 

您可以重定向他們在任何地方適合。希望這會有所幫助,祝你好運!

+0

OMG!是!幫助太多了!謝謝謝謝! – Lenn

2

你的問題失敗的功能setCookie方法。 setcookie($ name,$ value);

例如: setcookie('color','red');

echo $ _COOKIE ['color']; // outout:紅

+0

我該如何從我的表單中獲取未知值?這就是有點我卡住(可以它甚至完成?!) – Lenn

+0

+1指出錯字:) – baraboom

0

我不知道爲什麼要使用我知道你可以使用會話傳遞用戶的信息,這樣cookies.as: 這是爲我工作

的完整的例子
<?php 
session_start(); 
if(array_key_exists('sub',$_POST)) 
$_SESSION['name']=$_POST['name']; 
?> 
<html> 
<form method="post"> 
<input type='text' name="name"> 
<input type='submit' name='sub' value='send my info'> 
</html> 

而在另一個頁面只是用這一個:

<?php 
session_start(); 
$r=$_SESSION['name']; 
echo $r; 
?> 

記住調用session_start();當你想使用會話

+0

他們特別詢問有關Cookie,我認爲他們有一個很好的理由。當然,你的代碼更普遍。 – baraboom

+0

必須使用cookie時,我們必須連接到服務器,然後服務器必須認證我們的原因HTTP是無狀態的,它需要cookie我不明白這堅持假設亞馬遜。com它使用cookie來存儲用戶的信息,並且知道他們每個人Nguyen剛剛說過關於進入表格的內容,沒有別的 – Nickool

0

誰能解釋寫的東西baraboom:

但是,你會發現,$ _COOKIE變量不可 可是...如果你重新加載頁面時,就會出現。

<?php 
if (!empty($_POST)) { 
    // set the cookie with the submitted user data 
    setcookie('color',$_POST['color']); 
    setcookie('name', $_POST['name']); 
    // redirect the user to final landing page so cookie info is available 
    header("Location:form_data.php"); 
} else { 
    echo "<b>fav color:</b>".$_COOKIE['color']; 
    echo "<b>name:</b>".$_COOKIE['name']; 
} 
?> 

只是想了解爲什麼它是這樣的,因爲用戶被重定向到提交頁面。