我还处于早期学习阶段,我用头撞墙寻找线索。我一直在阅读手册无济于事。
我正在根据 phpAcadmy 教程“注册和登录”构建用户登录系统。他们在教程中使用 mysql_connect,但我使用的是与 mysql 的 PDO 连接。
1) 函数 user_id_from_username 应该返回user_id
已发布的 $username 的条目。我的没有,我对如何简单地返回条目感到困惑,我只需要一点指导和解释。
2)登录功能有效,但如果为真,我需要它返回 $user_id,以便我可以设置会话。
这是我的代码:
<?php
function user_id_from_username(PDO $db, $username) {
$stmt = $db->prepare('SELECT `user_id` FROM `users` WHERE `username` = 1');
$stmt->bindParam(1, $username);
$stmt->execute();
return ($stmt->fetchColumn());
} //??? I NEED THIS FUNCTION TO RETURN THE `user_id` ENTRY FOR $username
function login(PDO $db, $username, $password) {
$user_id = user_id_from_username($db, $username);
$password = md5($password);
$stmt = $db->prepare('SELECT COUNT(`user_id`) FROM `users` WHERE `username` = ? AND `password` = ?');
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $password);
$stmt->execute();
return (bool) $stmt->fetchColumn();
} //??? I NEED THIS FUNCTION TO RETURN $user_id IF TRUE (to set session)
//---------------------login.php-----------------------
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
$errors[] = 'You need to enter a username and password.';
} else if (user_exists($db, $username) === false) {
$errors[] = 'We can\'t find that username. Have you registered?';
} else if (user_active($db, $username) === false) {
$errors[] = 'You haven\'t activated your account!';
} else {
$login = login($db, $username, $password);
if ($login === false) {
$errors[] = 'That username/password combination is incorrect.';
} else {
die($login);
}
}
print_r($errors);
}
因此,根据这个登录脚本,在成功登录(正确的用户名和密码,以及活动帐户)后,它应该输出 $user_id 整数:“die($login)”。
(我没有包括其他两个函数:user_exists 和 user_active,因为我让它们正常工作)
它正确打印错误数组,它登录正常,除了下一步。
提前感谢您帮助我!