2016-07-16 2 views
3

여기 내 웹 사이트의 폴더 구조 :header()가 나를 올바르게 리디렉션하지 않는 이유는 무엇입니까?

myweb/ 
    index.php 
    files/ 
     autoloader.php 
     login.php 

그리고 여기 내 스크립트입니다

// login.php 

class login{ 

    public function __construct() { 
     function signed(){ 
      header('Location: ../'); 
      exit; 
     } 
    } 

    public function index(){ 

     echo isset($_SESSION['error_message']) ? $_SESSION['error_message'] : null; 

     if ($_SESSION['login'] == 1) { 
      signed(); 
     } 

     $_SESSION['login'] = 1; 

     if ($_SESSION['login'] == 1) { 
      $_SESSION['error_message'] = 'something is wrong'; 
      header('location: ../login'); 
     } 
    } 
} 

나는이 경로로드 할 때 :

: 여기

localhost/myweb/login 

을 이가지 경우입니다

  1. $_SESSION['login']1과 같다 : localhost/myweb
  2. $_SESSION['login']1에 동일하지 않다 : localhost

첫 번째 경우는 괜찮습니다, 나는 그것이 의미 : 내 스크립트가이 경로에 저를 리디렉션 내 스크립트가이 경로에 저를 리디렉션 예상대로 작동합니다. 하지만 두 번째 경우가 잘못되었습니다. 예상대로 작동하지 않습니다. 두 번째 경우에는이 경로로 나를 리디렉션해야합니다 : localhost/myweb/login. 어떻게 해결할 수 있습니까?

참고 : 모든 페이지는 index.php을 통해 전달됩니다.

+0

시험해보기 : header ('location :/login'); – CrazyVK56

+0

@ user4887505 틀린 .. 당신의 경우에 그것은'localhost/login'이 잘못된 경로로 리디렉션됩니다. –

+0

"localhost/myweb/login"경로를로드하고 $ _SESSION [ 'login']이 (가) 과 같지 않은 경우 이미 로그인 파일에 있으므로 페이지를 리디렉션하는 이유는 무엇입니까? – CrazyVK56

답변

0

ob_start();를 사용할 수 있습니다. 페이지 상단에 ob_end_flush(); 헤더 다음에. 그것은

ob_start(); 

클래스 로그인이 코드를 기반으로 {

public function __construct() { 
    function signed(){ 
     header('Location: ../'); 
     ob_end_flush(); 
     exit; 
    } 
} 

public function index(){ 
    if ($_SESSION['login'] == 1) { 
     signed(); 
    } 

    $_SESSION['login'] = 1; 

    if ($_SESSION['login'] == 1) { 
     header('location: ../login'); 
     ob_end_flush(); 
    } 
} 

}

0

, 나는 $_SESSION['login']의 상태를 볼 수 없습니다 페이지를 리디렉션 자바 스크립트를 사용할 수 마지막 옵션을 작동해야 같지 않음 (!=)에서 1으로 비교됩니다. 당신은 항상 1에 세션 로그인을 설정

$_SESSION['login'] = 1; 

if ($_SESSION['login'] == 1) { 
    $_SESSION['error_message'] = 'something is wrong'; 
    header('location: ../login'); 
} 

그리고이 부분이 이해가되지 않습니다는, 따라서 그 상태로 입력 할 방법이 없습니다.

관련 문제