任何人都可以看到什么不对的登录脚本:
public function login($username, $pass, $remember) {
// check username and password with db
// else throw exception
$connect = new connect();
$conn = $connect->login_connect();
// check username and password
$result = $conn->query("select * from login where
username='".$username."' and
password=sha1('".$pass."')");
if (!$result) {
throw new depException('Incorrect username and password combination. Please try again.');
} else {
echo $username, $pass;
}
解释:
目前,该脚本允许通过任何东西。 换句话说,查询返回的传递给它的任何用户名和密码正确。 我已经把echo语句,就像一张支票 - 显然脚本将继续在正常情况下!
我知道,CONNECT类和login_connect
方法工作,因为我在工作正常的寄存器脚本中使用它们。 depException仅仅是Exception类的扩展。
该功能登录()是一个包含寄存器,工作正常同一类()的一部分。
我知道这两个变量($ username和$通)越来越向功能,因为echo语句准确地输出它们。 (无需为这部分脚本的$记得变量,它是后来用于记得我的过程)。
我难倒。 请帮忙!
UPDATE
感谢那些响应。 我是越来越糊涂了与该查询返回了什么。 完整的脚本不检查返回多少行,这是那里的检查应该完成的事情。 一切工作现在除了我记得我的功能。 也许有人可以帮助与?!?! 以下是完整的脚本:
public function login($username, $pass, $remember) {
// check username and password with db
// else throw exception
$connect = new connect();
$conn = $connect->login_connect();
// check username and password
$result = $conn->query("select * from login where
username='".$username."' and
password=sha1('".$pass."')");
if (!$result) {
throw new depException('Incorrect username and password combination. Please try again.');
}
if ($result->num_rows>0) {
$row = $result->fetch_assoc();
//assign id to session
$_SESSION['user_id'] = $row[user_id];
// assign username as a session variable
$_SESSION['username'] = $username;
// start rememberMe
$cookie_name = 'db_auth';
$cookie_time = (3600 * 24 * 30);*/ // 30 days
// check to see if user checked box
if ($remember) {
setcookie ($cookie_name, 'username='.$username, time()+$cookie_time);
}
// If all goes well redirect user to their homepage.
header('Location: http://localhost/v6/home/index.php');
} else {
throw new depException('Could not log you in.);
}
}
非常感谢您的帮助。
更新2!
感谢您的帮助,我有这个脚本工作的主要部分。 然而,在最后的记得我还是有点想不工作。 可能有人给我一只手梳理出来? $的用户名,$通和$记得都是我以前分配将它们传递给函数保存写$ _ POST [“用户名”]等等,每次短变量名。 $记得是指一个复选框。