2013-08-26 3 views
2

나는 PHP에 대해 질문이있다.사용자가 페이지에 있는지 확인 하시겠습니까?

나는 로그인/등록 페이지를 만들었습니다.이 페이지에서 사용자는 로그인 권한을 선택할 수 있으며 등록을 위해 남아 있습니다. 나는 나의지도의 루트에서 login.phpregister.php을 포함하면서 왼쪽과 오른쪽을했다. 사용자가 웹 주소 뒤에 login.php 또는 register.php를 입력 할 때

문제는, 그들은 내가 사용자가 both.php 페이지에 있는지 확인할 수있는 방법 등 어떤 스타일

과 실제 페이지로 그들은하려고하면 login.php 또는 register.php에 수동으로 입력하면 자동으로 both.php으로 리디렉션 하시겠습니까? ,

<?php 
if(strpos($_SERVER['REQUEST_URI'], '/login.php') !== false){ 
    header('Location: /both.php'); 
    exit; 
} 

당신은 그러나, register.php에 대한을 을 동일한 기능을 수행 할 것입니다로부터 사용자를 리디렉션 : 당신이 원하는 무엇

답변

5

이 가능, 당신과 같이, login.php의 상단에 $_SERVER['REQUEST_URI']를 확인하실 수 있습니다 그 페이지는 최선의 해결책이 아닙니다. 대신 login.phpregister.php을 웹 루트 외부로 이동해야합니다. 사용자가 액세스하지 못하도록하려는 파일은 웹 루트 외부에 있어야합니다.

웹 루트가 'public_html'이라고 가정 해 봅시다. 다른 두 파일을 포함, both.php

public_html: 
- both.php 
includes: 
- login.php 
- register.php 

다음을 수행하십시오 : 다음과 같이 디렉토리 구조를 만들

require __DIR__ . '/../includes/login.php'; 
require __DIR__ . '/../includes/register.php'; 

을 해당 파일들이 경로를 입력하여 볼 수 없습니다 웹 루트 외부에 있기 때문에 주소 표시 줄에 넣으십시오. 그러나 both.php은 여전히 ​​주소를 포함 할 수 있습니다.

+0

고마워요! 그것은 효과가 있었고, 여전히 리디렉션을 사용했는데, 그것은 내 웹 사이트에 가장 적합합니다! – Kets

+0

@Kets 환영합니다! 보안상의 이유로 스크립트를 웹 루트 바깥으로 이동하는 것이 더 좋으며 때로는 SEO를 위해 더 좋습니다 (both.php는 Google의 로그인 양식으로는 적합하지 않음). 웹 루트 외부의 모든 것을 이동하고 전면 컨트롤러를 사용하면 어떤 URL에서 어떤 리소스를로드할지 쉽게 제어 할 수 있습니다. – Paulpro

관련 문제