我正在创建一个表单,我正在寻找更有效的方法来做事。到目前为止我所拥有的是:
<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>
但必须有一个更短的方法来做到这一点。
如果有人能指出我的方向,我会非常感激。
谢谢!
答案 0 :(得分:18)
您可以在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
答案 1 :(得分: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] ='';
}
}
然后你有光滑而整洁的模板:
<p><input type="text" name="name" value="<?=$FORM['name']?>" /></p>
答案 2 :(得分:1)
不考虑不使用<p>
构建表单的原因,除了删除else
之外,没有太多可以做的事。
<p><input type="text" name="name" value="<?php if isset($_POST['name'])) echo $_POST['name']; ?>" /></p>
答案 3 :(得分:1)
速记<?=$_POST['name'] ?: ''?>
答案 4 :(得分:0)
你可以试试这个......
$_POST['submit'] ? echo $_POST['name'] : echo '';
我正在使用布尔比较而不是isset函数(请参阅表的链接)
http://www.php.net/manual/en/types.comparisons.php
或其他选项是......
echo ($_POST['submit'] ? $_POST['name'] : '');
答案 5 :(得分:0)
<?= isset($_POST['submit'])? $_POST['name'] : ""; ?>
除了说<?= $_POST['name']; ?>
之外,你得到的最短是什么(如果提交不是设置名称应该是空的) - 你可能需要关闭警告。
所有这一切,这是非常糟糕的做法,并打开你到cross site scripting (XSS)。你应该不这样做。即使在内联网上,如果攻击者拥有可以访问它的计算机,他们也可以使用XSS执行用户可以执行的任何操作。
根据您的问题以及您对屏幕上此类回声的厌恶程度,我建议您使用某种形式的模板库,例如Smarty。这允许您的html代码如下所示:
<p><input type="text" name="name" value="{name}" /></p>
答案 6 :(得分:0)
答案 7 :(得分:0)
使用php error control运算符:@。
<?php
$posted_text = @$_POST['posted_text'];
echo $posted_text
?>
如果设置了POST变量,它将被回显。如果没有,任何事都不会出现。