Я не уверен, в чем проблема. Данные пользователя находятся в моей базе данных MySQL и исправлены. Однако, когда я пытаюсь войти в систему, я получаю сообщение об ошибке, когда пользователь/пароль неверен. Я пытаюсь войти с использованием адреса электронной почты пользователей. Кроме того, я хочу добавить в сеанс первое имя и идентификатор пользователя.Регистрация PHP Имя пользователя/Пароль Неправильный
<?php
session_start();
include_once 'dbconnect_new.php';
if(isset($_SESSION['user'])!="")
{
header("Location: ../index.php");
}
if(isset($_POST['btn-login']))
{
$s_email = mysql_real_escape_string($_POST['email']);
$s_password = mysql_real_escape_string($_POST['password']);
$s_email = trim($s_email);
$s_password = trim($s_password);
$res=mysql_query("SELECT student_id, student_password, student_firstname FROM studentdata WHERE student_email='$s_email'");
$row=mysql_fetch_array($res);
$count = mysql_num_rows($res); // if uname/pass correct it returns must be 1 row
if($count == 1 && $row['student_password']==md5($s_password))
{
$_SESSION['user'] = $row['student_id'];
header("Location: ../index.php");
}
else
{
?>
<script>
alert('Username/Password Seems Wrong !');
</script>
<?php
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>New Reg Page</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<center>
<div id="login-form">
<form method="post">
<table align="center" width="30%" border="0">
<tr>
<td>
<input type="text" name="email" placeholder="Your Email" required />
</td>
</tr>
<tr>
<td>
<input type="password" name="password" placeholder="Your Password" required />
</td>
</tr>
<tr>
<td>
<button type="submit" name="btn-login">Sign In</button>
</td>
</tr>
<tr>
<td><a href="register_new.php">Sign Up Here</a></td>
</tr>
</table>
</form>
</div>
</center>
</body>
</html>
mysql_query устарел. Не используйте md5 для паролей. Тем не менее, var_dump $ s_email прямо перед определением $ res и убедитесь, что это то, что вы ожидаете. –
Почему бы не использовать 'и' в строке запроса? –
Некоторые советы: $ _SESSION ['user']! = '' Удалить часть! = '', Isset либо вернет true, либо false. Mysql escaping теперь устаревает в PHP, использует подготовленные операторы с mysqli или PDO. Шифрование MD5/SHA недостаточно для шифрования паролей и устарело, вместо этого используйте bcrypt. Я никогда не использовал md5, но bcrypt создает разные хэши для одного и того же пароля. Единственный способ сопоставления паролей - password_verify(). Это может быть проблемой в вашем случае. Вы уверены, что MD5 генерирует один и тот же хэш для одного и того же пароля при нескольких вызовах? –