2011-03-31 3 views
1

중첩 된 폴더 구조가 있으며 승인되지 않은 모든 페이지에서 login.php로 헤더 리디렉션을 수행하려고합니다. (모든 페이지에는 security.php가 포함됩니다.)PHP 헤더가 중첩 된 폴더로 리디렉션됩니다.

참고 :이 전체 폴더는 하위 폴더에있을 수 있으므로 DOMAIN + login.php는 작동하지 않습니다.

예 :

-index.php 
-login.php 
-security.php 
-people.php 
-activities 
    - view.php <-- How can I have do a header redirect back to login.php from here 

security.php

if (!isAllowed()) 
{ 
    header("Location: login.php"); 
} 

의 index.php

require_once('security.php') // Works fine 

활동/view.php

require_once ('../security.php'); //Works fine, but the HEADER redirect doesn't work 
+0

제 질문은 명확하지 않으므로 수정했습니다 –

답변

0

활동/view.php ->

require_once ('../security.php'); 

../

가 다시 폴더를 이동을 나타냅니다.

0

할 수있는 일이 많습니다. 상수를 설정하여 현재 경로를 정의한 다음이를 사용하여 절대 링크를 만드는 것이 좋습니다. 또한 서버 헤더 데이터를 사용하여 현재 경로를 파악하고 대상을 기반으로 그 경로를 결정할 수 있습니다.

header('Location: /login.php'); 작동합니다 : 또한, PHP5에 + 대신 아스 커의 갱신에 따라이 게시물 업데이트()

0

require_once 'security.php'; 

를 사용합니다.

+0

응용 프로그램이 도메인의 루트에 설치되었지만 어떤 이유로 그것이 하위 폴더에 저장하기로 결정한 경우 작동합니다. –

+0

그런 다음 하위 폴더를 정의하고'header ('Location : /'. $ subfolder. '/login.php'); – tvkanters

0

제 경험상 가장 좋은 방법은 응용 프로그램에 유용한 include_path을 정의하는 것입니다.

include_path = ".:/path/to/webroot/your_app/includes" 

을 ... 그리고, 우리의 응용 프로그램에 간단한 include 'file.php';와 그 디렉토리의 내용을 포함한다 :

php.ini, 우리는과 같이 우리의 경로를 설정할 것입니다. 이 애플리케이션은 추악한 경로를 추상화하여 로직을 깨끗하게 유지합니다. 우리는 또한 쉽게 응용 프로그램에서 코드를 재사용 할 수 있도록 할 수 있습니다

include_path = ".:/path/to/webroot/your_app/includes:/path/to/shared/includes" 

을 당신이 당신의 php.ini에 액세스 할 수없는 경우, 당신은 PHP의 set_include_path 기능을 사용할 수 있습니다. 이 접근법은 또한 이식성을 향상시킵니다.

관련 문제