2010-07-19 5 views
0

에 대해 정의 내가 두 페이지가 : rooms.php을 사용자가 방에서 갈 때 나는 define('NOT',1);if (!defined('NOT')) exit('no direct!'); 을 사용하지만 한 rooms.php 를 통해 reservation.php에만 액세스 할 수 사용자 reservation.php. PHP는 reservation.php에 오류 메시지가 무엇입니까? 함수가 작동하지 않는 이유는 무엇입니까? 사전정의하고 허용 안 직접 액세스

+0

이것은 어떤 의미가 없습니까? 이제까지. 사용하고있는 실제 코드를 게시하고 (필자는 가정하지 않고 코드를 작성하십시오.) 글을 쓸 때 더 명확히하려고하십시오. –

+0

* 오류 메시지가 있습니다. * 오류 메시지를 아는 것이 도움이 될 것이라고 생각하십니까? 나도 그렇게 생각해! –

답변

1

감사 당신이 rooms.php 먼저 호출하고 링크를 통해 reservation.php로 이동하는 가정 : 당신이 다른 페이지에 액세스 한 후

상수가 손실됩니다. 당신은 session에 값을 저장해야합니다

session_start(); 
$_SESSION['NOT'] = 1; 

PHP 파일을 당신이 그것을 호출 할 때마다 실행됩니다 스크립트. 그러나 그것은 또한 스크립트가 실행 된 후에 모든 변수, 상수가 이 (가)으로 손실되었음을 의미합니다. 그러나 세션은 여러 페이지 호출을 통해 데이터를 보존하기위한 것입니다.

+0

대괄호는 Markdown 링크가 깨졌습니다. 나는 이것이 그가 의미하는 것이라고 생각한다. –

+0

@ 페카 : 오, 고마워. –

0

맨 그래서이

과 같은

if(!defined('FROM_ROOM')){ exit("Please go away");} 

를 추가하려면 rooms.php는 상기 Reservation.php 내 reservation.php

define('FROM_ROOM',true); 

의 포함 앞에 다음 코드를 추가로

rooms.php : define ('FROM_ROOM', true); 에는 'reservation.php'가 포함됩니다.

reservation.php :

if(!defined('FROM_ROOM')){ exit("Please go away");} 
echo "Im reservation.php, i only can be include by rooms.php"; 
+0

Im 예약 파일을 포함하지 않음, 예약에서 객실로 이동 – TheNone

+0

다음 세션을 사용해야합니다. DEFINE은 파일에 직접 액세스하지 못하도록 보호하는 데 사용되며, referer에 따라 특정 HTML을 허용하지 않습니다. – RobertPitt

+0

예, 맞습니다. pekka가 말했듯이이 문제에 대한 오해가 있습니다. 도와 주셔서 감사합니다. – TheNone

2

당신은 여기에서 오해가있을 수 있습니다 : rooms.php포함하여() 또는 필요reservation.php 포함 된 경우이 방법은 작동합니다(). 그것은, 예를 들어, referers를 위해 작동하지 않습니다.

그게 뭐니? 이 경우 코드가 올바르게 표시됩니다. rooms.phpreservation.php가 포함 된 줄 앞에

define('NOT', 1); 

를 포함 할 필요가있다; 그러나 그것은 효과가있다.

0

세션 변수가 필요하거나 HTTP 참조자를 확인하기 위해 상수가 필요하지 않습니다. 상수는 사용자가 ( reservation.php 포함) 일 경우에만 작동하며 사용자는 reservation.php를보기 전에 사용자가 rooms.php를 보았 음을 간단히 명시해야합니다.

관련 문제