Является ли эта очистка нормальной / достаточной для перенаправления страницы с использованием $ _GET? - PullRequest
1 голос
/ 29 декабря 2011

Я использую $ _get для простого перенаправления страницы. Я только начал узнавать о дезинфекции пользовательского ввода, поэтому мне было интересно, был ли приведенный ниже код в порядке. Есть ли какие-либо другие методы очистки, которые рекомендуются для этого конкретного кода? Если да, то почему?

О коде ниже. Я проверил, что пользователь ввел значение, а затем сопоставил его со списком допустимых значений перед перенаправлением.

$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$PAGES = array('a', 'b', 'c', 'd', 'z');

if (empty($_GET['letter'])) { 
$_GET['letter']="a";
}

if (!in_array($_GET['letter'], $PAGES)) { 
$_GET['letter']="a";  
}

$letter=$_GET['letter']; 
$goto=$letter .".php";
header("Location: http://$host$uri/$goto");

Ответы [ 2 ]

0 голосов
/ 29 декабря 2011

Если вы храните $ _GET ['letter'] в наборе $ PAGES, я думаю, у вас все будет хорошо. Тем не менее, ваш код действительно плохой!

Может быть, это поможет вам: PHP-переключатель с GET-запросом

Может быть, вам будет интересно использовать Zend Framework MVC.

http://framework.zend.com/manual/en/zend.controller.quickstart.html

Вы также найдете примеры с mod_rewrite. Приятного чтения !!!

0 голосов
/ 29 декабря 2011

Apache, mod_rewrite будет намного лучше для этого.

...