2013-11-21 67 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