Jquery AJAX PHP login


Jquery AJAX PHP login

我有一个使用jquery ajax和php代码的登录表单。问题是is总是返回一个错误,而不是将我登录到系统中。我花了好几天的时间试图找出错误,但我找不到。如果我直接访问该网页,它不会显示任何错误。大约一周前,这种情况一直有效,直到我不小心删除了jquery,现在我无法让它工作。

以下是PHP代码:

include('.conf.php');
$user = $_POST['user'];
$pass = $_POST['pass'];
$result = mysql_query("SELECT * FROM accountController WHERE username = '$user'");
while ($row = mysql_fetch_array($result)) {
    if (sha1($user.$pass) == $row['pword']) {
        setcookie('temp', $row['username']);
        session_start();
        $_SESSION['login'] = 1;
        $_SESSION['uname'] = $row['username'];
        echo "success";
    }
} 

这是Jquery AJAX代码:

var username = $('#main_username').val();
var password = $('#main_pword').val();
    $('.mainlogin').submit(function() {
        $.ajax({
            url: 'log.php',
            type: 'POST',
            data: {
              user: username,
              pass: password
            },
            success: function(response) {
                if(response == 'success') {
                    window.location.reload();
                } else {
                    $('.logerror').fadeIn(250);
                }
            }
        });
        return false;
    });

我该如何检查从服务器返回的内容,如空白或成功。旅行有延期吗?谢谢

将其放入。它将在弹出窗口中提醒服务器的响应。

 success: function(response) {
     alert(response);
 }

在PHP方面,尝试输出更多的东西——在if语句中添加一个}else{,它会返回一些有用的数据,例如

 }else{
    print("Post is: 'n");
    print_r($_POST);
    print("'nMySQL gave me: 'n");
    print_r($row); 
 }

只要确保它工作后你不会把它留在里面!

查找:

  • hash不同
  • db字段不同
  • 由于某些原因,数据库字段为空
  • POST数据错误/字段名称错误

编辑:这是另一个问题:你的前四行实际上应该是:

    $('.mainlogin').submit(function() {
        var username = $('#main_username').val();
        var password = $('#main_pword').val();
        $.ajax({

您的代码在表单提交之前(加载时)获得值,此时这些值为空,因此将空字符串作为用户名和密码发送到服务器。

看看我在这里的答案中的代码:用户使用jQuery 检查可用性

你需要对你的响应进行json编码,Firefox也有Firebug,你可以用来查看你的ajax帖子和响应,chrome和IE都有开发工具

Safari也有开发工具:http://developer.apple.com/technologies/safari/developer-tools.html

检查控制台以查看AJAX 发生了什么