Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 面向对象验证_Php_Oop - Fatal编程技术网

Php 面向对象验证

Php 面向对象验证,php,oop,Php,Oop,目前,我正在尝试通过OOP php和数组验证电子邮件地址,以便稍后添加其他功能,但是当我插入有效的电子邮件地址时,验证仍然失败,我认为可能我的数组设置错误,但我不完全确定,此外,我还尝试了不同的运营商,以检查电子邮件功能是否会输出不同的结果,但如前所述,它似乎总是失败,任何建议将不胜感激 class Login { private $email, $password, $database, $db = null; public funct

目前,我正在尝试通过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]);
        }           
类登录
{   
私有的
$email,
$password,
$database,
$db=null;
公共函数构造()
{
$this->db=新数据库;
}
公共功能validEmail($email)
{   
返回(filter\u var($email,filter\u VALIDATE\u email)!==FALSE);
}   
}

正如评论中已经提到的-您不使用
登录
类中的函数

那么,您当前代码的工作原理是:

$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
是一个错误的变量名,我想它是
$\u post

,正如注释中已经提到的那样-您不使用
登录
类中的函数

那么,您当前代码的工作原理是:

$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
是一个错误的变量名,我想它是
$\u post

您没有在任何地方使用登录类。这没有任何意义。您没有在任何地方使用登录类。这没有任何意义。啊,我现在明白我的错误了,谢谢。是的,你是对的,我在复制的时候不小心删除了两行代码,真是太傻了,我现在可以看出我的错误了,谢谢。是的,你是对的,我在复制时不小心删除了两行代码,真是太傻了