SESSION无法保留价值| PHP代码中的逻辑错误

时间:2012-09-23 17:30:35

标签: php session

我的计划目标 1.我的网站上各显示5-6个圆圈。 2.每当点击一个圆圈时,它应该永久地变为红色或绿色。

这是我的代码:

<?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>

此计划会发生什么? 只要点击一个圆圈,它就会变成红色。单击第二个圆圈时,它变为绿色,第一个圆圈显示为蓝色。然而,当点击第二个圆圈时,第一个圆圈应显示为红色,第二个圆圈显示为绿色。

就我个人而言,此计划存在逻辑或概念错误。如果有人能告诉我哪里出错了,我会很高兴。我一直试图弄清楚这几个小时。

2 个答案:

答案 0 :(得分:2)

$ SESSION不能以数字键开头,附加类似圆圈的内容,例如:

$_SESSION['circle_'.$i]

希望有所帮助。我在我的系统上测试了它,这解决了这个问题。

答案 1 :(得分:1)

一次只能提交一个表单。如果单击第一个图像,其他图像的代码将进入else分支(“检查以前是否单击过图像”)并将颜色重置为蓝色。顺便说一句:只有所述分支中的“蓝色”行可以执行任何操作,您可以删除其余部分。此外,在将会话字段设置为“蓝色”之前,应检查会话字段是否为空。