PHP는 자동으로 변수를 "얻습니다"
-
06-07-2019 - |
문제
저는 회사를위한 새로운 웹 사이트를 거부하고 있으며 과거의 모든 사이트에서 사용한 스위치 탐색을 구현하려고합니다.
<?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를 사용하는 것처럼 불안해집니다.