2016-09-23 72 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 ... 

总之,如果你不想让用户看到某些东西,那么不要输出它在第一个地方。不要依赖一切正常工作(甚至快速)。他们很少这样做。