【问题标题】:Checking username and password with php ajax使用php ajax检查用户名和密码
【发布时间】:2013-11-21 17:18:48
【问题描述】:

我正在做一个与 php 相关的作业。在作业中,需要一个登录页面。在此登录页面中,每个用户都应输入他/她的用户名和密码。这些用户名和密码将与 mysql 数据库中客户表中的值进行比较。如果密码和用户名与客户表中“cid”和“name”列下的记录一致,则会提示登录成功。

我有 3 个 php 文件,分别是 loginGUI.php、check_login.php 和 db_connect.php。

db_connect.php:

  <?php
     $db_name="ozcan_b"; // Database name 
     $tbl_name="customer"; // Table name 
     //connect to db
     $con=mysql_connect("127.0.0.1","xxxxxx","xxxxxx");
     mysql_select_db("ozcan_b")or die("cannot select DB");
    // Check connection
    if (mysqli_connect_errno($con))
    {
    echo "Failed to connect to MySQL: " . mysql_connect_error();
    exit(0);
    }
 ?>

loginGUI.php:

<?php
   session_start();
   require_once ('db_connect.php'); // include the database connection 

?>

<html>
<head>
<title>
Login page
</title>
</head>
<body>
<h1 style="font-family:Comic Sans Ms;text-align="center";font-size:20pt;
color:#00FF00;>
Login Page
</h1>
<form name="myForm" method="POST" >    
Username<input type="text" name="userid"/>
Password<input type="password" name="pswrd"/>
<input type="button" value="Login" id='checklogin' onclick="check()"/>  
<div id='username_availability_result'></div>
</form>

<script language="JavaScript">

