gpt4 book ai didi

php - 登录表单电子邮件和密码不正确错误

转载 作者:行者123 更新时间:2023-11-30 00:55:07 24 4
gpt4 key购买 nike

我创建了一个登录表单,但是当我尝试登录时,它说电子邮件或密码不正确,但我输入了正确的电子邮件和密码。

我在我的数据库用户表中创建用户,但我再次收到此错误。当我尝试清空电子邮件和密码时,所有错误都正常,它说您需要输入电子邮件和密码。

并且激活错误也可以。我输入了正确的密码和电子邮件地址。给我错误。

这是 users.php

<?php 
function user_exists($email) {
$email = sanitize($email);
return (mysql_result(mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `email` = '$email'"), 0) == 1) ? true : false;


}

function user_active($email) {
$email = sanitize($email);
return (mysql_result(mysql_query("SELECT COUNT(`id`) FROM `users` WHERE `email` = '$email' AND `active` = 1"), 0) == 1) ? true : false;


}
function user_id_from_email($email) {
$email = sanitize($email);
return mysql_result(mysql_query("SELECT `id` FROM `users` WHERE `email` = '$email'"), 0, 'id');
}
function login($email, $password) {
$id = user_id_from_email($email);
$email = sanitize($email);
$password = md5($password);

return (mysql_result(mysql_query("SELECT COUNT (`id`) FROM `users` WHERE `email` = '$email' AND `password` = '$password'"), 0 ) == 1) ? $id : false;
}



?>

这是 登录.php
<?php 

include("core/init.php");



if(empty($_POST) === false) {
$email = $_POST['email'];
$password = $_POST['password'];

if (empty($email) === true || empty($password) === true) {

$errors[] = 'You need to enter a email and password';
} else if (user_exists($email) === false) {
$errors[] = 'We can\'t find that email. Have you registered ?';

} else if (user_active($email) === false) {
$errors[] = 'You have\'t activated your account';
} else {
$login = login($email, $password);
if ($login === false) {
$errors[] = 'That email/passowrd cocmbination is incorrect';
}else {

$_SESSION['id'] = $login;
header('Location: main.php');

exit();

}

}
print_r ($errors);
}
?>

最佳答案

抱歉,但有一大堆东西是错误的——其中很多可能会产生错误。

1) php 中没有“清理”功能,您还没有告诉我们它的作用。

2)您的 login.php 确实包含 users.php

3) 生成密码的 md5 散列远非安全(它应该至少是一个预定的 sha1 散列)

4) 你从不检查 DBMS 返回的错误

5) ...实际上 - 这不是真的 - 你将 users.php 中函数的返回值与 false 进行比较 - 如果查询失败,你只会得到 false - 如果它返回 0 行则不会

考虑....

function do_something_with_email($email, &$err) {
$email = mysql_real_escape_string($email);

if (!($res=mysql_query("SELECT `id` FROM `users` WHERE `email` = '$email'"))) {
$err=mysql_error();
return false;
}
if (!($data=mysql_fetch_array($res)) {
$err=mysql_error();
return false;
}
return $data[0];
}

switch (do_something_with_email($email, $err)) {
case false:
die ($err);
case 0:
print "No records matched";
break;
default:
print "OK";
break;
}

关于php - 登录表单电子邮件和密码不正确错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20635859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com