2013-03-06 81 views
0

我在php中有一个电子邮件表单,它有3种可能的外观。解析php中的回声

首先,当提交按钮没有被使用时,我希望它出现标准。

其次,提交HAS被点击并且没有设置数据。

第三,当数据输入可接受时,我想显示输入内容。

但是,我是一个完全的PHP新手,我似乎并没有把它弄清楚。 。?

<?php 
    if(isset(sent)) { 
     if(isset($_POST['forename']) && !empty($_POST['forename']) { 
      echo('<input class="tbox" type="text" name="forename" value="$POST['forename']" /><br>'); 
     } else { 
      echo('<input class="tbox bad" type="text" name="forename" value=""/><br>'); 
     } 
    } else { 
     echo('<input class="tbox" type="text" name="forename" value="" /><br>') ; 
    } 
?> 

我假设的错误是“S和的我得到意想不到的)异常应该如何回声线被构造为避免这种

+0

嵌套的if缺少a)。我曾尝试类似的解决方案,以前提出的两个建议,但似乎不是问题。验证特殊字符非常有用,谢谢! – Glenn 2013-03-06 18:16:09

回答

3

这是你的问题:

echo('<input class="tbox" type="text" name="forename" value="$POST['forename']" /><br>'); 

变量没有得到解析内单引号,只用双引号。

一个简单的解决办法是:

echo '<input class="tbox" type="text" name="forename" value="' . htmlspecialchars($POST['forename']) . '" /><br>'; 

请注意,我用htmlspecialchars避免你的变量打破了HTML。当你使用echo(不伤害,但......)时,你也不需要使用括号。

1

此行是导致错误:

echo('<input class="tbox" type="text" name="forename" value="$POST['forename']" /><br>'); 

你必须Concat的与弦的其他两个部分的价值和它的$_POST,而不是$POST

'[…]value="' . $_POST['forename'] . '"[…]' 

你也至少应该使用htmlentities的值的输入不会打破你的HTML:

htmlentities($_POST['forename'], ENT_QUOTES, "UTF-8")