PHP表单验证,刷新后保持字段值


PHP form validation, keep field values after refresh

我目前正在为一个网站制作注册/验证脚本,偶然发现了一个问题。

我使用所有PHP来验证,并使用if语句来回显错误数组。

我的问题是:我如何保持用户的输入值在刷新后的形式?我必须学习AJAX吗?

  • 注意:我正在考虑的文件是register.php,它将数据发送到同一页面(action = "")。form_handle.php是包含在register.php
  • 最顶部/开始的实际验证脚本。

form_handle.php CODE:

    $errors = array();
if( empty($safe_fname) || 
    empty($safe_lname) || 
    empty($safe_email) || 
    empty($safe_email_again) || 
    empty($safe_password) )
        { 
        $errors = '<p>One or more fields left empty'; 
        }
elseif( strlen($safe_password) < 6)
    { 
    $errors = '<p>Password must be atleast 6 charcters long.</p>'; 
    }
elseif($safe_email != $safe_email_again)
    { 
    $errors = '<p>E-mails do not match.</p>'; 
    } 

The form CODE:

       <h2>Sign up Today!</h2>
          <form method="post" action="">
                   <span class="p" id="p1"></span><br/> 
          <input name="first_name" id="first" class="register_form cap" type="text" placeholder="First Name" />
              <br/><span class="p" id="p2"></span><br/> 
      <input name="last_name" id="second" class="register_form cap" type="text" placeholder="Last Name" />
          <br/><span class="p" id="p3"></span><br/> 
      <input name="email" id="third" class="register_form" type="text" placeholder="E-mail" />
          <br/><span class="p" id="p4"></span><br/> 
      <input name="email_again" id="fourth" class="register_form" type="text" placeholder="Re-enter E-mail" />
          <br/><span class="p" id="p5"></span><br/> 
      <input name="password" type="password" class="register_form" placeholder="Password" />
          <br/><span class="p" id="p1"></span><br/>   
      <input name="submit" id="fifth" class="register_form" type="submit" value="Create!" />
      </form>
</div>

你的代码应该像

<input type='text' name='first_name' value='<?php echo $_POST['first_name']; ?>' />

这样做并避免大量代码和错误的快速方法如下:

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

您可以尝试如下操作-

<input name="first_name" id="first" class="register_form cap" type="text"
    <?php
    if(isset($_POST['first_name'])) {
        echo "value='".$_POST['first_name']."'";
    } else {
        echo "placeholder='First Name'";
    }
    ?>
    />

有点晚了,但是从PHP 7.0开始。您可以使用null合并(??)二进制运算符。左操作数是要求值的表达式,右操作数包含在表达式不存在或为null时使用的值。这简化了代码阅读,并消除了由于表达式复制而导致的打字错误的可能性:

<expression> ?? <if-null-value>

等价于:

isset(<expression>) ? <expression> : <if-null-value>

基于此,我建议对问题的答案如下:

<input type='text' name='first_name' value='<?php echo $_POST['first_name'] ?? ''; ?>' />