Я изучаю PHP, и я создал простой скрипт для входа, но проблема в том, что он перенаправляет меня только на пустую страницу. Он предназначен для перенаправления на index.php, если учетные данные пользователя верны, но это, по-видимому, не так? Существуют также проверки, так что если пользователь вводит пустой, возвращается ошибка. Это, похоже, не было выполнено.Простой логин, возвращающий пустую страницу
login.php
<form id="login-form" method="post" action="logininc.php"> <fieldset>
<legend>Login </legend>
<p>Please enter your username and password to access the administrator's panel</p>
<label for="user"> <input type="text" name="user" placeholder="Type your username here" id="user" /></label>
<label for="password"> <input type="password" name="password" placeholder="Type your password here" id="password" /></label>
<label for="submit"> <input type="submit" class="btn btn-primary"name="submit" id="submit" value="Login" /> </label> </fieldset> </form>
logininc.php // моя страница обработки
<?php
require_once("assets/configs/db_config.php");
$user=$_POST['user'];
$password=$_POST['password'];
if(isset($_POST['login']))
{
//To ensure that none of the fields are blank when submitting the form if
if($user || $password != NULL)
{
$user = stripslashes($user);
$password = stripslashes($password);
$user = mysqli_real_escape_string($user);
$password = mysqli_real_escape_string($password);
$sql="SELECT * FROM $test_db WHERE user='$user' and password='$password'";
$result=mysqli_query($sql);
$row=mysql_fetch_array($result);
if($row['user'] == $user && $row['password'] == $password)
{
session_start();
$_SESSION['user'] = $user;
$_SESSION['password'] = $password;
$_SESSION['loggedin'] = "true";
header("location:index.php");
}
else
{
print ('<div id="error">Computer says no.</div>');
}
print ('<div id="error">Enter something!</div>');
}
}
?>
index.php // успех страница
<?php //module to check logins
session_start();
if(!isset($_SESSION["loggedIn"])){
header("Location: login.php");
exit;
}
Echo 'Congratulations <b>'.$_SESSION['user'].'</b> you successfully logged in!!<br />
Your Password is: <b>'.$_SESSION['password'].'</b><br />
<a href="login.php">Logout</a>';
?>
Правильные ответы уже были даны, но хотели прокомментировать ваш чек. Ваш условный - если $ user || $ password! = NULL. Это эквивалентно высказыванию, если $ user возвращает true ИЛИ, если пароль $ не равен NULL. Таким образом, он не проверяет, заполнены ли как $ user, так и пароль $. Вам нужно два отдельных условия, связанных с &&. (&& = оба должны возвращать true, || либо либо один из них должен возвращать true) Так что это должно быть ($ user! = NULL && $ password! = NULL) – vanamerongen
U не должен хранить пароли как открытый текст. Никогда .. – DarkBee
Отличный код для [SQL injection] (http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php). – jor