检查$ _GET变量失败

时间:2014-05-03 18:52:18

标签: php html forms action

我正在创建一个PHP页面,在一个页面中我想根据哪个$_GET["action"]显示主HTML。无论哪个if ($action == "xxx")条件

// Action Judgement
$action = isset($_GET["action"]) ? $action : 'form';
$action = isset($action) && in_array($action, array('form', 'submit')) ? $action : 'form';

if($action == "form") { ?>
    // only html <form>...</form> codes here
<?php } elseif($action == "submit") { ?>
    // only php codes for processing here
<?php } ?>

如果我将此网址设为abc.php?action=submit,则HTML代码会显示在页面中。我的编码错了吗?

3 个答案:

答案 0 :(得分:6)

你的第一行错了。通过

替换它来修复它
$action = isset($_GET["action"]) ? $_GET["action"] : 'form';

或者您甚至可以通过

改进它
$action = ( isset($_GET["action"]) && !empty($_GET["action"]) ) ? $_GET["action"] : 'form';

甚至更好(建议Ben D

$action = !empty($_GET["action"]) ? $_GET["action"] : 'form';

答案 1 :(得分:3)

你混淆了变量和形式。

if($action == "form") {
    echo "only html <form>...</form> codes here";
} else if($action == "submit") {
    only php codes for processing here
}

答案 2 :(得分:2)

$action = isset($_GET["action"]) ? $_GET['action'] : 'form';
$action = isset($action) && in_array($action, array('form', 'submit')) ? $action : 'form';