0

我正在尝试做一个登录页面,但是我在使用 ajax 方法时遇到了问题:

 $("#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;
    });

登录.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. 你看到这里有什么错误吗??

谢谢

编辑!

4

2 回答 2

2

这些是我在这里看到的问题

  • 您的数据未正确编码。而不是data: "name="+username+"&pwd="+password,使用data:{name:username,pwd:password},以便 jQuery 为您正确编码它。
  • 您的回复可能有前导或尾随空格,因此请尝试if($.trim(html)=='true')
  • 始终验证/清理输入,您应该使用参数化准备好的语句,或者至少转义字段。
于 2013-05-12T01:50:24.647 回答
1

尝试这个:

$("#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>");
    }
);

@Musa 指出你不应该通过 POST 变量

"name="+username+"&pwd="+password, use data:{name:username,pwd:password}

他是100%正确的。

另一个可能有用的技巧是使用:

console.log(variable);

您传递的任何变量都将返回到控制台。您可以通过在您使用的任何浏览器中按 F12 来查看控制台。您可以在进行 ajax 调用之前传递用户名和密码,这样您就可以查看您是否真的得到了用户的输入。您还可以 console.log html 变量,这将显示您是否从服务器获得响应。

于 2013-05-12T01:58:44.123 回答