|
|
|
| Коллеги. поглядите, плиз. Может ошибки какие есть?
Код должен убрать все лишние слэши из входных параметров скрипта.
(sgan - сокращение от SuperGlobal Array Names)
<?
if(get_magic_quotes_gpc())
foreach(array("_GET","_POST","_COOKIE","_REQUEST") as $sgan)
if(isset($$sgan))
foreach($$sgan as $k =>$v)
if(!is_array($v))
$$sgan[$k] = stripslashes($v);
else foreach($$sgan[$k] as $vk =>$vv)
$$sgan[$k][$vk] = stripslashes($vv);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(12.04.2006 в 17:52)
| | Меня смущает вот этот фрагмент:
<?
else foreach($$sgan[$k] as $vk =>$vv)
$$sgan[$k][$vk] = stripslashes($vv);
|
Ведь массивы могут иметь и большую вложенность. Тут бы правильнее было вызывать функцию рекурсивно. | |
|
|
|
|
|
|
|
для: Loki
(12.04.2006 в 22:12)
| | Я слабо представляю себе синтаксис определения многомерных массивов во входных полях. Можно пример такой формы?
Кроме того, по идее, с экранированием в области имен ключей массивов тоже надо что-то делать. Но никаких светлых мыслей в голову не приходит. | |
|
|
|
|
|
|
|
для: Trianon
(13.04.2006 в 10:50)
| |
<input name=test[razdel][rubrika][] type=text>
|
не то чтобы это часто происходит, но массив с двойным уровнем вложенности мне делать приходилось | |
|
|
|
|
|
|
|
для: Loki
(13.04.2006 в 12:14)
| | А так?
<?
function reduce_slashes($src)
{
if(!is_array($src))
return stripslashes($src);
$res = array();
foreach($src as $key => $val)
$res[stripslashes($key)] = reduce_slashes($val);
return $res;
}
if(get_magic_quotes_gpc())
foreach(array("_GET","_POST","_COOKIE","_REQUEST") as $sgan)
if(isset($$sgan))
foreach($$sgan as $k =>$v)
$$sgan[$k] = reduce_slashes($v);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(13.04.2006 в 15:20)
| | Так вроде должно работать. Только надо учесть одну тонкость: до версии 4.3 массив request включал в себя массив _FILES, а за его экранирование magic_quotes_gpc не отвечает. | |
|
|
|