0

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

首先,当未使用提交按钮时,我希望它显示为标准。

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

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

但是,我是一个完全的 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 和 's。我得到一个意外的 ) 异常。应该如何构造回声线以避免这种情况?

4

2 回答 2

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(虽然没有害处......)。

于 2013-03-06T17:56:48.840 回答
1

此行导致错误:

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

您必须将该值与字符串的其他两个部分连接起来,$_POST而不是$POST

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

您还应该至少使用htmlentities输入不会破坏您的 HTML 的值:

htmlentities($_POST['forename'], ENT_QUOTES, "UTF-8")
于 2013-03-06T17:56:33.333 回答