您好,我正在 php 学院做这个教程,用于 php 和 mysql 登录和注册表单。一切顺利.. 他正在展示如何识别正确的表达方式,但要创建功能来回显错误.. 是的,听起来不错。因此,前几个错误正确回显,但实际验证 user_id 和 whatknot 的错误不起作用。即使我提交了正确的信息,它也会显示我在用户名和密码组合不正确时创建的错误。我创建了一些虚拟用户,但没有一个可以通过。
这是我的代码..
include 'core/init.php';
include 'includes/overall/header.php';
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
$errors[] = 'Uh oh! You forgot to enter your username and password';
} else if (user_exists($username) === false) {
$errors[] = 'Who is that? Have you registered?';
} else if (user_active($username) === false) {
$errors[] = 'Account is not activated.';
} else {
$login = login($username, $password);
if ($login === false) {
$errors[] = 'That username and password combination is incorrect';
} else {
$_SESSION['user_id'] = $login;
header('Location:index.php');
exit();
}
}
print_r($errors);
}
include 'includes/overall/footer.php';
和
function logged_in() {
return (isset($_SESSION['user_id'])) ? true : false;
}
function user_exists($username) {
$username = sanitize($username);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");
return (mysql_result($query, 0) == 1) ? true : false;
}
function user_active($username) {
$username = sanitize($username);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `active` = 1");
return (mysql_result($query, 0) == 1) ? true : false;
}
function user_id_from_username($username) {
$username = sanitize($username);
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
}
function login($username, $password) {
$user_id = user_id_from_username($username);
$username = sanitize($username);
$password = md5($password);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'");
return (mysql_result($query, 0) == 1) ? $user_id : false;
}
有谁知道我做错了什么?我已经尝试了一些东西,但没有任何效果。例如,在视频中,他的做法有点不同,并将他的查询排成一行,但这给了我错误,所以我按照他最初的方式做了,并制作了查询变量(我只知道我是什么实际上是在说哈哈)..但这解决了错误。我尝试对其他功能(未显示)这样做,但这导致了很多错误:(
这真的很愚蠢吗?之前我也遇到过类似的问题,后来我发现是因为缺少分号,但我盯着这个愚蠢的代码看了这么久,什么也没找到。我重新观看了教程系列中解释所有内容的视频这就像每个 10 次.. 我的眼睛感觉他们要流血或爆炸。一些评论表明其他人也有类似的问题..帮助?
我对所有这些 php mysql 东西都很陌生,所以.. 如果你像孩子一样对我说话,我不会被冒犯.. 事实上它很感激。
谢谢。