簡體   English   中英

注冊表格在php驗證

[英]Registration form Validation in php

我在這里幾乎沒有關於驗證的問題

  1. 下面的代碼效果很好但是可以使用這么多elseif嗎?
  2. 我還將使用客戶端驗證,因此我可以在同一頁面上同時具有服務器端驗證和客戶端驗證代碼。

     if( $firstname == "" ) { $er='Enter your First name'; } elseif( $lastname == "" ) { $er='Enter your Last name'; } elseif( $firstname == $lastname ) { $er='First name and last name cannot be same'; } elseif( $username == "" ) { $er='Enter your username'; } elseif( $password == "" ) { $er='Enter your password'; } elseif( strlen($password) < 6 ) { $er='Password must be more than 6 characters'; } elseif( $password != $password2 ) { $er='Password and confirm password does not match!'; } elseif( $email != "" && !preg_match( "/^([a-zA-Z0-9])+([a-zA-Z0-9\\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\\._-]+)+$/", $_POST["email"] ) ) { $er='Enter valid email'; } elseif($q->rowCount() > 0) { // $q is statement used to select username from db $er='The username '.$username.' is already taken!'; } elseif($s->rowCount() > 0) { // $s is statement used to select email from db $er='The email '.$email.' is already registered, choose another!'; } else { // some pdo statement to insert data if ($stmt->rowCount() == 1) { header("Location:userarea.php"); } else { echo "error"; } } 

1)太多的if-else語句很好地表明設計不佳。 您應該使用驗證類或編寫自己的驗證類。 有點偏離主題,但這段代碼讓我想起了我們在20世紀90年代的日子:)為什么你不至少使用微框架而不是一次又一次地重新發明輪子......

2)您可以檢測是否使用ajax進行呼叫:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  ...
}

所以在控制器中你收集數組中的驗證錯誤,如果是AJAX請求將其轉換為JSON並執行ajax驗證(檢查jquery驗證器),如果不是簡單地處理錯誤,就像你沒有ajax一樣。 我必須警告,這顯然不會像純客戶端驗證一樣響應,但是,一遍又一遍地定義所有這些驗證規則是無聊的。 這就是為什么我們現在使用框架來緩解痛苦......

嘗試這個:

if (empty($_POST["fname"]))
{
    $nameErr = "Your First Name Is Missing";
}
        else
    {
        $name = $_POST['name'];

        if (!preg_match("/^[a-zA-Z a-zA-Z]*$/", $name))
        $nameErr = "Your Name Is Missing";
}


if (empty($_POST["age"]))
     {
    $ageErr = "Your Age Is Missing";
}
        else
    {
        $age = $_POST['age'];

        if (!preg_match("/^[0-9]*$/", $age))
        $nameErr = "Your Age Is Missing";
}

當您驗證這么多字段時,您將需要JS或jQuery來驗證而不是刷新頁面,因為這會讓用戶感到討厭,因為頁面會不斷重新加載不同的錯誤。 最好的選擇是使用jQuery驗證。

暫無
暫無

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

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