php - 使用 php 和 ajax 的登录表单

标签 php jquery ajax

我不知道我的问题出在哪里...我正在尝试使用 ajax、jquery 和 PHP 做一个简单的登录表单...问题是 $result 总是返回 false。

我真的很新,希望大家能帮助我。

PHP 代码:

<?php
if(isset($_POST['user_name']) && isset($_POST['password']))
{
    $user_name=mysql_real_escape_string($_POST['user_name']);
    $password=$_POST['password'];

    $sql = "SELECT * FROM users WHERE
    userName = '$user_name' AND password = '$password'";
    $result = mysql_query($sql);

    if($result === true)
        echo $user_name;
    else
        echo 'Error';
}
?> 

它本身的形式:

 <!DOCTYPE html>
 <html>
 <head>
 <script src="jquery-2.1.1.js"></script>
 <link rel="stylesheet"  type="text/css" href="sign_in.css">
 </head>
 <body>
 <div id="sign_in_wrapper">
 <textarea id="user_name"></textarea>
 <textarea id="password"></textarea>
 <button id="sign_in_button">Sign In!</button>
 </div>
 <div id="error"></div>

 <script>
    $('#sign_in_button').click(function () { 
    var user_name = $('textarea#user_name').val();
     var password = $('textarea#password').val();
    signIn(user_name,password);
    });

    function signIn(user_name, password) 
     {
    $.ajax({
       type: "POST", 
       url: "sign_in.php",
       data: "user_name="+user_name+"&password="+password,
    success: function(result)
    {   
        if(result = 'Error')
             document.getElementById("error").innerHTML ='user name and password are not match';
        else
             document.getElementById("sign_in_wrapper").innerHTML ='Welcome back '+result;  
    }
})}
 </script>
 </body>
 </html>

我更改了我的 php 代码:

<?php
 if(isset($_POST['user_name']) && isset($_POST['password']))
 {
    $user_name=mysql_real_escape_string($_POST['user_name']);
    $password=$_POST['password'];

    $sql = "SELECT * FROM users WHERE
    userName = '$user_name' AND password = '$password'";
    $result = mysql_query($sql);
    $result_rows = mysql_num_rows($result); // <-- this is the way to check the result

     if($result_rows)
    // OK
         echo $user_name;
     else
    // Bad login
         echo 'Error';
}
?>

现在我遇到了另一个错误: “警告:mysql_num_rows() 期望参数 1 为资源, bool 值在第 10 行 C:\wamp\www\Project\sign_in.php 中给出”

第 10 行是:$result_rows = mysql_num_rows($result);

感谢大家的快速解答!

最佳答案

这是因为:

$result = mysql_query($sql);

将始终返回 true(如果 SQL 查询正常,则在您的情况下为 Resource#)。不需要有这样的行来检查用户名/密码。

你必须:

$result = mysql_query($sql);
$result_rows = mysql_num_rows($result); // <-- this is the way to check the result

    if($result_rows)
        // OK
        echo $user_name;
    else
        // Bad login
        echo 'Error';

关于php - 使用 php 和 ajax 的登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25141836/

相关文章:

php - 为什么 Unlink 不适用于此脚本?

javascript - 为什么不工作? Onclick JavaScript

php - 为什么当我点击输入我的文本字段时我的 "No"单选按钮被点击了?

php - 在 PHP 的 foreach 循环中对项目进行分组

javascript - jQuery 获取上一个跨度

c# - Request.IsAjaxRequest() 总是返回 false

ajax - FireFox 何时支持 websocket?

jquery - 避免感叹号框自动完成 jquery 小部件

javascript - 即使添加了新问题,提交按钮如何始终位于页面下方

javascript - 同步 .each 与异步 .ajax