Я новичок в PHP, я создал форму входа и домашнюю страницу. Я следовал тому же, что сказано в уроках, но я продолжаю получать сообщение об ошибке как «неправильные данные», хотя я предоставил правильные учетные данные.
// страница авторизации
**Login.php**
<?php
session_start();
include_once 'database1.php';
if(isset($_SESSION['user'])!="")
{
header("Location: index1.php");
}
if(isset($_POST['login']))
{
$email = mysql_real_escape_string($_POST['email']);
$pass = mysql_real_escape_string($_POST['password']);
$result=mysql_query("SELECT * FROM users WHERE email='$email'");
$row=mysql_fetch_array($result);
if($row['password']==md5($pass))
{
$_SESSION['user'] = $row['number'];
header("Location: index1.php");
?>
<script> alert ('haii'); </script>
<?php
}
else
{
?>
<script>alert('wrong details');</script>
<?php
}
}
?>
<html><body><form method="post" >
<label><center>EMAIL</center> <input type="text" name="email" placeholder="Your Email" required /> </label> </br>
<label>PASSWORD <input type="password" name="password" placeholder="Your Password" required /></label> </br><button type="submit" name="login">login</button> </br>
</br>
</form>
</html>
// индексная страница
**index1.php**
<?php
session_start();
include_once 'database1.php';
if(!isset($_SESSION['user']))
{
header("Location: login.php");
}
$result=mysql_query("SELECT * FROM users WHERE number=".$_SESSION['user']);
$userRow=mysql_fetch_array($result);
?>
<html>
<body>
<p> welcome </p>
</body>
</html>
Обычно строка md5 имеет 32 символа.
echo md5(77); // Result: 28dd2c7955ce926456240b2ff0100bde
Но в вашем случае база данных возвращает усеченную строку md5, которая имеет 20 символов.
28dd2c7955ce92645624
Проблема в том, что длина поля пароля вашей БД составляет всего 20 символов. Измените таблицу и установите длину поля пароля равной 32 символам, чтобы она могла содержать полную и правильную строку md5.
session_start();
include_once 'database1.php';
if(isset($_SESSION['user'])!="") {
header("Location: index1.php");
}
if(isset($_POST['login'])){
$email = mysql_real_escape_string($_POST['email']);
$pass = mysql_real_escape_string($_POST['password']);
$result=mysql_query("SELECT * FROM users WHERE email='$email'");
$row=mysql_fetch_array($result);
if($row['password']==md5($pass)) {
$_SESSION['user'] = $row['number'];
echo "<script>alert('logged in');</script>"header("Location: index1.php");
}
else {
echo "<script>alert('wrong credentials');</script>"}
}