使用php和javascript验证登录表单

时间:2013-12-26 13:59:25

标签: javascript php html

这些获取用户输入的用户名和密码,并且应该发送到validate.php文件以检查记录是否存在于数据库中。并收到回复。

<script type="text/javascript">
function validatelogin() {
    var user=document.forms["login"]["username"].value;
    var pass=document.forms["login"]["password"].value;
    if(user==null || user=="") {
        alert("Please enter username");
        $('#username').focus();
        return false;
    } else if(pass==null || pass=="") {
        alert("Please enter password");
        $('#password').focus();
        return false;
    } else if(user!==null || user!=="" || pass!==null || pass!=="") {
        // These gets the username and password inputted by the user and is 
        // expected to be sent to the validate.php file to check whether the 
        // records is present in the database or not. and receives a response.
       $.ajax({
            url : "validate.php",
            type : 'POST',
            data :  $('#login').serialize(),
            success : function(msg) {
                $('#login-box').html(msg);
            }
        });
        return false;
    } else {
        alert("form submitted");
    }
}
</script>

php文件 - 用于查询数据库以检查现有记录,并期望触发回到ajax的真或假响应 - 请问我该如何做到这一点。然后代码现在可以决定是否登录

<?php
    error_reporting(0);
    mysql_pconnect("localhost","root","");
    mysql_select_db("sim_tracker");
    $username=$_POST['username'];
    $password=$_POST['password'];
    mysql_query("select * from  tbl_user where 
        username='$username' and password='$password'");
    $row=mysql_affected_rows();
    if($row>0) {
        return false;
        echo"$username,$password";
    }      
?>

HTML

<div id="login-box" class="login-popup">
    <a href="#" class="close">
        <img src="images/close_pop.png" class="btn_close" 
            title="Close Window" alt="Close" />
    </a>
    <form method="post"  id="login" class="signin" 
        action="#" onSubmit="return validatelogin()">
        <fieldset class="textbox">     
            <label class="username">
                <span>Username or email</span>
                <input id="username" name="username" value="" 
                    type="text" autocomplete="on" placeholder="Username">
            </label>
            <label class="password">
                <span>Password</span>
                <input id="password" name="password" value="" 
                    type="password" placeholder="Password">
            </label>
            <button class="submit button" type="submit">Sign in</button>
            <p>
                <a class="forgot" href="#">Forgot your password?</a>
            </p>
        </fieldset>
    </form>
</div>

1 个答案:

答案 0 :(得分:0)

我在您的代码中看到至少2个问题:

  • mysql_affected_rows()不会引用选择查询,您正在寻找mysql_num_rows()
  • 你的echo语句永远不会被执行,因为它前面有一个返回,所以你的脚本在两种情况下都会(登录信息是否正确)绝对没有返回。所以这里有一些更好的代码:
    $result = mysql_query("select * from  tbl_user where username='$username' and password='$password'");
    $row_count = mysql_num_rows();
    if ($row_count > 0) {
        // login correct, add some code to actually log the user in (i. e. some session stuff)
        echo "You were logged in!"; // if you want just true or false say echo 1 instead
    }
    else {
        // login incorrect
        echo "Wrong username or password!" // or again echo 0
    }