Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/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
Javascript 一次只调用一个函数_Javascript_Php_Jquery_Oop - Fatal编程技术网

Javascript 一次只调用一个函数

Javascript 一次只调用一个函数,javascript,php,jquery,oop,Javascript,Php,Jquery,Oop,我正在使用php OOP方法和ajax创建一个登录和注册示例函数 当我点击login按钮时,它也会自动启动register函数,当我点击register时,它会启动login函数。我知道问题是当我创建一个对象并调用类下面的两个函数时。我想知道有没有办法一次只能调用一个函数。代码如下: Ajax function login() { jQuery('#loginform').on('submit', (function(e) { e.preventDefault();

我正在使用php OOP方法和ajax创建一个登录和注册示例函数

当我点击login按钮时,它也会自动启动register函数,当我点击register时,它会启动login函数。我知道问题是当我创建一个对象并调用类下面的两个函数时。我想知道有没有办法一次只能调用一个函数。代码如下:

Ajax

function login() {

    jQuery('#loginform').on('submit', (function(e) {
        e.preventDefault();
        jQuery.ajax({
            url: 'scripts/controller.php/login',
            type: 'POST',
            data: new FormData(this),
            processData: false,
            contentType: false,
            cache: false,
            beforeSend: function() {
                jQuery('#btn-login').html('<i class="fa fa-spinner fa-spin fa-fw"></i>');
            },
            success: function(data) {
                if(data == 'Logged in') {
                    jQuery('.result').show();
                    jQuery('.result').html(data);
                    jQuery('#btn-login').html('Login');
                }
                else {
                    jQuery('.result').html(data);
                    jQuery('.result').show();
                    jQuery('#btn-login').html('Login');
                }
            }
        });
    }));

}

function register() {

    jQuery('#signupform').on('submit', (function(e) {
        e.preventDefault();
        jQuery.ajax({
            url: 'scripts/controller.php/register',
            type: 'POST',
            data: new FormData(this),
            processData: false,
            contentType: false,
            cache: false,
            beforeSend: function() {
                jQuery('#btn-signup').html('<i class="fa fa-spinner fa-spin fa-fw"></i>');
            },
            success: function(data) {
                if(data === 'An email has been sent. Please verify your account with in 3 days.') {
                    jQuery('.result').show();
                    jQuery('.result').fadeOut(5000);
                    jQuery('.result').html(data);
                    jQuery('#btn-signup').html('Sign Up');
                    jQuery('.result').html(data);
                    jQuery('#signupform')[0].reset();
                }
                else {
                    jQuery('.result').show();
                    jQuery('.result').html(data);
                    jQuery('#btn-signup').html('Sign Up');
                }
            }
        });
    }));

}
函数登录(){
jQuery('#loginform')。on('submit',(函数(e){
e、 预防默认值();
jQuery.ajax({
url:'scripts/controller.php/login',
键入:“POST”,
数据:新表单数据(本),
processData:false,
contentType:false,
cache:false,
beforeSend:function(){
jQuery('#btn login').html('';
},
成功:功能(数据){
如果(数据==‘已登录’){
jQuery('.result').show();
jQuery('.result').html(数据);
jQuery('#btn login').html('login');
}
否则{
jQuery('.result').html(数据);
jQuery('.result').show();
jQuery('#btn login').html('login');
}
}
});
}));
}
函数寄存器(){
jQuery('#signupform')。on('submit',(函数(e){
e、 预防默认值();
jQuery.ajax({
url:'scripts/controller.php/register',
键入:“POST”,
数据:新表单数据(本),
processData:false,
contentType:false,
cache:false,
beforeSend:function(){
jQuery('#btn signup').html('';
},
成功:功能(数据){
如果(数据=='已发送电子邮件。请在3天内用验证您的帐户。“){
jQuery('.result').show();
jQuery('.result').fadeOut(5000);
jQuery('.result').html(数据);
jQuery('#btn signup').html('signup');
jQuery('.result').html(数据);
jQuery('#signupform')[0].reset();
}
否则{
jQuery('.result').show();
jQuery('.result').html(数据);
jQuery('#btn signup').html('signup');
}
}
});
}));
}
PHP代码

<?php

    require('model.php');

    class curd {

        /************************************************/
                /*** LOGIN **/    
        /************************************************/

        public function login() {

            $restricted = array('--', '#', "'--", '/*', '*/', '/**/', '/*', '1/0', '*/ 1', "'", ';', '1=1','true','false', 'BEGIN', '+', '||', '|', "' or 1=1/*", "') or '1'='1--", "') or ('1'='1--", '*', 'drop' );

            $userEmail = strip_tags(stripcslashes(htmlspecialchars($_POST['email'])));
            $password = strip_tags(stripcslashes(htmlspecialchars($_POST['password'])));

            if(in_array($userEmail, $restricted) or in_array($password, $restricted)) {
                echo 'Avoid SQL injection attacks.';
            }
            else if(!filter_var($userEmail, FILTER_VALIDATE_EMAIL)) {
                echo 'Invalid email address.';
            }
            else if(strlen(trim($userEmail)) < 5) {
                echo 'Minimum characters in email are 5.';
            }
            else if(strlen(trim($password)) < 5) {
                echo 'Minimum characters in password are 5.';
            }
            else {
                $model = new curd_model();
                echo $model -> login($userEmail, md5(sha1($password)));
            }

        }

        /************************************************/
                /*** REGISTER **/    
        /************************************************/

        public function register() {

            $restricted = array('--', '#', "'--", '/*', '*/', '/**/', '/*', '1/0', '*/ 1', "'", ';', '1=1','true','false', 'BEGIN', '+', '||', '|', "' or 1=1/*", "') or '1'='1--", "') or ('1'='1--", '*', 'drop' );

            $username = strip_tags(stripcslashes(htmlspecialchars($_POST['username'])));
            $userEmail = strip_tags(stripcslashes(htmlspecialchars($_POST['email'])));
            $password = strip_tags(stripcslashes(htmlspecialchars($_POST['password'])));
            $question = strip_tags(stripcslashes(htmlspecialchars($_POST['question'])));
            $answer = strip_tags(stripcslashes(htmlspecialchars($_POST['answer'])));

            if(in_array($userEmail, $restricted) or in_array($password, $restricted) or in_array($userEmail, $restricted) or in_array($question, $restricted) or in_array($answer, $restricted)) {
                echo 'Avoid SQL injection attacks.';
            }
            else if(!filter_var($userEmail, FILTER_VALIDATE_EMAIL)) {
                echo 'Invalid email address.';
            }
            else if(strlen(trim($userEmail)) < 5) {
                echo 'Minimum characters in email are 5.';
            }
            else if(strlen(trim($password)) < 5) {
                echo 'Minimum characters in password are 5.';
            }
            else {
                $model = new curd_model();
                echo $model -> register($username, $userEmail, md5(sha1($password)), $question, $answer);
            }

        }
    }

    $object = new curd();
    $object -> login();
    $object -> register();

?>

无论何时加载文件,都会运行以下行:

   $object = new curd();
    $object -> login();
    $object -> register();
因此,登录和注册功能都将运行。 您有两种选择:

  • 将这些函数拆分为两个不同的文件

  • 在Ajax中,添加一个参数,告诉该文件要运行哪个函数

  • 在MVC中,您可能有一个路由机制(例如:/user/login->Controller user->Method login) 如果您不这样做,您可以简单地使用一个查询字符串,如:
    /scripts/controller.php?do=login
    ,并且在您的php文件中有一个条件:

       $object = new curd();
    
    $do = $_GET['do'];
        if($do == 'login'){
             $object -> login();
        } else {
             $object -> register();
        }
    
    在ajax中,更新请求url:

    jQuery.ajax({
                url: 'scripts/controller.php?do=register',
    

    (对于登录请求也是如此..?do=login)

    为什么PHP代码同时调用login和register方法?您可能应该为每个操作设置单独的控制器。请在准备好的/参数化的查询中使用PDO或Mysqli,以便删除所有的条带/标记等。请使用PHP密码库,md5是可怕的做法。感谢您的回复,我只想在一个控制器文件中工作。像codeigniter一样,我总是只为控制器创建一个文件,同样,我这里只需要一个文件。关于使用mysqli的版本i,您至少需要一些逻辑来将请求路由到不同路由(url)的正确操作。感谢老兄,我没有尝试过这个,但希望这能完全解决问题