使用jquery验证登录表单php

时间:2011-07-15 21:08:44

标签: php jquery

你好,我是新来的,也是编程的。今天我已经在php / mysql和jquery表单验证中创建了一个登录表单,并且很惊讶我的表单因为js脚本而无效?你工作得很好。

<div class="top_login_error" id="top_error">All fields must be field</div>
    <div id="logincontainer">
        <div id="loginbox">
            <div id="loginheader">
                <div>Control Panel Login</div>
            </div>
            <div id="innerlogin">
                <form method="POST" action="obr.php" id="login_form">
                    <p>Enter your username:</p>
                    <input type="text" class="logininput" name="login" id="login" />
                    <p>Enter your password:</p>
                    <input type="password" class="logininput" name="password" id="password" />
                    <input type="submit" class="loginbtn" value="Submit" name="enter" id="admin_login" /><br />
                    <p><a href="#" title="Forgoteen Password?">Forgotten Password?</a></p>
                </form>
            </div>
        </div>
        <img SRC="../images/administration/login_fade.png" alt="Fade" />
    </div>
</body>

用于验证表单的jquery ccode

$('#admin_login').click(function(q){

q.preventDefault();

    var login = $('#login').val();
    var password = $('#password').val();

    if (login.length == 0){
        $('#top_error').fadeIn(500);
        $('#login').addClass("logininput_error");
        var error = true;
    } else {
        $('#top_error').fadeOut(500);
        $('#login').removeClass("logininput_error");
        }
    if (password.length == 0){
        $('#top_error').fadeIn(500);
        $('#password').addClass("logininput_error");
        var error = true;
    } else {
        $('#top_error').fadeOut(500);
        $('#password').removeClass("logininput_error");
        }

});

和php

<?php 
session_start(); 



    if (isset($_POST['login'])){$login = $_POST['login'];} if ($login == ''){unset($login); exit('please enter name');}
    if (isset($_POST['password'])){$password = $_POST['password'];} if ($password == ''){unset($password); exit('please enter password');}

    $login = mysql_escape_string($_POST['login']);
    $password = mysql_escape_string($_POST['password']);

    //$password = md5($password); I have been disabled while testing in simle way, login : aaa , password : aaa;

    include("../db.php");

    $result = mysql_query("SELECT * FROM users WHERE login='".$login."' and password='".$password."'") or die(mysql_error());

    $line = mysql_fetch_array($result);

    if (empty($line['id'])){
        exit("Your name or login is incorect <a href='login.php'>back</a>");
    } else {

    $_SESSION['autorized'] = true;
    $_SESSION['login'] = $login;
    $_SESSION['password'] = $password;
    }
    echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";

?>

有人可以帮我处理代码,告诉我要改变什么,一切正常。谢谢

2 个答案:

答案 0 :(得分:5)

罪魁祸首是q.preventDefault();,只有在不提交表单时才会这样做。

答案 1 :(得分:1)

可能普鲁斯是对的。

Jquery文档非常好=&gt;您应该阅读http://api.jquery.com/jQuery.post/来发布请求(AJAX)和http://api.jquery.com/submit/来处理提交。

我还建议您使用PDO而不是“普通”MySQL来防止SQL注入。然后,您可以使用PHPunit在Uncle Bob's three rules of TDD之后正确测试代码。我喜欢使用内存中的SQLite数据库来测试我的代码(new PDO('sqlite::memory:');)。您可以看到我的简单身份验证库,看看我是如何做到的那样=&gt; https://github.com/alfredwesterveld/php-auth

相关问题