【发布时间】:2015-12-28 16:21:52
【问题描述】:
我的登录表单有问题。当我尝试登录时,即使我输入了正确的用户名和密码,javascript 也总是返回 false 值。
这是我在 jQuery 文件中的代码:
$(document).ready(function(){
var teamname = $("#teamname");
var teampassword = $("#teampassword");
function isPasswordCorrect()
{
var password = teampassword.val();
var name = teamname.val();
var result = false;
$.post('../php/validations/validatePassword.php', {tname: name, tpassword: password}, function(data){
if(data == 1){
result = true;
}else{
result = false;
}
});
return result;
}
$("#join").click(function(){
if(isPasswordCorrect()){
alert("You have joined");
}else{
alert("You have not joined");
}
});
});
这是我在 PHPfile 中的代码:
<?php
$teamname = $_POST['tname'];
$teampassword = $_POST['tpassword'];
if($teamname != "" || $teampassword !=""){
include('../connection.php'); // Here is the log in to the phpmyadmin
$queryCheckPassword = mysqli_query($con, "SELECT password FROM
teams WHERE name = '$teamname'");
$row = mysqli_fetch_row($queryCheckPassword);
$teamPassword = $row[0];
if($teamPassword == $teampassword)
{
echo 1;
}else{
echo 0;
}
}
?>
这是我在 HTML 文件中的代码:
<form id="joinform"> <!-- action="teams.php" method="post"> -->
<ul>
<div>
<label>Team name <font color='red'>*</font></label>
<input type='team' name='teamname' id='teamname' placeholder='Team name' readonly='readonly'/>
<span id='teamnameinfo'>Select an existing team</span>
</div>
<div>
<label for="teampassword">Team password <font color='red'>*</font></label>
<input type='password' name='teampassword' id="teampassword" placeholder='Team password'/>
<span id='teampasswordinfo'>Write team password</span>
</div>
<div>
<button name='join' id='join'>Join</button>
</div>
</ul>
</form>
【问题讨论】:
-
AJAX 是 异步 -
result变量操作并不那么准确。请在 AJAX 回调中进行检查。 -
我希望这些代码不会出现在 Internet 上。如果是这样,你应该添加一些代码来防止 SQL 注入。
-
你真的应该使用 PHP 的 built-in functions 来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,您可以使用
password_hash()compatibility pack。这是一个例子password test using AJAX -
感谢您与我分享这些有用的信息。我要检查一下。当然,如果没有 SQL 注入保护,我不会将这段代码放到 Internet 上。再次感谢您!
标签: php jquery forms login passwords