用于isset表单POST值的PHP Shorthand


PHP Shorthand for isset form POST value

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

<p><input type="text" name="transmission" value="" /></p>
<p><input type="text" name="model" value="<?=$model;?>" /></p>

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

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

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

如果有人能为我指明方向,我将不胜感激。

谢谢!

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

$name = isset($_POST['submit']) ? $_POST['name'] : null;

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

<p><input type="text" name="name" value="<?php echo $name ?>" /></p>

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

正如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] ='';
  }
}

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

<p><input type="text" name="name" value="<?=$FORM['name']?>" /></p>

如果不深入说明不使用<p>构建表单的原因,那么除了删除else之外,没有什么可做的。

<p><input type="text" name="name" value="<?php if isset($_POST['name'])) echo $_POST['name']; ?>" /></p>

短手<?=$_POST['name'] ?: ''?>

使用php错误控制运算符:@。

<?php
   $posted_text = @$_POST['posted_text'];
   echo $posted_text
?>  

如果设置了POST变量,它将被回显。否则,什么都不会出现。

你可以试试这个。。。

$_POST['submit'] ? echo $_POST['name'] : echo '';

我使用的是布尔比较,而不是isset函数(见表格链接(

http://www.php.net/manual/en/types.comparisons.php

或者另一种选择是…

echo ($_POST['submit'] ? $_POST['name'] : '');
<?= isset($_POST['submit'])? $_POST['name'] : ""; ?>

是你能得到的最短的,除了说<?= $_POST['name']; ?>(如果提交没有设置名称应该是空的(-你可能需要关闭警告

尽管如此,这是非常非常糟糕的做法,并为您打开了跨站点脚本(XSS(的大门。您应该不要这样做。即使在intranet上,如果攻击者拥有可以访问它的计算机,他们也可以使用XSS执行用户可以执行的任何操作。

根据你的问题以及你对这种屏幕上的回声有多反感,我建议你使用某种形式的模板库,比如Smarty。这允许你的html代码看起来像这样:

<p><input type="text" name="name" value="{name}" /></p>

我刚刚从wordpress编码标准中看到了这一点。尽管它们不鼓励可读性。。

isset( $var ) || $var = some_function();

此处引用