2016-09-23 9 views
0

最近私はPHPセッションを学び始めました。これは本当にログインを適切に行うのに本当に役立ちました。PHPセッションはゆっくりと動作します

私はあなたへのリンクを最初に与えるべきです:mk-appform.net16.net/login.php(あなたが望むように自由に使うことができます、これはテストです。固定されるとすぐにパスを変更することができます) ユーザー名:管理者 パスワード:あなたがログインしていない場合は1234 は、それは問題が

ある

テストしてくださいと、アドレスバーに直接の内容を入力しmk-appform.net16.net/advsearch.phpあらかじめログインする必要があるページが1秒間表示されます。その後、ログインページにリダイレクトされます。しかし、わかっていれば、これはどんな方法でも表示したくないでしょう。ここで

は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
のPHPコードは、

headerリダイレクトは瞬時に発生することはありません。ブラウザが接続をシャットダウンして新しい接続を開始するまでには、しばらく時間がかかります。つまり、場所ヘッダーを出力した後でページに出力したコンテンツは引き続き表示できます。ヘッダーを出力した後、スクリプトを中止する必要があります。例えば

<?php 

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

... regular page contents ... 

要するに、ユーザーに何かを見せたくない場合は、最初に出力しないでください。すべてが正しく動作している(または高速である)かどうかには依存しないでください。彼らはまれです。

関連する問題