Ajax和php-登录脚本
我正在尝试登录页面,但ajax方法有一个问题:Ajax和php-登录脚本,php,ajax,Php,Ajax,我正在尝试登录页面,但ajax方法有一个问题: $("#login").click(function(){ username=$("#user_name").val(); password=$("#password").val(); $.ajax({ type: "POST", url: "login.php", data: {name : username, pwd :
$("#login").click(function(){
username=$("#user_name").val();
password=$("#password").val();
$.ajax({
type: "POST",
url: "login.php",
data: {name : username, pwd : password},
success: function(html){
if( ($.trim(html)) =='true')
{
$("#login_form").fadeOut("normal");
$("#shadow").fadeOut();
$("#profile").html("<a href='logout.php' id='logout'>Logout</a>");
}
else
{
$("#add_err").html("Wrong username or password");
}
},
beforeSend:function()
{
$("#add_err").html("Loading...")
}
});
return false;
});
$(“#登录”)。单击(函数(){
用户名=$(“#用户名”).val();
密码=$(“#密码”).val();
$.ajax({
类型:“POST”,
url:“login.php”,
数据:{name:username,pwd:password},
成功:函数(html){
如果($.trim(html))=='true')
{
$(“登录表单”)。淡出(“正常”);
$(“#阴影”).fadeOut();
$(“#profile”).html(“”);
}
其他的
{
$(“#add_err”).html(“错误的用户名或密码”);
}
},
beforeSend:function()
{
$(“#添加错误”).html(“加载…”)
}
});
返回false;
});
login.php:
<?php
session_start();
$username = $_POST['name'];
//$username = $mysqli->real_escape_string($username);
$password = ($_POST['pwd']);
//$password = $mysqli->real_escape_string($password);
$mysqli = mysqli_connect('localhost','root','','peer');
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($mysqli,$query)or die(mysqli_error());
$num_row = mysqli_num_rows($result);
$row=mysqli_fetch_array($result);
if( $num_row >=1 ) {
echo 'true';
$_SESSION['user_name']=$row['username'];
}
else{
echo 'false';
}
?>
我发布到login.php用户名和密码,但显然没有得到任何回复,当我尝试只执行php脚本时,它工作正常。html对象看起来仍然是false
。
你看到这里有什么错误吗
谢谢
编辑 这些就是我在这里看到的问题
- 您的数据未正确编码。使用
而不是data:{name:username,pwd:password}
以便jQuery为您正确编码data:{name:username,pwd:password}
- 您的响应可能有前导空格或尾随空格,因此请尝试
if($.trim(html)='true')
- 始终验证/清理输入,您应该使用,或者至少使用字段
- 您的数据未正确编码。使用
而不是data:{name:username,pwd:password}
以便jQuery为您正确编码data:{name:username,pwd:password}
- 您的响应可能有前导空格或尾随空格,因此请尝试
if($.trim(html)='true')
- 始终验证/清理输入,您应该使用,或者至少使用字段
- 这些就是我在这里看到的问题
$("#add_err").html("Loading...");
$.post('login.php',
{'username': username, 'pwd': password},
function(html){
$("#login_form").fadeOut("normal");
$("#shadow").fadeOut();
$("#profile").html("<a href='logout.php' id='logout'>Logout</a>");
}
);
他是100%正确的
另一个可能有用的技巧是使用:
console.log(variable);
您传递的任何变量都将返回到控制台。您可以在使用的任何浏览器中按F12键查看控制台。在进行ajax调用之前,您可以传递用户名和密码,这样您就可以看到您是否真正得到了用户的输入。您还可以将html变量console.log记录下来,该变量将显示您是否收到服务器的响应。尝试以下操作:
$("#add_err").html("Loading...");
$.post('login.php',
{'username': username, 'pwd': password},
function(html){
$("#login_form").fadeOut("normal");
$("#shadow").fadeOut();
$("#profile").html("<a href='logout.php' id='logout'>Logout</a>");
}
);
他是100%正确的
另一个可能有用的技巧是使用:
console.log(variable);
您传递的任何变量都将返回到控制台。您可以在使用的任何浏览器中按F12键查看控制台。在进行ajax调用之前,您可以传递用户名和密码,这样您就可以看到您是否真正得到了用户的输入。您还可以将html变量console.log记录下来,这将显示您是否收到服务器的响应。您是否尝试回显用户名和密码以检查您是否收到它们?您可以将ajax中的数据更改为:
data:{name:username,pwd:password},
如果($.trim(html)='true',则尝试执行此操作{…这不起作用,我只是学习使用ajax并连接到db..您是否尝试回显用户名和密码以检查您是否收到了它们?您可以将ajax中的数据更改为:数据:{name:username,pwd:password},
如果($.trim(html)='true',请尝试执行此操作{…
它不起作用,我只是学习使用ajax和连接到db。{code>console.log(html);get meObject{auth:false}
我刚刚编辑了脚本,用pwd替换了密码。可能的问题是使用$mysqli->real\u escape\u字符串。我觉得md5可以消除任何恶意代码(我可能错了)。在没有真正的_escape_字符串的情况下尝试。您还可以进一步使用console.log。逐步注释PHP代码可能会对您有所帮助。一次只回显一个变量对我有很大帮助,我会从$result开始,然后是$num_row,然后是$rowI。我只需编辑我的当前版本,如何才能控制台.log()php变量??假设(在php文件中)您只回显一个变量。例如“echo$result”,然后您可以使用(在Javascript中)console.log(html),这样您就可以看到服务器所说的$resultit不起作用和console.log(html);
get meObject{auth:false}
我刚刚编辑了脚本,用pwd替换了密码。可能的问题是使用$mysqli->real\u escape\u字符串。我觉得md5可以消除任何恶意代码(我可能错了)。在没有真正的_escape_字符串的情况下尝试它。您还可以进一步使用console.log。逐步注释PHP代码可能会对您有所帮助。一次只回显一个变量对我有很大帮助,我会从$result开始,然后是$num_row,然后是$row。我只需编辑我的当前版本,如何可以控制台.log()PHP变量??比方说(在PHP文件中)您只回显一个变量。例如“echo$result”,然后可以使用(在Javascript中)console.log(html),这样您就可以看到服务器所说的内容$result@user1726810从你对另一个答案的评论来看,你似乎从未接触过login.php
@user1726810从你对另一个答案的评论来看,你似乎从未接触过login.php