var xhr_request = false;
var checking_html = 'Checking...';  

    //when button is clicked  
    function check(){ 

        //Check the fields
        if(document.forms['myForm'].userid.value=="" || document.forms['myForm'].pswrd.value=="")
        {
            alert('Please enter your password and your username!');
        }

        else
        {

            //else show the cheking_text and run the function to check  
             //$('#username_availability_result').html(checking_html);  
            check_availability();  
        }   
    }

    //function to check username availability  
 function check_availability(){  
    //get the username  
    var userid = document.forms['myForm'].userid.value;  
    var pswrd = document.forms['myForm'].pswrd.value;


    //use ajax to run the check 

    var request = $.ajax(
    {
      url:check.php,
      type:POST,
      data:{pswrd:pass, userid:username}
      success:function()
      {

        alert("Success");
      }
    });



   </script>






</body>
</html>

check_login.php:

<?php
    session_start();
    require_once ('db_connect.php');



    if(isset($_POST['pswrd']) && isset($_POST['userid']))
    {
        $sql = "SELECT * FROM users WHERE username='".mysqli_real_escape($dbc,        trim($_POST['userid'])."' AND password= '".mysqli_real_escape($dbc,    trim($_POST['pswrd'])."'");

        $result = mysql_query($dbc, $sql) or die("Could Not make request");
        if(mysql_num_rows($result) == 1)
        {
            //redirect to the welcome page

         }
         else
         {
             echo "User Not Found";

     }


    }

 ?> 

我的问题是,在 ajax 之后我无法得到任何结果,它似乎不起作用。怎么了?

P.S : 我已经根据建议编辑了我的 php 文件。谢谢大家,但是 ajax 不能再工作了。帮帮我!!

【问题讨论】:

  • 你在哪里包含 jQuery 库?你还有其他的 JS 或 CSS 吗?
  • 我没有包含任何 jQuery 库!!我应该在哪里包括?我正在使用 Mac 上的 TextWrangler 编写所有 php 文件。
  • 把它放在 loginGUI.php 的 &lt;head&gt; 部分:&lt;script src="http://code.jquery.com/jquery-1.10.1.min.js"&gt;&lt;/script&gt;
  • Okey 我添加了,但不影响结果。我已经根据建议编辑了我的 php 文件。请帮我处理这个编辑过的版本。
  • 您需要提供有关您收到的错误的一些详细信息。

标签: php mysql ajax


【解决方案1】:

您实际上并未将useridpswrd 发送到您的PHP 脚本。您不能只发送$.ajax 随机属性并希望它有效。您的数据需要进入data 参数。

$.ajax({
    type:"POST",
    url: "check_login.php",
    cache: false,
    data:{
        userid:userid,
        pswrd:pswrd
    },
    success: function(result){
        //if the result is 1  
        if(result == 1){  
            //show that the username is available  
            $('#username_availability_result').html(username + ' is Available');  
        }else{  
            //show that the username is NOT available  
            $('#username_availability_result').html(username + ' is not Available');  
        }  
    }
});

【讨论】:

  • 不,它不再起作用..:(。我认为我的文档还没有准备好,因为当我使用 $( document ).ready(function() {...} 时,它不起作用.我该怎么办,我只有很少的时间..:((
  • 不,我没有看到。即使我根据建议更改了某些行,我的代码也不起作用..:(
【解决方案2】:

你可以使用jquery ajax

<input type='text' id='username'/>
<input type='text' id='password'/>
<input type='button' id='submit'/>

<script type='text/javascript'>
  $(document).ready(function()
  {
     var pass = $("#password").val();
     var username = $("#username").val();
     $().click(function()
     {
         var request = $.ajax(
         {
             url:server.php,
             type:POST,
             data:{password:pass, username:username}
             success:function()
             {                 
               alert("Success");
             }
         });
   });       

});

</script>

这应该对你有用,你可以使用普通的$_POST['password']$_POST['username']从服务器端收集数据

在服务器端你可以这样做

<?php
   if(isset($_POST['password']) && isset($_POST['username']))
   {
      $sql = "SELECT * FROM users WHERE username='".mysqli_real_escape($dbc, trim($_POST['username'])."' AND password= '".mysqli_real_escape($dbc, trim($_POST['password'])."'");

  $result = mysqli_query($dbc, $sql) or die("Could Not make request");
  if(mysqli_num_rows($result) == 1)
  {
    //redirect

  }
 else
 {
      echo "User Not Found";

 }


   }


?>

【讨论】:

  • 不,它不起作用!已经,$(document).ready(function() 不起作用。我该怎么办?
  • 它应该从页面中删除所有 javascript 并尝试类似这样的操作.. $(document).ready(function(){alert("Hello World");});请记住,这只适用于 并且必须在调用 jquery 文件目录之后放置...还要确保您的文件已找到 jquery 文件跨度>
【解决方案3】:
$sql="SELECT * FROM customer WHERE name='" . $myusername . "' and cid='" . $mypassword . "'"; // fix this line
if ($count === 1){ // and fix this line
if (result === 1){ // and this line

在我看来,您正在使用来自不同地方的代码。您应该验证用户名/密码组合是否存在,而不是检查它是否可用。

没有人会为你做作业,对不起。这是一个很好的理由......

<?php
    session_start();
    require_once ('db_connect.php');
    if(isset($_POST['pswrd']) && isset($_POST['userid']))
    {
        $sql = "SELECT * FROM users WHERE username='".mysqli_real_escape($dbc,        trim($_POST['userid'])."' AND password= '".mysqli_real_escape($dbc,    trim($_POST['pswrd'])."'");
        $result = mysql_query($dbc, $sql) or die("Could Not make request");
        if(mysql_num_rows($result) == 1)
        {
            //redirect to the welcome page
         }
         else
         {
             echo "User Not Found";
     }
    }
 ?>

您在这里混合了mysqlmysqli。您应该使用 JUST mysqli!您的 useridpswrd 变量在 AJAX 调用中被分配给 usernamepass,但 check_login.php 脚本永远不会看到它们。它仍在寻找useridpswrd。你有太多错误,而且你似乎对修复它们反应不快。此外,我们不是家庭作业网站。

【讨论】:

  • 是的,因为我是 php 新手。
【解决方案4】:

问题可能是由于您的脚本标签中缺少类型属性。应该是:

<script type="text/javascript" >

这应该可以解决问题。

【讨论】:

    【解决方案5】:
    $("#frm-signin").validate({
      errorClass: "error fail-alert",
      validClass: "valid success-alert",
        // Specify validation rules
        rules: {
            signin_email: { email :true, required: true,
            regex: /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i,
            remote: {
               url: "checkemail.php",
               type: "POST" }
           },
           signin_pass: {
            required: true,
            remote: {
                url: "checkpassword.php",
                type: "post",
                data: {signin_email: $("#signin_email").val()}              
           }
       }
       },
       messages: {
        signin_email: {
            required: "Email is mandatory",
            email: "Please enter valid email <h5 class='text-danger'>abc@xyz.com</h5>",
            remote: "Please check your email",
            regex: "Please enter valid email <h5 class='text-danger'>abc@xyz.com</h5>"
        },
        signin_pass: {
            required: "Password is mandaitory",
            remote: "Please check your password"
        }
    },
    tooltip_options: {
        signin_email: {
            required: {placement:'right',html:true},
            remote : {placement:'right',html:true},
            email :  {placement:'right',html:true},
            regex :  {placement:'right',html:true}
        },
        signin_pass: {
            required: {placement:'right',html:true},
            remote: {placement:'right',html:true}
        }
    },
    submitHandler: function(form) {
        form.submit();`enter code here`
    }
    
    });
    

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 2017-11-29
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多