2017-09-12 9 views
1

現在、OOP php経由で配列を検証していますので、後で追加することができますが、有効な電子メールアドレスを挿入しても検証に失敗する場合があります。私は、さらに私は、出力異なる結果がしかし、常に失敗するようで述べたように、電子メール機能は、任意のアドバイスはOOPのバリデーションPHP

class Login 
{ 
    private 
    $email, 
    $password, 
    $database, 
    $db = null; 

    public function __construct() 
    { 
     $this->db = new Database; 
    } 

    public function validEmail($email) 
    { 
     return (filter_var($email, FILTER_VALIDATE_EMAIL) !== FALSE); 
    } 
} 






     <?php 
require "classes/Login.class.php"; 
$validate = new Login(); 

     require "loadclasses.php"; 

      if ($_SERVER['REQUEST_METHOD'] == 'POST') 
      { 
       $email = $pass = ""; 
       $post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);  

       $email = $post['email-login']; 
       $pass = $post['password-login'];   
       $errors = array(); 


       $fields = array(
       'email-login' => array(  
        'validate' => 'validEmail', 
        'message' => 'Enter a valid email address' 
        ) 
       ); 


       foreach($fields as $key => $value) 
       { 
        if(isset($fields[$key])) 
        { 
         $errors[] = ['name' => $key, 'error' => $fields[$key]['message']]; 
        } 
       } 



       if(empty($errors)) 
       { 
        $success = ['response' => 'true']; 
        session_start(); 
       } 

      } 



     header('Content-Type: application/json'); 
     if (empty($errors)) 
     { 
      echo json_encode($success); 
     } 
     else 
     { 
      echo json_encode(["errors" => $errors]); 
     }   
+1

どこのLoginクラスも使用していません。これは意味をなさない。 – yivi

答えて

0

は、すでに述べたように認識されるだろうかどうかをチェックするためにさまざまな異なる事業をしようとした、全くわからないんだけど、間違ったけどあなたのLoginクラスの関数を使用しないでください。以下のようなものさ

$fields = array(
    'email-login' => array(  
    'validate' => 'validEmail', 
    'message' => 'Enter a valid email address' 
) 
); 

foreach($fields as $key => $value) 
{ 
    // isset($fields[$key]) is ALWAYS true 
    if(isset($fields[$key])) 
    { 
     $errors[] = ['name' => $key, 'error' => $fields[$key]['message']]; 
    } 
} 

あなたが本当に何をすべき:どのように現在のコードが動作するので

$fields = array(
    'email-login' => array(  
    'validate' => 'validEmail', 
    'message' => 'Enter a valid email address' 
) 
); 
// instantiate object of Login class 
$login = new Login(); 

foreach($fields as $key => $value) 
{ 
    // call a function `$value['validate']` (it is `validEmail`) 
    $validation_result = $login->{$value['validate']}($email); 

    // if validation fails - add error message 
    if(!$validation_result) 
    { 
     $errors[] = ['name' => $key, 'error' => $value['message']]; 
    } 
} 

そしてところで$postが間違って変数名ですが、私はそれが$_POSTであると仮定します。

+0

ああ、今私の間違いを見ることができます、ありがとう。はい、あなたは間違って私は間違って2行のコードを削除していたときに、私はそれをコピーしていた、むしろ私の愚かな – cakeman