簡體   English   中英

php 中的注冊表單

[英]registration form in php

 $error1=''; 
 $error2=''; 
$error3=''; 
$error4=''; 
$error5=''; 
$error6='';

$yourname='';
$email='';
$email2='';
$password='';
$password2='';
$country='';

     if (isset($_POST['Registerme']))
       { 

$_POST['yourname']=$yourname;
$_POST['email']=$email;
$_POST['email2']=$email2;
$_POST['password']=$password;
$_POST['password2']=$password2;
$_POST['country']=$country;

if($yourname==''){

    $error1='name required';

    } 


if($email==''){

    $error2='email required';

    } 
if($email2==''){

    $error3='required field';

    } 


if($password==''){

    $error4='password required';

    } 


    if($password2==''){

    $error5='required field';

    } 


if($country==''){

    $error6='country required';

    } 



       if(empty($error1) && empty($error2) && empty($error3) && empty($error4) &&     empty($error5) && empty($error6))

      {echo 'mysql query goes here and add the user to database';}

       }///main one

      else {$error1=''; 
     $error2=''; 
         $error3=''; 
         $error4=''; 
          $error5=''; 
            $error6='';}

這是一個注冊驗證腳本。 在我的注冊表單中有兩個 email 和密碼 filelds.second 字段用於確認。我想檢查天氣用戶在這兩個字段中輸入的相同信息。如果我想在這個腳本中這樣做,我應該使用另一個 if 語句嗎? 或者我應該使用 else if? 我對那一步感到困惑...

在第二個 if 語句中添加附加條件。 例如

if($email=='' || $email != $email2){
...

只需添加簡單的檢查。 我不會將檢查與一般密碼檢查結合起來——我可以想象你想告訴用戶究竟出了什么問題。

if ($password1 !== $password2) {
    // Add an specific error saying the passwords do not match.
}

我會將松散錯誤的用戶替換為如下數組:

$aErrors = array();

if ($password1 !== $password2) {
    $aErrors[] = 'Another specific error!';
}

if (empty($password1) || empty($password2)) {
    $aErrors[] = 'Another specific error';
}

if (empty($aErrors)) {
    // Process the form!
}

你的代碼有很多問題。

1. You are assinging $_POST['key'] = $somevalue, while I think you mean $somevar = $_POST['key']
2. Use an array for all error messages as it'll make your life a bit easier ..
3. To compare password use something like
if ($password1 !== $password2) {
}

所以.....

$errors = array();

所以你會檢查類似..

if ($password1 !== $password2) {
  $errors[] = 'Password dont match';
}

if(count($errors) > 0) { //if there are errors
foreach($errors as $err) {
  echo $err.' <br />';
}
} else {
// whatever you want to do if no error
}

我還建議在查詢中使用 $_POST 值之前對其進行清理。 我希望它有所幫助。

我認為你的意思是這樣做:

$yourname = $_POST['yourname'];
$email = $_POST['email'];
$email2 = $_POST['email2'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$country = $_POST['country'];

其次,這使用了一個錯誤數組:

$errors = array();

第三次使用嵌套 ifs(只是一個建議)

     if (!empty($_POST['password1'])) {
          if ($_POST['password1'] != $_POST['password2']) {
              $errors[] = '<font color="red">The 2 passwords you have entered do not match.</font>';
          } else {
              $password = $_POST['password1'];
          }
      } else {
          $errors[] = '<font color="red">Please provide a password.</font>';
      }

一些評論:

  • 你必須清理輸入! 查看使用 php 清理用戶輸入的最佳方法
  • 你的任務:而不是“$_POST['yourname']=$yourname;” 它應該是“$yourname=$_POST['yourname'];”。
  • 您使用了很多變量來控制錯誤,然后如果一切順利,您只需忘記最后一個 else 塊中的錯誤消息。 對錯誤字符串使用某種數組,並使用它!
  • 你確定你沒有驗證用戶名/密碼不包含空格或奇怪的字符,或者電子郵件是有效的嗎?

一些示例代碼...:

// Simple sanitize function, complete it
function sanitize_input ($inputstr) {
    return trim(mysql_real_escape_string($inputstr));
}

if (isset ($_POST['Registerme']) {
    // array of error messages to report
    $error_messages = array();
    $isvalid = true;

    // Assignment 
    $yourname = sanitize_input ($_POST['yourname']);
    $email = sanitize_input ($_POST['email']);
    $email2 = sanitize_input ($_POST['email2']);
    $password = sanitize_input ($_POST['password']);
    $password2 = sanitize_input ($_POST['password2']);
    $country = sanitize_input ($_POST['country']);

    // Validation
    if (empty ($yourname)) {
        $error_messages[] = "You must provide an username";
    } 

    if (empty ($password)) {
        $error_messages[] = "You must provide a password.";
    }
    elseif ($password !== $password2) {
        $error_messages[] = "Passwords do not match.";
    }

    // Same for email, you caught the idea

    // Finally, execute mysql code if all ok
    if (empty($error_messages)) {
       // Execute mysql code
       isvalid = true;
    }
}

// After form processing, use isvalid which is false if there are errors
// and the error_messages array to report errors

暫無
暫無

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

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