Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Велосипед? Или нужная функция…
 
 автор: Binura   (31.07.2007 в 10:49)   письмо автору
 
 

В общем давно была такая идея. Наконец ее написала.

<?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 - это массив в котором список переменных, которые придут постом или гетом.
функция возвращает массив из готовых ЗНАЧЕНИЙ переменных...

могут ли через эту функцию поломать сайт? Я хочу в нее добавить защиту… т.е. все переменные гет и пост будут обрабатываться ...

посоветуйте, что можно добавить в нее?

   
 
 автор: Trianon   (31.07.2007 в 11:08)   письмо автору
 
   для: Binura   (31.07.2007 в 10:49)
 


[] .= 


что-нибудь одно: либо [] либо .
Не находите?

>функция возвращает массив из готовых ЗНАЧЕНИЙ переменных...
и как Вы будете отличать name от msg?

   
 
 автор: Binura   (31.07.2007 в 11:18)   письмо автору
 
   для: Trianon   (31.07.2007 в 11:08)
 

>

>[] .= 
>

>
>что-нибудь одно: либо [] либо .
>Не находите?
да, я забыла. вначале я по другому сделала... там были переменные.

>>функция возвращает массив из готовых ЗНАЧЕНИЙ переменных...
>и как Вы будете отличать name от msg?
тут тоже правы
а если я удалю
if($value==="")continue;

получется пустое значение..

   
 
 автор: Trianon   (31.07.2007 в 11:26)   письмо автору
 
   для: Binura   (31.07.2007 в 11:18)
 

Чем не устраивает непосредственно $_GET, $_POST и $_COOKIE?
В конце концов от магических кавычек можно избавиться через .htaccess (либо рекурсивной функцией).

   
 
 автор: Binura   (31.07.2007 в 11:30)   письмо автору
 
   для: Trianon   (31.07.2007 в 11:26)
 

ну, наверно Вы правы...
хотя эта функция пригодиться, когда необходимо передалать c php4->php5...

только надо ее немного переделать... =)

   
 
 автор: Trianon   (31.07.2007 в 11:31)   письмо автору
 
   для: Binura   (31.07.2007 в 11:30)
 

а разве между php4 и php5 есть какая-то разница в этом плане?
Не заметил...

   
 
 автор: Binura   (31.07.2007 в 11:38)   письмо автору
 
   для: Trianon   (31.07.2007 в 11:31)
 

>а разве между php4 и php5 есть какая-то разница в этом плане?
>Не заметил...

ну, я про суперглобальные переменные...
чтоб глобал не включать.... хотя в пчп4 я не работала...

   
 
 автор: Trianon   (31.07.2007 в 12:40)   письмо автору
 
   для: Binura   (31.07.2007 в 11:38)
 

php4 и php5 в этом плане одинаковы.

   
 
 автор: cheops   (31.07.2007 в 11:30)   письмо автору
 
   для: Binura   (31.07.2007 в 10:49)
 

Хм... а почему $_REQUEST не используете, если требуется извлечение значений из POST и GET данных одновременно?

PS Через эту функцию взломать ничего нельзя - возможно можно взломать что-то через значения переменных, но сама по себе функция безобидна.

   
 
 автор: testdriver   (31.07.2007 в 15:37)   письмо автору
 
   для: 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"); // получаем переменную в не зависимости пришла она гетом или постом
?>

   
 
 автор: Unkind   (31.07.2007 в 15:51)   письмо автору
 
   для: testdriver   (31.07.2007 в 15:37)
 

Во-первых, зачем Вы удаляете 0x00 и 0x09?
Во-вторых, писать global $HTTP_GET_VARS, $HTTP_POST_VARS не надо - HTTP_GET_VARS и HTTP_POST_VARS и так глобальные массивы. И лучше использовать $_GET и $_POST.

   
 
 автор: testdriver   (31.07.2007 в 16:47)   письмо автору
 
   для: 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 по-моему они ток с этой версии были введены в обращение :)

   
 
 автор: Trianon   (31.07.2007 в 18:15)   письмо автору
 
   для: testdriver   (31.07.2007 в 16:47)
 

>Тут надо именно так, это тебе не $_GET и $_POST
Не порите чушь.

>HTTP_GET_VARS и HTTP_POST_VARS и так глобальные массивы
Это устаревшие имена. Они вынесены из обращения если не в пятерке - то в в шестерке - однозначно.

>А если версия PHP более ранняя нежели 4.1.0 по-моему они ток с этой версии были введены в обращение

Если версия более ранняя чем 4,1 - нужно менять хостера.
При невозможности сменить хостера нужно скопировать
$_GET = $HTTP_GET_VARS и т.д.

   
 
 автор: testdriver   (31.07.2007 в 19:15)   письмо автору
 
   для: 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 они действуют, да и хост сейчас даже с пятеркой редкость а уж с более поздними версиями и подавно.

   
 
 автор: Trianon   (31.07.2007 в 22:04)   письмо автору
 
   для: testdriver   (31.07.2007 в 19:15)
 

речь не о том, где не действует короткая форма.
Речь о том, где она действует.
Действует она и на четверке. Не на всякой - но на той, что стоит у хостеров, хотя бы чуть-чуть уважающих себя и клиента - действует однозначно.

   
 
 автор: Disable   (31.07.2007 в 15:53)   письмо автору
 
   для: testdriver   (31.07.2007 в 15:37)
 

я бы так сделал

$vars=array_map("callback",$_REQUEST);

function callback($v)
{
//делаем что угодно с элементами
return $v;
}

   
 
 автор: Binura   (01.08.2007 в 12:06)   письмо автору
 
   для: Disable   (31.07.2007 в 15:53)
 

думаю тему можно закрыть...
продолжим тут:

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=31578&page=1

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования