2015-04-25 149 views
1

我一直在練習PHP和mongodb。我正在開發一個簡單的Web應用程序,但使用OOP。PHP註冊錯誤驗證

我創建了一個名爲user的類,它有我的方法來處理像addUser,deleteUser等用戶。對於添加用戶,我希望表單執行一些簡單的驗證任務,但我不知道如何。這裏是類添加一個新用戶:

function createUser($username, $name, $email, $password){ 


      $user = array(
       'username' => $username, 
       'name' => $name, 
       'email' => $email, 
       'password' => $password 

      ); 

      if ($this->db->count(array('username' => $username)) == 0) { 
       $this->db->insert($user); 
       return true; 

      } else { 
       echo 'username taken'; 
      } 



    } 

和HTML:

<?php 


session_start(); 
include_once 'user.php'; 
include './templates/header.php'; 


if (isset($_POST['register']) && ($_POST['register']) == ($_POST["register"])) { 


       $user = new User(); 
       $return = $user->createUser(
        $_POST['username'], 
        $_POST['name'], 
        $_POST['email'], 
        $_POST['password'], 
        $_POST['password2']); 

     } 
     if ($return == true) { 
      echo 'you have successfully registered'; 
     } else { 
      echo '</br>' . 'sorry, try again'; 
     } 





?> 
<div class="container"> 
    <div class="jumbotron"> 
     <form method="post" action=""> 
      <label>Username: </label><br> 
      <input name="username" type="text" ><br><br> 

      <label>Name: </label><br> 
      <input name="name" type="text"><br><br> 

      <label>Email: </label><br> 
      <input name="email" type="email" ><br><br> 

      <label>Password: </label><br> 
      <input name="password" type="password" ><br><br><br> 

      <label>Repeat Password: </label><br> 
      <input name="password2" type="password" ><br><br><br> 

      <input name="register" class="btn btn-primary btn-lg" type="submit" value="Register"><br> 
     </form> 
    </div> 
</div> 

請隨時糾正我,你可能會發現其他的錯誤。我知道肯定會有一些。

+0

[請儘量提高你的拼寫。(http://meta.stackoverflow.com/questions/291362/my-question-was-downvoted-closed-because-它是完全的語法錯誤,wh) – peterh

+0

也許你會在http://codereview.stackexchange.com有更好的運氣。 – peterh

+0

你應該確保你***從不***使用未驗證的輸入並從中創建一個數據集。精心製作的用戶名或類似的東西可以用來對你的數據庫做非常糟糕的事情。這種攻擊過去被稱爲SQL注入。使用正則表達式確保在不需要特殊字符的地方使用它是一個好的開始。其次,在嘗試將其保存到數據庫之前,您應該始終***引用用戶輸入。 –

回答

1

我爲你寫一個簡單的例子,它簡單而有用的

class validation { 
     public $currentValue; 
     public $values = array(); 
     public $errors = array(); 

     public function __construct() { 
      parent::__construct(); 

      // echo "burasi model sayfasi "; 


     } 

     public function post($key){ 
      if(isset($_POST[$key])){ 
      $this->values[$key]  = $_POST[$key]; 
      $this->currentValue = $key; 
      return $this; 
     }else{ die("hi boo boo ! your form values are empty");} 

      } 
    public function isEmpty(){ 
     if(empty($this->values[$this->currentValue])){ 
      $message='the form is emppty'; 
      $this->errors[$this->currentValue]['empty'] =''.$message.''; 
     } 
     return $this; 
    } 
    public function submit(){ 
     if(empty($this->errors)){ 
      return true; 
     }else{ 
      return false; 
     } 
    } 
    } 

這是一個例子,所以你如何使用它? 首先你需要喲調用類

$form = new validation(); 
    $form->post("all you need just write post name here ") 
->isEmpty(); 
if($form->submit()){ 
//everyting is ok ! 
you cann add delet or update data 
}else{ 
$data["error"] = $form->errors; // and we sett the errorr mesages to the array now you can show the user the errormesages ! well done 
} 
} 
+0

感謝您抽出時間爲我撰寫這篇文章,我即將嘗試實施它@ahmet atak – ORYON100

+0

不客氣 –