在所有相关位置重命名PHP变量会导致POST代码失败


Renaming a PHP variable on all relevant places, causes POST code to fail?

我得到了这个代码:

<form action="go.php" method="POST" target="_blank">
<input name="a" type="hidden" value="1"  />
<input type="submit" class="something" value="GOOD">
</form>

这是go.php:

<?php 
if(isset($_POST['a']));
switch ($_POST['a']) {
    case "1":
        $param1 = "nice";
        break;
    case "2":
        $param1 = "great";
        break;
    default:
        $param1 = "other";
}
?>  
<!doctype html>
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php echo $param1; ?>
</body>
</html>

当我以这种方式提交表单时,我收到了"nice"消息。但是,如果我在所有三个相关的地方将a的名称更改为b,就像这样:

<input name="b" type="hidden" value="1" />

if(isset($_POST['b']));

switch ($_POST['b']) {

我收到了"other"的信息,而不是" nice "。

这怎么可能呢?

if(isset($_POST['a']));
应:

if(isset($_POST['a'])){ // <-- curly brace, not semi-colon

我无法想象在你改变$_POST

之前这是怎么工作的

处理部分有一个小语法错误:

if(isset($_POST['a']));
switch ($_POST['a']) {
应:

if(isset($_POST['a'])){
    switch ($_POST['a']) {
    case "1":
    //same as before
    }//switch
}//end if - don't forget the closing bracket