我已經查看過1000次了。我看不出爲什麼它不起作用。Ajax/jquery登錄表單失敗
這是一個簡單的ajax登錄表單。即使憑據正確,它也會返回false。 (我測試ajax_login.php直接張貼到它)
的Ajax功能:
$(document).ready(function() {
$("#submit_login").click(function() {
var username = $("#username").val();
var password = $("#password").val();
$.ajax({
type: "POST",
url: "scripts/ajax_login.php",
data: "username=" + username + "&password=" + password,
success: function(result) {
if(result == '0')
{
$(document.location = 'index.php? page=profile&user=' + username);
}
else
{
$("#login_error").show("fast");
}
}
});
return false;
});
});
ajax_login.php
session_start();
require('../conf/config.php');
if($_POST)
{
$u = mysql_real_escape_string($_REQUEST['username']);
$p = md5(mysql_real_escape_string($_REQUEST['password']));
$con = mysql_connect($mysql_server,$mysql_user,$mysql_password);
$db = mysql_select_db($mysql_db);
$query = mysql_query("SELECT * FROM users WHERE username = '$u' AND password = '$p'");
if(mysql_num_rows($query) > 0)
{
$sid = session_id();
$query = "UPDATE users SET sid='$sid' WHERE username='$u'";
$result = mysql_query($query);
if($result)
{
$_SESSION['loggedin'] = $u;
echo '0';
}
}
}
形式:
<div class="login_form">
<form action="scripts/ajax_login.php" method="POST">
Login<br /><br />
Username: <br />
<input type="text" name="username" id="username" /> <br />
Password: <br />
<input type="password" name="password" id="password" />
</div>
<input type="checkbox" name="remember" id="rem" value="checked"/><label for="rem">Stay logged in?</label><br />
<?php $formKey->outputKey(); ?>
<input type="submit" value="Login!" name="submit" id="submit_login" />
</form>
試着移動將返回false轉化爲成功的功能else塊。也是你的document.location語法正確嗎? – DG3 2012-04-10 19:15:14
如果這些代碼是來自實際代碼的代碼片段,那麼它很容易發生SQL注入攻擊(在某些情況下,很好:http://stackoverflow.com/questions/1220182/does-mysql-real-escape-string-fully-protect-against -sql注入)。 – dezso 2012-04-10 19:57:21
如果@SimpleCoder的答案是正確的,請確保通過單擊複選標記將其標記爲正確 - 給出信用在哪裏由於感謝人:) – Mattygabe 2012-04-11 11:59:17