У меня есть система входа в систему, что должно работать, но я получаю «Проверьте свои данные для входа».
Я уверен, что детали в порядке, однако это дает ошибку.
dologin.php
<?php
include('includes/functions.php');
if(isset($_POST['login'])) {
if(isset($_POST['username'])) {
if(isset($_POST['password'])) {
$username = $_POST['username'];
$query = mysql_query("SELECT * FROM cm_users WHERE Username = '$username'") or die(mysql_error());
$user = mysql_fetch_array($query);
if(md5($_POST['password']) == $user['Password']) {
echo "Login successful";
$_SESSION['user'] = $user['Username'];
header("Location: index.php");
} else {
echo "Please check your login details!";
include('login.php');
}
} else {
echo "Please check your password!";
include('login.php');
}
} else {
echo "Please check your username!";
include('login.php');
}
} else {
echo "Please check that you filled out the login form!";
include('login.php');
}
?>
Ваше предположение, что все правильно, легко проверить, в конце концов это отладка 101.
<?php
include('includes/functions.php');
if(isset($_POST['login'])) {
if(isset($_POST['username'])) {
if(isset($_POST['password'])) {
$username = $_POST['username'];
$query = mysql_query("SELECT * FROM cm_users WHERE Username = '$username'") or die(mysql_error());
$user = mysql_fetch_array($query);
//Proof debug code
echo 'Database password = ' . $user['Password'] . '<br>';
echo 'md5 of input password = ' . md5($_POST['password']) . '<br>';
echo 'ARE THEY THE SAME' . '<br>';
if(md5($_POST['password']) == $user['Password']) {
echo "Login successful";
$_SESSION['user'] = $user['Username'];
header("Location: index.php");
} else {
echo "Please check your login details!";
include('login.php');
}
} else {
echo "Please check your password!";
include('login.php');
}
} else {
echo "Please check your username!";
include('login.php');
}
} else {
echo "Please check that you filled out the login form!";
include('login.php');
}
?>
Кстати, MD5 больше не считается безопасным. Посмотри на это страница руководства о том, как это должно быть сделано сейчас
login.php
<html>
<head>
<title>Basic CMS - Admin Area</title>
</head>
<body>
<?php
session_start();
if(isset($_SESSION['user'])) {
header("Location: index.php");
} else {
?>
<form action="dologin.php" method="post">
<table>
<tr>
<td><span>Username:</span></td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td><span>Password:</span></td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" name="login" value="Login" /></td>
</tr>
</table>
</form>
<?php } ?>
</body>
</html>
index.php
<html>
<head>
<title>Basic CMS - Admin Area</title>
</head>
<body>
<?php
session_start();
if(isset($_SESSION['user'])) {
?>
<span>Logged in! Welcome <?php echo $_SESSION['user'];?></span>
<?php
} else {
header("Location: login.php");
}
?>
</body>
</html>
Теперь я получаю странную проблему, код, который я вставил раньше (login.php), должен проверить с помощью dologin.php, все детали в порядке, тогда login.php должен перенаправить на index.php, где я получаю сообщение «Logged in! Welcome marcell»
Но это как обновление, поэтому, получив имя пользователя, пароль, снова отправьте форму.