我正在使用ajax调用login.php.Below是我的ajax位代码和login.php代码..同时提供有效的用户名和密码..am得到无效的用户名或密码消息.am完全没理解这些代码行
$is_ajax = $_REQUEST['is_ajax'];
if(isset($is_ajax) && $is_ajax) // in login.php, Many thanks
$("#login").click(function() {
var action = $("#form1").attr('action');
var form_data = {
username: $("#username").val(),
password: $("#password").val(),
is_ajax: 1
};
$.ajax({
type: "POST",
url: login.php,
data: form_data,
success: function(response)
{
if(response == 'success')
$("#form1").slideUp('slow', function() {
$("#message").html("<p class='success'>You have logged in successfully!</p>");
});
else
$("#message").html("<p class='error'>Invalid username and/or password.</p>");
}
});
return false;
});
这是login.php代码。
<?PHP
if(isset($_REQUEST['is_ajax']) && $_REQUEST['is_ajax']) {
$is_ajax = $_REQUEST['is_ajax'];
$uname = $_POST['username'];
$pword = $_POST['password'];
$uname = htmlspecialchars($uname);
$pword = htmlspecialchars($pword);
$user_name = "root";
$pass_word = "root";
$database = "test";
$server = "127.0.0.1";
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$db_handle = mysql_connect($server, $user_name, $pass_word);
$db_found = mysql_select_db($database, $db_handle);
$uname = quote_smart($uname, $db_handle);
$pword = quote_smart($pword, $db_handle);
$SQL = "SELECT * FROM login WHERE L1 = $uname AND L2 = md5($pword)";
$result = mysql_query($SQL);
$num_rows = mysql_num_rows($result);
if ($num_rows > 0) {
echo "success";
}
mysql_close($db_handle);
}
?>
答案 0 :(得分:1)
一些事情:
htmlspecialchars
没有这样做。使用mysql_real_escape_string
(也许quote_smart
会这样做吗?)。login.php
放在引号中。$_POST
和$_REQUEST
是什么。看起来你实际上并没有在任何地方使用$username
或$password
,所以它现在看起来不会伤到你,但你应该知道{{1}的全部内容} {array}也可以在$_POST
数组中找到(以及$_REQUEST
和$_GET
)。试试这个:
$_COOKIE
的login.php:
$("#login").click(function() {
var action = $("#form1").attr('action');
var form_data = {
username: $("#username").val(),
password: $("#password").val(),
is_ajax: 1
};
$.ajax({
type: "POST",
url: "login.php",
data: form_data,
success: function(response)
{
if(response == 'success')
$("#form1").slideUp('slow', function() {
$("#message").html("<p class='success'>You have logged in successfully!</p>");
});
else
$("#message").html("<p class='error'>Invalid username and/or password. (debugging, response = '". response ."'</p>");
}
});
return false;
});
答案 1 :(得分:0)
你的PHP不是很保存并且使用GET / POST因为你正在使用$_REQUEST
。
首先调试login.php
,如果你得到任何PHP Notices,你必须修复它们,因为它会改变你的ajax响应。
尝试在浏览器yoursite.com/login.php?is_ajax=1&username=XXXX&password=XXXX
如果您只是在浏览器中获得“成功”字样,那么通过向console.debug(response)
处理程序添加success
来查看JavaScript正在接收的内容。在firebug控制台或chrome控制台中预览值。