2012-09-23 74 views
0

我的程序目標 1.我的網站上分別顯示5-6個圓圈。 2.每當點擊一個圓時,它應該永久變爲紅色或綠色。SESSION無法保留值| PHP代碼中的邏輯錯誤

這裏是我的代碼:

<?php session_start(); ?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Let's see !</title> 
</head> 
<body> 
<?php 
define("SIZE", 5); 


for ($i = 0 ; $i < SIZE ; $i++) //Initializes all Color Blocks to BLUE if not clicked 
    { 
     //If Image has been clicked, it takes a Color RED or GREEN 
      if (isset($_POST[$i."form"])) 
     { 
      if($i % 2 == 0) 
      $_SESSION[$i] = "green.jpg"; 
      else 
      $_SESSION[$i] = "red.jpg"; 
     } 
     else 
     { //to check if image was previously clicked. 
      if ($_SESSION[$i] == "green.jpg") 
       $_SESSION[$i] = "green.jpg"; 

      elseif ($_SESSION[$i] == "red.jpg") 
       $_SESSION[$i] = "red.jpg"; 
      else //if never clicked it will be made blue. 
       $_SESSION[$i] = "blue.jpg"; 
     } 
    } 

for ($i = 0 ; $i < SIZE ; $i++) 
{ 
?> 
<form method="POST" action="index.php"> 
<input type="image" width=120 src="<?php echo $_SESSION[$i]; ?>" name="mainin"/> 
<input type="hidden" name="<?php echo $i."form"; ?>" value="" /> 
</form> 
<?php } 
echo session_id(); //Sessions are working correctly. No issue with them. 
?> 
</body> 
</html> 

此計劃會發生什麼? 每當一個圓圈,被點擊它變成紅色。點擊第二個圓圈後,變爲綠色,第一個圓圈顯示爲藍色。而點擊第二個圓圈時,第一個圓圈應顯示爲紅色,第二個圓圈顯示爲綠色。

就我所知,這個程序中存在邏輯或概念錯誤。如果有人能告訴我我錯了什麼地方,我將會很棒。我一直試圖弄清楚這幾個小時。

+0

請粘貼您的html表單代碼。 – GBD

+0

以一個簡單的'var_dump($ _ POST)'開始,以便您可以驗證您認爲提交的原因* *實際提交了。將輸出(瀏覽器源代碼中的視圖)添加到問題中。 – hakre

+0

HTML表單代碼已經存在。請向下滾動一下。 –

回答

2

$ SESSION的不能用數字鍵開始,隨着像圓追加他們,例如:

$_SESSION['circle_'.$i] 

希望有所幫助。我在我的系統上測試了它,這解決了這個問題。

+0

謝謝噸。我閱讀了關於PHP的最好的書籍之一,但沒有提到這種情況。你是一個真正的魅力。再次感謝。 –

+0

沒問題,我建議將您的PHP錯誤報告轉換爲更嚴格的設置,因爲我的設置在嘗試將值分配給數字會話時顯示錯誤。 :-)。 – David

+0

好的。我將下面的'error_reporting = E_ALL'添加到我的php.ini文件中。我希望這就是你的意思。 –

1

一次只能提交一個表單。如果您點擊第一張圖像,其他圖像的代碼會進入else分支(「以檢查圖像是否先前被點擊過」),並將顏色重置爲藍色。順便說一句:只有在所述分支中的「藍色」線做任何事情,你可以刪除其餘的。此外,您應該檢查會話字段是否爲空,然後將其設置爲「藍色」。