你好,我是新来的,也是编程的。今天我已经在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>";
?>
有人可以帮我处理代码,告诉我要改变什么,一切正常。谢谢
答案 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