簡體   English   中英

PHP表單驗證,刷新后保留字段值

[英]PHP form validation, keep field values after refresh

我目前正在為一個網站制作一個注冊/驗證腳本,並偶然發現了一個問題。

我正在使用所有 PHP 來驗證並使用 if 語句來回顯錯誤數組。

我的問題是:如何在刷新后將用戶的輸入值保留在表單中? 我必須學習 AJAX 嗎?

  • 注意:我關注的文件是register.php ,它將數據發送到同一頁面( action = "" )。 form_handle.php是包含在register.php最頂部/開頭的實際驗證腳本

form_handle.php代碼:

    $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代碼:

       <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.x 開始,您可以使用空合並 ( ?? ) 二元運算符。 左側操作數是要計算的表達式,右側操作數包含要在表達式不存在或為null 時使用的值 這簡化了代碼閱讀並消除了由於表達式復制而導致的拼寫錯誤的可能性:

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

相當於:

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

基於此,我建議對問題做出以下回答:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM