Php 检查表单错误后,将表单数据保留在输入字段中

Php 检查表单错误后,将表单数据保留在输入字段中,php,html,forms,Php,Html,Forms,我有一个小表单,我用php做了一些简单的错误检查,看起来一切都很好,但我注意到当用户提交表单时,在错误检查发生后,所有数据都从字段中删除 这是我的 <?php if($show=="true"):?> <input name="fname" type="text" value="<?php if(isset($_POST['name']){echo $_POST['name';]})?>"><?php echo $errorname; ?> &l

我有一个小表单,我用php做了一些简单的错误检查,看起来一切都很好,但我注意到当用户提交表单时,在错误检查发生后,所有数据都从字段中删除

这是我的

<?php if($show=="true"):?>
<input name="fname" type="text" value="<?php if(isset($_POST['name']){echo $_POST['name';]})?>"><?php echo $errorname; ?>

<input name="email" type="text" value="<?php if(isset($_POST['name']){echo $_POST['name';]})?>"><?php echo $erroremail; ?>
<input type="submit" value="submit">
<?php else: ?>
<h2>Your Message was sent</h2>

 <?php endif;?>
<?php
    if(empty($_POST['name'])){
         $show="true";
         $errorname="please enter your name";
     }
     elseif(empty($_POST['email'])){
        $show=true;
        $erroremail="please end your email";
     }else
        $show=false;
        //Send data as email;

    ?>


如果您只想检查字段是否为空(这很奇怪),您可以使用上次提交时的post值。之后,只需使用
empty()
,如果确实存在错误,请将它们放入数组中(收集它们),并在提交后打印它们。考虑这个例子:

<?php
$errors = array();

if(isset($_POST['submit'])) {
    $fname = trim($_POST['fname']);
    $email = trim($_POST['email']);

    if(empty($fname)) {
        $errors['fname'] = 'please enter your name';
    }
    if(empty($email)) {
        $errors['email'] = 'please enter your email';
    }
}
?>

<form method="POST" action="index.php">
    Name: <input type="text" name="fname" value="<?php echo isset($_POST['fname']) ? $_POST['fname'] : ''; ?>" /> <span style="color: red;"><?php echo isset($errors['fname']) ? $errors['fname'] : ''; ?></span><br/>
    Email: <input type="text" name="email" value="<?php echo isset($_POST['email']) ? $_POST['email'] : ''; ?>" /> <span style="color: red;"><?php echo isset($errors['email']) ? $errors['email'] : ''; ?></span><br/>
    <input type="submit" name="submit" value="Submit" />
</form>

<?php if(isset($_POST['submit']) && empty($errors)): ?>
    <h2>Your Message was sent.</h2>
<?php endif; ?>


名称:在这种情况下,您使用AJAX请求吗?不,我没有,我从未使用过AJAX。这是实现这一点的方法吗?OT:不要使用
的“true”和
的“false”字符串,使用内置的布尔值
的true和false。这样你就可以只写
if($show)
。除了在if/else中,你在哪里设置
$show
的值?
echo$\u POST['name';]
无效。
必须在括号外:
echo$\u POST['name']。这是复制错误吗?