2013-11-21 64 views
0

我正在研究与php相关的作业。在作业中,需要登录页面。在此登录页面中,每个用户都需要输入他/她的用户名和密码。这些用户名和密码将与mysql数据库中customer表中的值进行比较。如果密码和用户名同意客户表中“cid”和“name”列下的记录,则会显示成功登录的通知。使用php检查用户名和密码ajax

我有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"; 

    } 


    } 

?> 

我的问题是,我不能阿贾克斯后得到任何结果,它似乎不起作用。哪里不对?

P.S:我根据建议编辑了我的php文件。谢谢你,但阿贾克斯不能再工作。帮我!!

+3

你在哪里,包括jQuery库?你有其他的JS或CSS吗? – DevlshOne

+0

我没有包含任何jQuery库!我应该在哪里包括?我正在使用Mac上的TextWrangler编写所有的php文件。 – Begumm

+0

把它放在loginGUI.php的''部分:'' – DevlshOne

回答

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'); 
     } 
    } 
}); 
+0

不,它不工作.. :(。我认为我的文档没有准备好,因为当我使用$(document).ready(function(){...},它不起作用。我该怎么做,我(( – Begumm

+0

)您是否在您的JavaScript控制台中看到任何错误? –

+0

不,我看不到。即使根据建议更改了一些行,我的代码也不起作用。:( – Begumm

0
$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。你有太多的错误,你似乎对修复它们没有太多反应。此外,我们不是作业网站。

+0

是,因为我是新来的PHP – Begumm

+0

谢谢,我已经改变,但它再次不起作用! – Begumm

1

您可以使用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"; 

} 


    } 


?> 
+0

不,它不起作用!$(document).ready(function()不起作用。我该怎么办? – Begumm

+0

也许你已经做了更多的一个document.ready语句 – 2013-11-21 17:43:35

+0

不,我没有。我的代码不工作.. :( – Begumm