<?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'] не пустая и является integer, то она присвоится переменной $GET['id'], в противном случае присвоится пустота.
$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 запросы нет смысла, намного сложнее писать. ИМХО:
Точно так же получение методом post... Очень удобно писать - get('name');
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){ |
: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-х массивов ты можешь иметь элементы с одинаковыми ключами. Но в РЕКВЕСТе от них останется только один элемент. Но если ты следишь за этим, т.е. чтобы не было одинаковых ключей в этих массивах, то тогда...
Если уж тебе хочется иметь универсальную функцию для проверки, то лучше использовать массив $_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](http://phpforum.ru/html/emoticons/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 одинаково работают...
Ух, функция бесполезная и не нужная.
if ($_POST[$name]==''){echo 'переменная'.$_POST[$name].'пустая';}
Почему функция у тебя делает echo непонятно где в коде, где по логике должна идти обработка?
Так же htmlspecialchars - это абсурд.
Прогнать через trim можно с самого начала не парясь, и никакие для этого функции не нужны.
В первом условии ты обрабатываешь данные в том случае, если они есть, а во втором - всегда(!!!), при этом какой нафиг смысл метода, если далее trim, htmlspecialchars одинаково работают...
Ух, функция бесполезная и не нужная.
Спустя 5 часов, 40 минут, 41 секунда (4.03.2012 - 21:55) Bodich написал(а):
Спасибо за ответы, узнал много полезного,буду использовать сокращенный вариант!)
не понятно только насчет обработки полученых даных?
если потом в скрипте полученная переменная выводится а в ней какой нить яваскрипт нехороший то ниче не будет ???
или когда я записываю полученые даные в базу или файл а там html ненужный :huh:
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 конечно и соединение установлено) причем последняя нужна не только для безопасности, но и вообще для корректного запроса к БД.