2016-09-23 4 views
0

최근에 PHP 세션을 배웠습니다. 로그인을 올바르게하는 데 정말 도움이되었습니다.PHP 세션이 천천히 작동합니다.

나는 당신에게 다음과 같은 링크를 먼저 주어야한다. mk-appform.net16.net/login.php (당신이 원하는만큼 자유롭게 사용할 수있다. 테스트이다. 패스가 수정 되 자마자 바꿀 수있다.) 사용자 이름 : 관리자 암호 : 사용자가 로그인하지 않을 때는 1234 는,이 문제는

입니다

테스트하십시오 그리고, ADRESS 표시 줄에 직접의 내용을 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 ... 

즉, 사용자가 볼 수있는 것을 원하지 않는다면, 먼저 출력하지 마십시오. 제대로 작동하는 모든 것에 의존하지 마십시오 (또는 심지어 빠릅니다). 그들은 거의하지 않습니다.