Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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
基于ajax的php-mysql登录系统_Php_Jquery_Mysql_Ajax - Fatal编程技术网

基于ajax的php-mysql登录系统

基于ajax的php-mysql登录系统,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我最近开始学习php,所以我对它不是很在行。我一直在尝试用php/ajax创建一个登录系统。我已经尽了我所能,但似乎能找出实际问题的根源。Ajax无法从我的process.php文件中获取数据,即使我已经在url中添加了它。唯一执行的代码是来自索引脚本的代码,而不是来自进程的代码。我的数据库连接正常。只是ajax和process.php之间似乎没有通信。它只是在Ajax中执行“else”(data==true)代码。很抱歉,我可能无法很好地表达自己,但我只是希望你理解我的意思。 下面是我创建的文

我最近开始学习php,所以我对它不是很在行。我一直在尝试用php/ajax创建一个登录系统。我已经尽了我所能,但似乎能找出实际问题的根源。Ajax无法从我的process.php文件中获取数据,即使我已经在url中添加了它。唯一执行的代码是来自索引脚本的代码,而不是来自进程的代码。我的数据库连接正常。只是ajax和process.php之间似乎没有通信。它只是在Ajax中执行“else”(data==true)代码。很抱歉,我可能无法很好地表达自己,但我只是希望你理解我的意思。 下面是我创建的文件

