检查$ _GET变量失败

Aki*_*Eru 0 html php forms action

我正在创建一个PHP页面,在一个页面中我想基于哪个显示主HTML $_GET["action"].无论哪种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 } ?>
Run Code Online (Sandbox Code Playgroud)

如果我这样放置URL abc.php?action=submit,HTML代码就会显示在页面中.我的编码错了吗?

Got*_*bel 6

你的第一行是错的.通过替换它来修复它

$action = isset($_GET["action"]) ? $_GET["action"] : 'form';
Run Code Online (Sandbox Code Playgroud)

或者你甚至可以通过服用来改善它

$action = ( isset($_GET["action"]) && !empty($_GET["action"]) ) ? $_GET["action"] : 'form';
Run Code Online (Sandbox Code Playgroud)

甚至更好(正如Ben D建议的那样)

$action = !empty($_GET["action"]) ? $_GET["action"] : 'form';
Run Code Online (Sandbox Code Playgroud)