2016-11-25 3 views
0

Я два файла .php. Все html и php, не SQL и не нужны/не используются. Первая - это страница входа, другая - пункт назначения. Когда я ввел в журнал подробности, которые я установил, я не могу добраться до места назначения. Вот код для обеих страниц:Ошибка аутентификации страницы входа в систему PHP

Логин:

<!DOCTYPE html> 

(php tag here can't type it) 
session_start(); 

$username="testu"; 
$password="testp"; 
$_SESSION['logged_in']=false; 

if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true) { 
    header("Location: dest.php"); 
    exit; 
} 

if (isset($_POST['user']) && isset($_POST['pass'])) { 
    if ($_POST['user'] == $username && $_POST['pass'] == $password) { 
     $_SESSION['logged_in'] = true; 
     header("Location: dest.php"); 
     exit; 
    } 
} 
?> 

<html lang="en"> 

<head> 
    <title>A title</title> 
</head> 

<body> 
    <form action="dest.php" method="post" style="font- family:calibri;position:absolute;top:40%;left:35%;"> 
     Username: <input type="text" name="user"/><br><br> 
     Password: <input type="password" name="pass"  style="position:relative;left:5px;"/><br><br><br> 
    <input type="submit" value="Submit" style="position:relative;left:115px;"/> 
    </form> 

</body> 

</html> 

Назначение:

<!DOCTYPE html> 

(php tag here) 
session_start(); 

if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] == false) { 
    header("Location: login.php"); 
    exit; 
} 
?> 

<html lang="en"> 

<head> 
    <title>A title</title> 
</head> 

<body> 
    <a href="login.php">Log out</a> 
</body> 

</html> 

Я заметил, что когда я закомментировать код PHP на целевом файле, я мог бы получить доступ к Dest. PHP. Проблема заключается в том, что я могу получить доступ с любыми данными для входа в систему, или вообще ничего. Ничего не работает или что-то работает. Как я могу получить детали, которые я установил для работы? Я чувствую, что проблема заключается в скрипте страницы входа в систему. Большое спасибо заранее всем, кто может помочь мне разрешить это. Повернулось, что это правильно разрешено здесь: PHP login authentication not working Это совсем не дубликат, Фред-ии, который отметил это как один, явно не обращал внимания на код, который он просил. Он также удалил свои комментарии с моего поста.

+2

У вас есть 'session_start' в начале обоих? –

+0

@JonStirling Да, нужно добавить это в сообщение спасибо – H3ll0

+0

@JonStirling Добавлен в OP, H3ll0

ответ

0

Ваша проблема с session_start();. Вы должны поместить его поверх каждой страницы, с которой вы работаете.

session_start() создает сеанс или возобновляет текущую основанный на идентификатор сеанса передается через GET или POST запрос, или передаются через печенья.

<?php 

session_start(); //has to be on top of every site you use sessions 

$username = "testu"; 
$password = "testp"; 
$_SESSION['logged_in'] = false; 

if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true) { 
    header("Location: dest.php"); 
} 

if (isset($_POST['username']) && isset($_POST['password'])) { 
    if ($_POST['username'] == $username && $_POST['password'] == $password) { 
     $_SESSION['logged_in'] = true; 
     header("Location: dest.php"); 
    } 
} 
?> 
+0

Единственное, что было над ним, было , поэтому я переместил все php выше этого, и он все еще не прошел. Литература - единственное, что выше session_start(); is H3ll0

+0

@ H3ll0 вы можете разместить весь свой код? – Blueblazer172

+0

Полный код добавлен, спасибо. – H3ll0

1

От http://php.net/manual/en/function.session-start.php

Примечание:

Чтобы использовать куки на основе сеансов, session_start() должна вызываться перед outputing ничего браузера.

Переместить session_start() в ваш код. Например,

<?php 

session_start(); 

?><!DOCTYPE html> 
<!-- and the rest of your code here... --> 
+0

Как упоминалось в сообщении BlueBlazer, я уже пробовал это без успеха. Я попытался переместить весь PHP-код выше всего остального. Пожалуйста, прочитайте мои комментарии. – H3ll0

Смежные вопросы