下面是member.php类

       <?php
        class member {

       public $table;
       public function __construct(){

       $this->table = "users";   


         }


       //login check
      public function check($username,$password,$conn){

       $this->table = "users";
       //$password_hash = md5($password);

       $stmt = $conn->prepare("SELECT * FROM ".$this->table." WHERE 
       Username='$username' AND Password='$password' LIMIT 1");
       $stmt->execute();
                    if($stmt->rowCount() > 0)
                    {

                      while($row = $stmt->fetch(PDO::FETCH_ASSOC))
                      {
                            // print_r($row);
                                 $_SESSION['id'] = $row['id'];
                                 ;
                                 $_SESSION['email'] = $row['email'];

                                 return true;
                      }
                    } else {
                         return false; 

                   }

      }


     }

    ?>

在Ajax中使用
GET
方法传递数据,但在process.php文件中检索数据时使用
POST
。您需要更改ajax调用代码,并且应该使用post方法。另外,
serialize
函数不附加需要手动推送的登录输入元素。我已经更新了代码,如下所示:

            $("#login").click(function (e) {
                e.preventDefault();
                var data = $("#login_form").serializeArray();
                data.push({ name: this.name, value: this.id });
                console.log(data);
                $.ajax({
                    type: "POST",
                    url: 'process.php',
                    data: data,
                    success: function (data) {
                        if (data == true) {
                            $("#message").addClass('alert alert-success');
                            $("#message").html("Login successful");
                            $("#login").html('Redirecting..');
                            window.location = "dashboard.php";
                        } else {
                            $("#message").addClass('alert alert-danger');
                            $("#message").html('login failed');
                            $("#login").html('Failed');
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        if (textStatus = 'error') {
                            alert('Request not completed');
                        }
                        $("#login").html('Failed');
                    },
                    beforeSend: function () {

                        $("#message").removeClass('alert alert-danger');
                        $("#message").html('');

                        $("#login").html('Logging in..');
                    },
                });
            });

您可以按原样更新代码,它应该可以正常工作。希望对您有所帮助。

您在Ajax中使用
GET
方法传递数据,但在process.php文件中检索数据时使用
POST
。您需要更改ajax调用代码,并且应该使用post方法。另外,
serialize
函数不附加需要手动推送的登录输入元素。我已经更新了代码,如下所示:

            $("#login").click(function (e) {
                e.preventDefault();
                var data = $("#login_form").serializeArray();
                data.push({ name: this.name, value: this.id });
                console.log(data);
                $.ajax({
                    type: "POST",
                    url: 'process.php',
                    data: data,
                    success: function (data) {
                        if (data == true) {
                            $("#message").addClass('alert alert-success');
                            $("#message").html("Login successful");
                            $("#login").html('Redirecting..');
                            window.location = "dashboard.php";
                        } else {
                            $("#message").addClass('alert alert-danger');
                            $("#message").html('login failed');
                            $("#login").html('Failed');
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        if (textStatus = 'error') {
                            alert('Request not completed');
                        }
                        $("#login").html('Failed');
                    },
                    beforeSend: function () {

                        $("#message").removeClass('alert alert-danger');
                        $("#message").html('');

                        $("#login").html('Logging in..');
                    },
                });
            });

您可以按原样更新代码,它应该可以正常工作。希望它能帮助您。

console.log(数据)
?控制台的“网络”选项卡显示了什么?您错误地使用了准备好的语句。参数化:无论您遵循什么PHP登录教程,都是完全过时和不安全的。您永远不应该存储明文密码,用MD5散列密码的注释代码也非常不安全。找到一个新的使用和,并遵循它。无论您是否正在“测试”,都没有理由存储明文密码(或使用MD5)。现在就要学会正确地做这件事。而且,你的代码对用户是开放的。不要通过将字符串粘在一起来生成查询。相反,使用with。这一评论和我之前的评论都是至关重要的。不要忽略它们。
console.log(数据)
可能重复?控制台的“网络”选项卡显示了什么?您错误地使用了准备好的语句。参数化:无论您遵循什么PHP登录教程,都是完全过时和不安全的。您永远不应该存储明文密码,用MD5散列密码的注释代码也非常不安全。找到一个新的使用和,并遵循它。无论您是否正在“测试”,都没有理由存储明文密码(或使用MD5)。现在就要学会正确地做这件事。而且,你的代码对用户是开放的。不要通过将字符串粘在一起来生成查询。相反,使用with。这一评论和我之前的评论都是至关重要的。不要忽略它们。可能的副本做了,但仍然。实际上,我想尝试一些东西,因此使用get方法。我只是忘了在这里发布之前编辑。@epospiky我已经更新了我的答案。请检查这个,它应该可以正常工作。非常感谢您的回复。我更新了代码,就像你发布的一样,但没有任何改变。它仍在发出“登录失败”消息。我真的不知道为什么。请通过Skype与我联系:rohit.mittal54。让我调试一下你的代码Hi@Rohit Mittal。再次感谢您的回复。实际上,我现在没有Skype信用卡,也许我们可以尝试其他方式,比如zoom。你可以在这里打,但还是打了。实际上,我想尝试一些东西,因此使用get方法。我只是忘了在这里发布之前编辑。@epospiky我已经更新了我的答案。请检查这个,它应该可以正常工作。非常感谢您的回复。我更新了代码,就像你发布的一样,但没有任何改变。它仍在发出“登录失败”消息。我真的不知道为什么。请通过Skype与我联系:rohit.mittal54。让我调试一下你的代码Hi@Rohit Mittal。再次感谢您的回复。实际上,我现在没有Skype信用卡,也许我们可以尝试其他方式,比如zoom。你可以在这里打
            $("#login").click(function (e) {
                e.preventDefault();
                var data = $("#login_form").serializeArray();
                data.push({ name: this.name, value: this.id });
                console.log(data);
                $.ajax({
                    type: "POST",
                    url: 'process.php',
                    data: data,
                    success: function (data) {
                        if (data == true) {
                            $("#message").addClass('alert alert-success');
                            $("#message").html("Login successful");
                            $("#login").html('Redirecting..');
                            window.location = "dashboard.php";
                        } else {
                            $("#message").addClass('alert alert-danger');
                            $("#message").html('login failed');
                            $("#login").html('Failed');
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        if (textStatus = 'error') {
                            alert('Request not completed');
                        }
                        $("#login").html('Failed');
                    },
                    beforeSend: function () {

                        $("#message").removeClass('alert alert-danger');
                        $("#message").html('');

                        $("#login").html('Logging in..');
                    },
                });
            });