2016-06-30 60 views
0

我想通過AJAX調用實現一個簡單的登錄表單,該表單重定向到查詢我擁有的數據庫的頁面,然後將用戶重定向到索引頁面或返回到登錄頁面。AJAX登錄電話的問題

HTML:

<form method="post"> 
<h4> Please Login </h4> 
    <input id="user" class="name" type="text" placeholder="Enter Username"/> 
    <input id = "pass" class="pw" type="password" placeholder="Enter Password"/> 
    <ul> 
     <li><a href="#">Forgot your password?</a></li> 
     <li><a href="#">Please Register Here</a></li> 
    </ul> 
    <input class="hvr-shrink" id="submitlogin" type="submit" value="Log in"/> 
</form> 

的jQuery/AJAX:

$("#submitlogin").click(function() { 
    var $username = document.getElementById("user").value; 
    var $pass = document.getElementById("pass").value; 
    $.ajax ({ 
     url: "login_request.php", 
     type: "POST", 
     data: { 
      'username' : $username, 
      'password' : $pass 
     } 
    }); 
}); 

login_request.php

include "connect.php"; 
$myusername = mysqli_real_escape_string($db,$_POST['username']); 
$mypassword = mysqli_real_escape_string($db,$_POST['password']); 

$sql = "SELECT username, password FROM `CGSB_Compliance`.`nd_users` WHERE username = '$myusername' AND password = '$mypassword'"; 
$result = mysqli_query($db, $sql); 
$count = mysqli_num_rows($result); 

if($count == 1){ 
    $_SESSION['user'] = $myusername; 
    header("location:index.php"); 
} else { 
    header("location:login.php"); 
} 

我有一個用戶名和密碼,每次我登錄時間的表,它只是刷新登錄頁面。我現在檢查了我的代碼幾次,我似乎無法找到爲什麼它不起作用的原因。我有一種感覺,這是我的一個愚蠢的錯誤,但我看了很多例子,他們都有幾乎相同的東西。任何幫助表示讚賞。

+1

[小博](http://bobby-tables.com/)說***腳本是在對SQL注入攻擊的風險。(HTTP:/ /stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)***瞭解[編制](http://en.wikipedia.org/wiki/Prepared_statement)聲明[庫MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

+1

**切勿存儲純文本密碼!**請使用PHP的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。確保你*** [不要越獄密碼](http://stackoverflow.com/q/36628418/1011527)***或在哈希之前使用其他任何清理機制。這樣做*更改密碼並導致不必要的附加編碼。 –

+3

你沒有做任何事情來阻止表單重新加載頁面。你應該使用開發者控制檯來看看發生了什麼。嘗試將'type =「submit」'更改爲'type =「按鈕」' – j08691

回答

-1

我的朋友,我覺得你的問題是在你的jQuery/AJAX:把它放在</body>標籤的底部或將其放在$(document).ready(function{});

+0

你是否確定你已經包含jquery文件,否則包含它 –

0

您好我已經試過你code的問題是,你的ajax request不會您的login page.也不要使用$signjavascript variables使用var或沒有。 也可能你還沒有打電話jQuery library

我已經試過這個,並且自己運行。請試試這個。如果您找到您的解決方案,請毫不猶豫地將其標記爲您的答案。

// download file and save in your file if you are not connected to net and include with correct path 

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
    <Script> 
    $(document).ready(function(){ 

    $("#postsubmit").click(function(e) { 
     var pass = $("#pass").val(); 
     var username = $("#user").val(); 
      $.ajax({type:"POST",url:"login_request.php",data:{password:pass, username:username}, 
        }); 
     }); 
    }); 
     </script> 

    <h4> Please Login </h4> 
    <form name="postcontent" > 


     <input id="user" class="name" type="text" placeholder="Enter Username"/> 
     <input id = "pass" class="pw" type="password" placeholder="Enter Password"/> 
     <ul> 
      <li><a href="#">Forgot your password?</a></li> 
      <li><a href="#">Please Register Here</a></li> 
     </ul> 
     <input name="postsubmit" type="button" id="postsubmit" value="Sing Up"/> 

    </form> 

    login_request.php 

    <?php 
    $db = mysqli_connect('localhost','root','','yourdatabasename'); 
    echo $myusername = mysqli_real_escape_string($db,$_POST['username']); 
    echo $mypassword = mysqli_real_escape_string($db,$_POST['password']); 

    $sql = "SELECT username, pass FROM reg WHERE username = '$myusername' AND pass = '$mypassword'"; 
    $result = mysqli_query($db, $sql); 
    $count = mysqli_num_rows($result); 
    if($count == 1){ 
     $_SESSION['user'] = $myusername; 
     header("location:index.php"); 
    } else { 
     header("location:login.php"); 
    } 

您根據您的table namedatbase name改變。

同時添加preventDefault()限制頁面清爽

+0

謝謝你的詳細答案,我現在就試試看,並讓你知道。我有jQuery加載,所以這不是一個問題。 – ybce

+0

仍然不能正常工作,當我點擊按鈕時頁面不起作用。該按鈕觸發該功能,但沒有任何反應。 – ybce