|
|
|
| В общем давно была такая идея. Наконец ее написала.
<?PHP
function GP($GP)
{
$value = array();
foreach($GP as $gp)
{
if(!empty($_GET["$gp"]))
{$value[] .= $_GET["$gp"];}
if(!empty($_POST["$gp"]))
{$value[] .= $_POST["$gp"];}
if($value==="")continue;
}
return $value;
}
$GP = array('name','msg','mail');
$value = GP($GP);
foreach($value as $v)
{echo $v."<br/>";}
?>
|
$GP = array('name','msg','mail');
$GP - это массив в котором список переменных, которые придут постом или гетом.
функция возвращает массив из готовых ЗНАЧЕНИЙ переменных...
могут ли через эту функцию поломать сайт? Я хочу в нее добавить защиту… т.е. все переменные гет и пост будут обрабатываться ...
посоветуйте, что можно добавить в нее? | |
|
|
|
|
|
|
|
для: Binura
(31.07.2007 в 10:49)
| |
что-нибудь одно: либо [] либо .
Не находите?
>функция возвращает массив из готовых ЗНАЧЕНИЙ переменных...
и как Вы будете отличать name от msg? | |
|
|
|
|
|
|
|
для: Trianon
(31.07.2007 в 11:08)
| | >
>
>что-нибудь одно: либо [] либо .
>Не находите?
да, я забыла. вначале я по другому сделала... там были переменные.
>>функция возвращает массив из готовых ЗНАЧЕНИЙ переменных...
>и как Вы будете отличать name от msg?
тут тоже правы
а если я удалю
if($value==="")continue;
получется пустое значение.. | |
|
|
|
|
|
|
|
для: Binura
(31.07.2007 в 11:18)
| | Чем не устраивает непосредственно $_GET, $_POST и $_COOKIE?
В конце концов от магических кавычек можно избавиться через .htaccess (либо рекурсивной функцией). | |
|
|
|
|
|
|
|
для: Trianon
(31.07.2007 в 11:26)
| | ну, наверно Вы правы...
хотя эта функция пригодиться, когда необходимо передалать c php4->php5...
только надо ее немного переделать... =) | |
|
|
|
|
|
|
|
для: Binura
(31.07.2007 в 11:30)
| | а разве между php4 и php5 есть какая-то разница в этом плане?
Не заметил... | |
|
|
|
|
|
|
|
для: Trianon
(31.07.2007 в 11:31)
| | >а разве между php4 и php5 есть какая-то разница в этом плане?
>Не заметил...
ну, я про суперглобальные переменные...
чтоб глобал не включать.... хотя в пчп4 я не работала... | |
|
|
|
|
|
|
|
для: Binura
(31.07.2007 в 11:38)
| | php4 и php5 в этом плане одинаковы. | |
|
|
|
|
|
|
|
для: Binura
(31.07.2007 в 10:49)
| | Хм... а почему $_REQUEST не используете, если требуется извлечение значений из POST и GET данных одновременно?
PS Через эту функцию взломать ничего нельзя - возможно можно взломать что-то через значения переменных, но сама по себе функция безобидна. | |
|
|
|
|
|
|
|
для: Binura
(31.07.2007 в 10:49)
| |
<?
function variable($variable_name) {
global $HTTP_GET_VARS, $HTTP_POST_VARS, $$variable_name;
$$variable_name = "";
if (isset($HTTP_GET_VARS[$variable_name])) $$variable_name = $HTTP_GET_VARS[$variable_name];
if (isset($HTTP_POST_VARS[$variable_name])) $$variable_name = $HTTP_POST_VARS[$variable_name];
if (is_string($$variable_name))
{
$$variable_name = str_replace("\t"," ", str_replace("\0","", $$variable_name));
if (get_magic_quotes_gpc()) $$variable_name = stripslashes($$variable_name);
}
}
variable("msg"); // получаем переменную в не зависимости пришла она гетом или постом
?>
|
| |
|
|
|
|
|
|
|
для: testdriver
(31.07.2007 в 15:37)
| | Во-первых, зачем Вы удаляете 0x00 и 0x09?
Во-вторых, писать global $HTTP_GET_VARS, $HTTP_POST_VARS не надо - HTTP_GET_VARS и HTTP_POST_VARS и так глобальные массивы. И лучше использовать $_GET и $_POST. | |
|
|
|
|
|
|
|
для: Unkind
(31.07.2007 в 15:51)
| | >Во-первых, зачем Вы удаляете 0x00 и 0x09?
Потребовалось в решаемой мною задаче, да и тут лишним не будет (кого не устраивает может стиреть эту часть).
>Во-вторых, писать global $HTTP_GET_VARS, $HTTP_POST_VARS не надо
>HTTP_GET_VARS и HTTP_POST_VARS и так глобальные массивы
Тут надо именно так, это тебе не $_GET и $_POST.
>И лучше использовать $_GET и $_POST.
А если версия PHP более ранняя нежели 4.1.0 по-моему они ток с этой версии были введены в обращение :) | |
|
|
|
|
|
|
|
для: testdriver
(31.07.2007 в 16:47)
| | >Тут надо именно так, это тебе не $_GET и $_POST
Не порите чушь.
>HTTP_GET_VARS и HTTP_POST_VARS и так глобальные массивы
Это устаревшие имена. Они вынесены из обращения если не в пятерке - то в в шестерке - однозначно.
>А если версия PHP более ранняя нежели 4.1.0 по-моему они ток с этой версии были введены в обращение
Если версия более ранняя чем 4,1 - нужно менять хостера.
При невозможности сменить хостера нужно скопировать
$_GET = $HTTP_GET_VARS и т.д. | |
|
|
|
|
|
|
|
для: Trianon
(31.07.2007 в 18:15)
| | >Не порите чушь
А вот не надо экспресивных выражений.
У меня установлен PHP5 и в теле функции не действуют они как суперглобальные, причина? не задавался этим вопросом.
вот даже специально перепроверил:
<?PHP
//передаем в скрипт постом переменную msg
function variable() {
//global $HTTP_POST_VARS; // без этого не чего не вернет
$variable_name = $HTTP_POST_VARS['msg'];
return $variable_name;
}
echo "Значение: ".variable();
?>
|
Я не оспариваю, что $_GET использовать предпочтительней чем $HTTP_GET_VARS, но их использование всего лишь не рекомендуется, а не запрещенно, поэтому с чего вдруг такая категоричность? В PHP5 они действуют, да и хост сейчас даже с пятеркой редкость а уж с более поздними версиями и подавно. | |
|
|
|
|
|
|
|
для: testdriver
(31.07.2007 в 19:15)
| | речь не о том, где не действует короткая форма.
Речь о том, где она действует.
Действует она и на четверке. Не на всякой - но на той, что стоит у хостеров, хотя бы чуть-чуть уважающих себя и клиента - действует однозначно. | |
|
|
|
|
|
|
|
для: testdriver
(31.07.2007 в 15:37)
| | я бы так сделал
$vars=array_map("callback",$_REQUEST);
function callback($v)
{
//делаем что угодно с элементами
return $v;
} | |
|
|
|
|