2016-09-23 73 views
0

最近我開始學習PHP會話,這真的幫助我正確地進行登錄。PHP會話緩慢工作

我應該首先給你鏈接:mk-appform.net16.net/login.php(隨意使用,只要你想,這是一個測試。 ) 用戶名:admin密碼 :1234 請測試它

的問題是,當你沒有登錄,並直接在地址欄中鍵入mk-appform.net16.net/advsearch.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'; 
    } 
    } 
?> 

的PHP代碼和,內容的代碼,我表現後(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

從標題中刪除refresh: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 ... 

總之,如果你不想讓用戶看到某些東西,那麼不要輸出它在第一個地方。不要依賴一切正常工作(甚至快速)。他們很少這樣做。