[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Моя функция приема GET и POST
Bodich
может не все предусмотрел или можно усовершенствовать :)


<?php
function
get_post ($name,$method){
if ($method=='get'){
if (isset($_GET[$name])) {
$return=$_GET[$name];
$return = trim($return);
$return = htmlspecialchars($return);
}
}

elseif($method=='post'){
if (isset($_POST[$name])) {
if ($_POST[$name]==''){echo 'переменная'.$_POST[$name].'пустая';}
else $return=$_POST[$name];
}
$return = trim($return);
$return = htmlspecialchars($return);
}
return $return;
}
?>

ну и вызов:
 $title = get_post('title','post');




Спустя 6 минут, 52 секунды (4.03.2012 - 03:21) TranceIT написал(а):
Тернарный оператор:
$GET['id'] = !empty($_GET['id']) && is_int($_GET['id']) ? $_GET['id'] : null;

В данном примере если $_GET['id'] не пустая и является integer, то она присвоится переменной $GET['id'], в противном случае присвоится пустота.

Спустя 2 часа, 27 минут, 33 секунды (4.03.2012 - 05:49) Visman написал(а):
У меня хитрее :P

//
// функция получения переменной из GET/POST/COOKIE/REQUEST
//

function getvar(&$array, $key, $default = Null)
{
if (!isset($array[$key])) return $default;

return get_magic_quotes_gpc() ? stripslashes_array(remove_bad_characters($array[$key])) : remove_bad_characters($array[$key]);
}

Спустя 1 час, 26 минут, 3 секунды (4.03.2012 - 07:15) TranceIT написал(а):
Откуда вы взяли remove_bad_characters?

Спустя 34 минуты, 27 секунд (4.03.2012 - 07:49) Visman написал(а):
Цитата (TranceIT @ 4.03.2012 - 12:15)
Откуда вы взяли remove_bad_characters?

Пользовательская функция.

Спустя 2 часа, 43 минуты, 26 секунд (4.03.2012 - 10:33) Michael написал(а):
Bodich, ты искажаешь входящие данные функцией htmlspecialchars, что не корректно.

Спустя 18 минут, 35 секунд (4.03.2012 - 10:51) olegod написал(а):
Далеко не всегда нужно убирать пробелы и экранировать спец символы во входящих данных. Если и делать такую функцию то для упрощения написания, и объединять post и get запросы нет смысла, намного сложнее писать. ИМХО:
    function get($var){
if(isGet($var)) {
return $_GET[$var];
}
}

function isGet($var){
if(isset($_GET[$var])) return true; else return false;
}

Точно так же получение методом post... Очень удобно писать - get('name');

Спустя 7 минут, 48 секунд (4.03.2012 - 10:59) Visman написал(а):
Цитата (olegod @ 4.03.2012 - 15:51)
function isGet($var){
if(isset($_GET[$var])) return true; else return false;
}

:blink:

Спустя 43 минуты, 7 секунд (4.03.2012 - 11:42) alex12060 написал(а):
боже, ну и треш тут)


function isGet($var){
if(isset($_GET[$var])) return true; else return false;
}


Не понимаю, что мешает сделать так?


function isGet($var){
return isset($_GET[$var]);
}



function getvar(&$array, $key, $default = Null)
{}


Уже что-то лучше :)

Спустя 3 часа, 17 минут, 11 секунд (4.03.2012 - 14:59) sergeiss написал(а):
Bodich - ну ты и написАл код :)

Если уж тебе хочется иметь универсальную функцию для проверки, то лучше использовать массив $_REQUEST. В нем содержатся и ГЕТы, и ПОСТы, и КУКИ. Единственная проблема в том, что по отдельности в каждом из 3-х массивов ты можешь иметь элементы с одинаковыми ключами. Но в РЕКВЕСТе от них останется только один элемент. Но если ты следишь за этим, т.е. чтобы не было одинаковых ключей в этих массивах, то тогда...

function get( $key )
{
return( isset( $_REQUEST[$key]) );
}

