2016-09-23 4 views
0

Недавно я начал изучать PHP-сессии. Это действительно помогло мне правильно войти в систему.PHP Session работает медленно

Сначала я должен предоставить вам ссылку: mk-appform.net16.net/login.php(feel можно использовать как хотите. Это тестирование. Я могу изменить пропуск, как только он будет исправлен.) Имя пользователя: Пароль администратора : 1234 Пожалуйста, проверьте его

проблема заключается в том, когда вы не вошли в систему и введите mk-appform.net16.net/advsearch.php непосредственно в строке адрес, содержание страница, которую я требую для входа в систему, видна на секунду. Затем она перенаправляется на страницу входа. Но вы знаете, я бы не хотел, чтобы это было показано каким-либо образом. В конечном итоге это потребует входа в систему.

Вот PHP коды login.php

<?php 
    if (isset($_POST['submit'])) 
    { 
    if(isset($_POST['user']) && isset($_POST['password'])) 
    { 
     $user = $_POST['user']; 
     $password = $_POST['password']; 

     if(empty($user) || empty($password)) 
     { 
      echo 'Please fill the form'; 
     } 
     else 
     { 

     if($user == 'admin' && $password == '1234') 
      { // check the infos 
      session_start(); 
      $_SESSION['user'] = 'admin'; 
      $_SESSION['password'] = '1234'; 
      echo 'Login Succeeded.Now redirecting to panel...'; 
      header("refresh:2; url=advsearch.php"); 
     } 
    else 
    {  
      echo 'Invalid Username or Password'; 
    } 
    } 
    } 


    else 
    { 
     echo 'Please use the form'; 
    } 
    } 
?> 

И, код содержания показываю после успешного входа в систему (advsearch.php)

<?php 
session_start(); 

if(isset($_SESSION['user']) && isset($_SESSION['password'])) 
    { 
     if($_SESSION['user'] == 'admin' && $_SESSION['password'] == '1234') 
     { 
      header("url=advsearch.php"); 
     } 
     else 
     { 
      session_destroy(); 
      echo 'Redirecting..'; 
     } 
    } 
    else 
    { 

      header("refresh:0; url=login.php"); 
    } 

?>

+0

Удалить обновление: 0 из заголовка и выйти после каждого перенаправления. – Akar

ответ

2

header перенаправления не являются мгновенными. Браузеру требуется несколько минут, чтобы начать закрывать соединение и инициировать новый. Это означает, что все содержимое, выводимое на странице после вывода заголовка местоположения, можно просмотреть. После вывода заголовка вы должны прервать свой скрипт. например

<?php 

if (need to redirect) { 
    header('Location: login.php'); 
    echo 'redirecting to login page, please wait ...'; 
    exit(); // you need this 
} 

... regular page contents ... 

Короче говоря, если вы не хотите, чтобы что-то было видимым для пользователя, то НЕ ВЫПОЛНИТЕ его в первую очередь. Не зависеть от того, что все работает нормально (или даже быстро). Они редко делают.