2016-12-11 54 views
0
<?php 

    if(isset($_POST['delete'])) 
    { 
    setcookie("names",0, 1); 
setcookie("flavors",0, 1); 
setcookie("scoops",0, 1); 
header("Location: coookie.php"); 
exit(); 
    } 

if(isset($_POST['name'])&& ($_POST['flavor']) && ($_POST['scoop'])) 
{ 
setcookie("names", $_POST['name']); 
setcookie("flavors", $_POST['flavor']); 
setcookie("scoops", $_POST['scoop']); 
header("Location: coookie.php"); 
exit(); 
} 
if(!isset($_COOKIE['names']) &&($_COOKIE['flavors']) &&($_COOKIE['scoops'])) 
{ 
echo<<<_END 
<form action="coookie.php" method="post"><pre> 
enter your name. 


Name <input type="text" name="name"> 
</br> 
Select Your Flavor 
    <select name="flavor"> 
<option value="choco">Chocolate</option> 
<option value="van">Vanilla</option> 
    </select>  
</br> 

    <input type="radio" name="scoop" value="single" checked> Single Scoop<br> 
    <input type="radio" name="scoop" value="double"> Double Scoop<br> 
    <input type="submit" value="Submit"></pre> 

    </form> 
    _END; 
} 
     else 
{ 
$name=$_COOKIE['names']; 
$flavor=$_COOKIE['flavors']; 
$scoop=$_COOKIE['scoop']; 


echo<<<_END 

hi $name Your order of $scoop $flavor ice-cream is on the way! 

<form action="coookie.php" method="post"> 
<input type="hidden" value="yes" name="delete"> 
<input type="submit" value="delete"> 
</body> 
_END; 
} 

?> 

錯誤信息:「嗨!你的冰淇淋訂單是在路上」Cookie不能從崗位設置表單變量

Undefined index: flavors line20 
Undefined index: names line 44 
Undefined index: flavors line 45 
Undefined index: scoops line 46 

我不斷收到上述錯誤和作爲輸出。

能否請你解釋一下如何解決這個錯誤,以及如何設置cookie來存儲值這個代碼,所以我可以顯示數據。

+0

未定義指數:這意味着cookie不會被設置......最終,你可以添加if語句裏面的一個回聲,你應該設置cookie,查看cookie是否設置。只不過是迴應任何廢話,比如'回聲「sadfjasdf」;'只是爲了看看它打印出來或者沒有。如果打印出來,條件滿足,否則條件不符合。另外,你爲什麼不使用'$ _COOKIE [ '變量'] = '值';',而不是'的setcookie()'? –

+0

我只是用'setcoookie()'PHP文檔閱讀之後。我也試着迴應,但它沒有奏效。 @Hallur –

+0

如果echo不起作用,那就意味着if語句的條件不符合。 if(isset($ _ POST ['name'])&&($ _POST ['flavor'])&&($ _POST ['scoop'])) {'這意味着錯誤在於代碼。話雖如此,我現在會寫一個答案。 –

回答

0

正如我所建議的,要回顯。它會告訴你是否一個if語句的條件被滿足......讓我們來舉個例子:

$a = true; 

if ($a == true) { 
echo "test"; 
} 

returns test

$a = "tru"; 

if ($a == true) { 
echo "test"; 
} 

returns nothing

你的情況的錯誤,就是在這條線:

if(isset($_POST['name'])&& ($_POST['flavor']) && ($_POST['scoop'])) { // this line 
setcookie("names", $_POST['name']); 
setcookie("flavors", $_POST['flavor']); 
setcookie("scoops", $_POST['scoop']); 
header("Location: coookie.php"); 
exit(); 
} 

您檢查,看看是否$_POST['name']設置和$_POST['flavor']$_POST['scoop']值是否爲true。在你的情況下,它不是。這也是爲什麼echo測試,那我問你在註釋部分做的不是工作,因爲if語句是不能滿足的條件。

因此

,該行需要改變:

if(isset($_POST['name']) && isset($_POST['flavor']) && isset($_POST['scoop'])) { 
setcookie("names", $_POST['name']); 
setcookie("flavors", $_POST['flavor']); 
setcookie("scoops", $_POST['scoop']); 
header("Location: coookie.php"); 
exit(); 
} 
0

如果聲明缺少isset圍繞兩個瓦爾的。所以

if (!isset($_COOKIE['names']) && !isset($_COOKIE['flavors']) &&(!isset($_COOKIE['scoops']))) 

你的代碼沒有上線20(如果),因爲它試圖讀取「味道」的cookie。然後進入其他和失敗對所有變量。添加isset,你應該看到的內容,如果只要沒有設置餅乾

+0

第20行錯誤消失了,但解析錯誤:語法錯誤,意外的''(T_ENCAPSED_AND_WHITESPACE),出現了'$ name' –