2012-09-23 49 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分支(“以检查图像是否先前被点击过”),并将颜色重置为蓝色。顺便说一句:只有在所述分支中的“蓝色”线做任何事情,你可以删除其余的。此外,您应该检查会话字段是否为空,然后将其设置为“蓝色”。