【发布时间】:2012-03-08 04:29:45
【问题描述】:
我在 PHP 中编写了一个函数来检查 MySQL 数据库中的用户名和密码,并在成功验证后存储为会话。但是无论我在输入框中输入什么值,它都会批准它并成功登录。我的登录代码不起作用
这里是
function queryByUserAndPass($tableName, $username, $password){
$queryStatement = "SELECT * FROM ".$tableName." WHERE username='".$username."'
AND password='".$password."' LIMIT 1";
return $queryStatement;
}
function checkLogIn() {
if(isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
$queryState = queryByUserAndPass("nepal_users", $username, $password);
if( $resultQuery = mysql_query($queryState) ){
$found_user= mysql_fetch_array($resultQuery);
$_SESSION['id']=$found_user['id'];
$_SESSION['username']=$found_user['username'];
$message="succesful log in ".$_SESSION['username'];
header("location:home.php");
exit;
}else {
$message="error in log in";
}
}
}
请告诉我这段代码有什么问题以及为什么它不工作。
【问题讨论】:
-
函数 queryByUserAndPass($tableName, $username, $password){ $queryStatement = "SELECT * FROM ".$tableName." WHERE username='".$username."' AND password='" .$password."' LIMIT 1";返回$查询语句; }
-
你对用户密码没有加密吗??如果你有,你必须应用相同的方法
-
记住在将用户名和密码输入数据库之前使用
mysql_real_escape_string- 否则任何人都可以将' or 1='1作为密码并访问他们选择的用户名。 -
请清理您的数据流/准备好的语句、mysql_escape_string、mysql_real_escape_string、addslashes .../并始终使用加密哈希算法来保护您的密码/加盐/。
标签: php login session-variables session-cookies