문제

저는 회사를위한 새로운 웹 사이트를 거부하고 있으며 과거의 모든 사이트에서 사용한 스위치 탐색을 구현하려고합니다.

<?php
switch($x) {

default:
include("inc/main.php");
break;

case "products":
include("inc/products.php");
break;

}
?>

index.php? x = 제품으로 이동할 때 어떤 이유로 든 아무런 일이 발생하지 않으며 여전히 inc/main.php를 표시합니다. 즉, URL에서 x 변수를 감지하지 못했습니다. 이것이 글로벌 변수와 관련이 있습니까?

도움이 되었습니까?

해결책

예, PHP 구성이 있습니다 바르게 갖다 register_globals 꺼졌습니다. 엄청나게 안전하지 않기 때문입니다.

그냥 넣어 :

$x = $_REQUEST['x']

스크립트 상단에.

당신은 또한 사용할 수 있습니다 $_GET 당신이 구체적으로 이것만이 작동하기를 원한다면 GET HTTP 방법. 나는 어떤 사람들이 그것을 주장하는 것을 보았다 $_REQUEST 어떻게 든 안전하지는 않지만 그것을 뒷받침 할 증거는 없습니다.

다른 팁

이전 웹 호스트가 모두 사용 된 것 같습니다 register_globals 그리고 당신의 코드는 그것에 의존합니다. 이것은 위험한 PHP 6.0에서 설정하고 정당하게 제거되었습니다! 사용 switch($_GET['x']) { 대신에.

이 변수를 읽으려면 $ _get을 사용해야합니다. 호출 된 더 이상 사용되지 않은 함수가 있습니다 register_globals, 그러나 잠재적 인 보안 위험이기 때문에 이것을 사용하는 것이 확실하지 않습니다.

당신이 사용할 수있는 http://php.net/manual/es/function.extract.php 원하는 경우 변수를 추출하려면,이를 명심하십시오. 이렇게하면 스크립트에 원하는 컨텐츠로 사용자가 변수를 설정할 수 있으므로 register_globals를 사용하는 것처럼 불안해집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top