2009-12-28 9 views
2

이것은 어리석은 질문 일 수 있습니다. 그러나 내가 뭔가를하기 전에 물어볼 것이라고 생각했습니다. 사용자에게 전달되는 사용자 지정 로그인 대화 상자가있는 웹 응용 프로그램이 있습니다. 섬기는 사람. 두 항목 모두 데이터베이스의 항목과 일치하는 경우 사용자가 액세스 할 수있는 페이지가 10 개 정도 (해당 계정과 관련된 권한에 따라 다름)입니다 ... 대부분은 꽤 간단합니다.PHP 로그인 리디렉션

물론 사용자가 실제로 로그인하지 않았거나 권한이 충분하지 않은 페이지 중 하나에 액세스하려는 경우 사용자 이름/비밀번호를 입력하려면 로그인 페이지로 돌아 가야합니다. 그 (것)들에게 접근을 줄 것입니다.

내 질문 :이 일을 나를 위해, 자격 증명을 확인하고 누락되거나 부족한 경우 리디렉션하는 각 제한된 PHP 페이지의 맨 위에 전화를 해야하는 것 같습니다 ...이 있습니까? 건전한 접근? 또는 PHP가 응용 프로그램의 거의 모든 페이지에서 호출을 복제 할 필요가없는보다 지능적인 방법을 제공합니까?

은 BTW : - 그냥 똑바로 PHP

감사 이것은 MVC 응용 프로그램을하지 않습니다!

+0

그럼 왜 MVC 앱을 사용하지 않습니까? MVC 프레임 워크를 사용하면 컨트롤러 생성자 나 컨트롤러의 init() 함수 (Zend 프레임 워크와 같은)에서 코드를 호출하기 만하면됩니다. – AntonioCS

답변

6

예. 간단한 PHP 일 경우 모든 페이지를 확인해야합니다.

if (!hasAccess($user, $page)) 
{ 
    header("Location: signin.php?redirecturl={$page}"); 
    die(); 
} 

을 그리고 hasAccess() 내에서 논리를 수행하지만 이것은 어려운 일 필요는 없습니다. 이 논리를 별도의 파일에 포함 시켜서 모든 페이지에 포함시킬 수 있으며 액세스 기준 또는 향후 다른 사항을 업데이트하려는 경우 코드 자체를 한 곳에서 보관할 수 있습니다. 이 튜토리얼에

+1

'$ page '도'urlencode()'하고, 그냥 안전하기 위해서 요. – mpen

+0

'$ page '는 반드시 경로 일 필요는 없습니다. 정수 일 수 있습니다 :) – Sampson

+0

고마워요 - 그건 내 질문에 대한 답변. 내가 제정신이된다는 걸 알고 기뻐. – Bob

1

당신은 사용자가 로그인되어 있는지 확인하는 코드를 가지고 파일을 포함 사용할 수 있습니다를, 다음이 포함 모든 페이지 상단에서 로그인을 확인하십시오.

0

또한 로그인 확인을 수행하는 PHP 헤더 파일을 작성한 다음 보호 할 각 페이지의 맨 위에 해당 헤더를 포함시켜야합니다.