PHP автоматически "GET" переменные - PullRequest
3 голосов
/ 03 ноября 2008

Я создаю новый веб-сайт для своей компании и пытаюсь внедрить навигацию по коммутаторам, которую я использовал на всех своих сайтах в прошлом.

<?php
switch($x) {

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

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

}
?>

По какой-то причине, когда я захожу в index.php? X = products ничего не происходит, он по-прежнему отображает inc / main.php, другими словами, он не обнаружил переменную X из URL. Это как-то связано с глобальными переменными?

Ответы [ 4 ]

15 голосов
/ 03 ноября 2008

Да, в вашей конфигурации PHP правильно отключено register_globals, потому что это невероятно небезопасно.

Просто положите:

$x = $_REQUEST['x']

вверху вашего скрипта.

Вы также можете использовать $_GET, если вы специально хотите, чтобы это работало только для HTTP-метода GET. Я видел, как некоторые люди утверждают, что $_REQUEST как-то небезопасно, но нет никаких доказательств, подтверждающих это.

5 голосов
/ 03 ноября 2008

Кажется, что все ваши предыдущие веб-хосты использовали register_globals и ваш код полагается на это. Это опасный параметр, который был по праву удален в PHP 6.0! Вместо этого используйте switch($_GET['x']) {.

1 голос
/ 03 ноября 2008

Вы должны использовать $ _GET для считывания этих переменных. Существует устаревшая функция с именем register_globals , но я бы определенно не советовал ее использовать, поскольку это потенциальная угроза безопасности.

0 голосов
/ 23 августа 2011

Вы можете использовать http://php.net/manual/es/function.extract.php для извлечения переменных, если вы хотите это сделать, но имейте в виду, что это позволяет любому пользователю устанавливать переменные с содержимым, которое они хотят в вашем скрипте, что делает его таким же небезопасным, как использование register_globals

...