PHP isset形式POST值的简写

Dre*_*rew 13 php forms variables isset

我正在创建一个表单,我只是在寻找更有效的方法来做事.到目前为止我所拥有的是:

<p><input type="text" name="transmission" value="" /></p>
<p><input type="text" name="model" value="<?=$model;?>" /></p>
Run Code Online (Sandbox Code Playgroud)

因此,其中一些将具有已设置的值,并且一些将是空白的.我想要做的是查看表单是否已设置,如果它已经使用$ _POST ['name']作为值,如果没有,则使用空白或使用我以前的变量.

<p><input type="text" name="name" value="<?php if isset($_POST['submit'])) { echo $_POST['name']; } else { echo ""; } ?>" /></p>
Run Code Online (Sandbox Code Playgroud)

但必须有一个更短的方法来做到这一点.

如果有人能指出我的方向,我会非常感激.

谢谢!

Naz*_*riy 18

您可以在HTML输出之前在脚本开头定义变量,例如:

$name = isset($_POST['submit']) ? $_POST['name'] : null;
Run Code Online (Sandbox Code Playgroud)

在你的html部分,你可以打印$ name而不用担心它没有被定义

<p><input type="text" name="name" value="<?php echo $name ?>" /></p>
Run Code Online (Sandbox Code Playgroud)

此外,如果$ _POST ['submit']不包含任何值,则更有可能收到FALSE语句.要避免此类问题,请使用array_key_exists


You*_*nse 5

就像Nazariy说的那样,你应该尽可能避免模板中的PHP.
实际上,您应该只在模板中准备好变量.

所以,在你的代码中有这样的东西

$FORM = array();
$form_fields = array('name','sex');
foreach($form_fields as $fname) {
  if (isset($_POST[$fname])) {
    $FORM[$fname] = htmlspecialchars($_POST[$fname]);
  } else {
    $FORM[$fname] ='';
  }
}
Run Code Online (Sandbox Code Playgroud)

然后你有光滑和整洁的模板:

<p><input type="text" name="name" value="<?=$FORM['name']?>" /></p>
Run Code Online (Sandbox Code Playgroud)