Спустя 10 минут, 32 секунды (4.03.2012 - 15:10) killer8080 написал(а):
TranceIT
Цитата (TranceIT @ 4.03.2012 - 02:21)
$GET['id'] = !empty($_GET['id']) && is_int($GET['id']) ? $_GET['id'] : null;

Не выполнимое условие wink.gif

Спустя 58 минут, 49 секунд (4.03.2012 - 16:09) TranceIT написал(а):
killer8080
Ну очепятка =) Подправлю...

Спустя 5 минут, 40 секунд (4.03.2012 - 16:14) inpost написал(а):
Это ужасно:
if ($_POST[$name]==''){echo 'переменная'.$_POST[$name].'пустая';}
Почему функция у тебя делает echo непонятно где в коде, где по логике должна идти обработка?
Так же htmlspecialchars - это абсурд.
Прогнать через trim можно с самого начала не парясь, и никакие для этого функции не нужны.
В первом условии ты обрабатываешь данные в том случае, если они есть, а во втором - всегда(!!!), при этом какой нафиг смысл метода, если далее trim, htmlspecialchars одинаково работают...

Ух, функция бесполезная и не нужная.

Спустя 5 часов, 40 минут, 41 секунда (4.03.2012 - 21:55) Bodich написал(а):
Спасибо за ответы, узнал много полезного,буду использовать сокращенный вариант!)
function get( $key )
{
return( isset( $_REQUEST[$key]) );
}


не понятно только насчет обработки полученых даных?
если потом в скрипте полученная переменная выводится а в ней какой нить яваскрипт нехороший то ниче не будет ???
или когда я записываю полученые даные в базу или файл а там html ненужный :huh:

Спустя 3 минуты, 12 секунд (4.03.2012 - 21:58) killer8080 написал(а):
Цитата (Bodich @ 4.03.2012 - 20:55)
если потом в скрипте полученная переменная выводится а в ней какой нить яваскрипт нехороший то ниче не будет ???

при выводе прогоняешь через htmlspecialchars()

Спустя 10 минут, 3 секунды (4.03.2012 - 22:08) Bodich написал(а):
если 5 раз каждый раз прогонять ?

Спустя 2 минуты, 51 секунда (4.03.2012 - 22:11) killer8080 написал(а):
Цитата (Bodich @ 4.03.2012 - 21:08)
если 5 раз каждый раз прогонять ?

Что значит 5 раз? Выводишь переменную в выходной поток, прогоняешь через htmlspecialchars. Какие проблемы?

Спустя 7 минут, 42 секунды (4.03.2012 - 22:19) Bodich написал(а):
я к тому что можно и в функции прогнать, или что мешает?

Спустя 9 минут, 4 секунды (4.03.2012 - 22:28) killer8080 написал(а):
логичней сохранять данные в БД в исходном виде, а обработку делать уже при выводе.

Спустя 23 минуты, 3 секунды (4.03.2012 - 22:51) Bodich написал(а):
ага понятно, а вот ситуация когда данные полученые от пользователя пишем прямо в файл , а потом читаем и выводим этот самый файл как быть??
просто как раз пишу такой код, и нехотелось бы наступить на грабли..
вообще как полученные данные обрабатывать в этом случае ?

Спустя 17 минут, 15 секунд (4.03.2012 - 23:08) killer8080 написал(а):
Цитата (Bodich @ 4.03.2012 - 21:51)
ага понятно, а вот ситуация когда данные полученые от пользователя пишем прямо в файл , а потом читаем и выводим этот самый файл как быть??

Так же как и с БД, разницы никакой.
Еще бывают ситуации когда пользовательские данные напрямую выводятся на этой же странице, например
<a href="/index.php?id=<?=$_GET['id']?>">link</a>
вот так делать нельзя, это пассивная XSS, нужно так (подразумевается что в переменной должно быть только число)
<a href="/index.php?id=<?=(int)$_GET['id']?>">link</a>

Если пишешь в файл - значит сохраняй так, как есть, если в БД прогоняешь через mysql_real_escape_string() (если бд mysql конечно и соединение установлено) причем последняя нужна не только для безопасности, но и вообще для корректного запроса к БД.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.