function post($post, $nul) {
$value = !empty($post)?$post:$nul;
$value = htmlspecialchars($value);
return $value;
}
Применяю ее вот так
if(isset($_POST['send'])) {
$name = post($_POST['name'], "Гость");
$pass = post($_POST['pass'], NULL);
}
Собственно возможно ли создать функцию так, что бы она обрабатывала все значения подряд. Что я хочу сказать, то есть, отправлять в post и в функцию массив данных, а в функции циклом их обрабатывать.... или это бред?
Спустя 4 минуты, 34 секунды (6.07.2011 - 18:00) m4a1fox написал(а):
Что то типо такого
function post ($send, $post = array(), $nul)
{
if(isset($send)
for($i=0; $i<count($post); $i++)
{
$value = !empty($post[$i])?$post[$i]:nul
}
}
return $value;
}
Спустя 32 секунды (6.07.2011 - 18:00) bulgakov написал(а):
Гм... может я чего-то не понял что вам нужно, $_POST[] это и есть массив сколько бы ни было там значений можете их легко все обработать тем же foreach()
Спустя 2 минуты, 17 секунд (6.07.2011 - 18:02) Игорь_Vasinsky написал(а):
тебе лучше функцию в цикле, чем цикл в функции, при последнем - ты же получишь массив на выводе, а при первом - набор переменных... по моиму - оптимально.
Спустя 28 секунд (6.07.2011 - 18:03) m4a1fox написал(а):
Игорь_Vasinsky
А по конкретнее...?
А по конкретнее...?
Спустя 2 минуты, 7 секунд (6.07.2011 - 18:05) neadekvat написал(а):
Более того, бред и происходящее сейчас.
С каких это пор все данные, приходящие через пост надо обрабатывать функцией htmlspecialchars? Для нее лучше использовать свою. На ирбисе представлена неплохая (примерно так):
Соответственно, те данные, которые надо обработать именно htmlspecialchars, отправляются в html_chars, туда можно отправить и весь _POST:
Но mysql_real... все-таки чаще используется для входящих данных.
P.S. все-таки null, а не nul
С каких это пор все данные, приходящие через пост надо обрабатывать функцией htmlspecialchars? Для нее лучше использовать свою. На ирбисе представлена неплохая (примерно так):
/**
* @param string|array
*/
function html_chars($data)
{
if (is_string($data))
return htmlspecialchars($data);
else
return array_map('html_chars', $data);
}
Соответственно, те данные, которые надо обработать именно htmlspecialchars, отправляются в html_chars, туда можно отправить и весь _POST:
$clear_post = html_chars($_POST);
Но mysql_real... все-таки чаще используется для входящих данных.
P.S. все-таки null, а не nul
Спустя 1 минута (6.07.2011 - 18:06) m4a1fox написал(а):
neadekvat
Это просто премер! Я так проверил работу функции зря придераетесь!
Это просто премер! Я так проверил работу функции зря придераетесь!
Спустя 24 секунды (6.07.2011 - 18:06) Игорь_Vasinsky написал(а):
не проверял...смотриться бредово, но
:blink: :blink: :blink: как то так :ph34r:
while($_POST)
{
//твоя функция
// но вместо $value - перебор ключей POST
}
:blink: :blink: :blink: как то так :ph34r:
Спустя 1 минута, 22 секунды (6.07.2011 - 18:08) m4a1fox написал(а):
Игорь_Vasinsky
Сейчас буду пробывать....
но вот этот вариант не получился
При применении его вот так
Сейчас буду пробывать....
но вот этот вариант не получился
function post($send, $post=array(), $nul) {
if(isset($send)){
for($i=0; $i<count($post); $i++) {
$value = !empty($post[$i])?$post[$i]:$nul;
}
}
return $value;
}
При применении его вот так
$name = post($_POST['send'], $_POST['name'], "Гость");
$pass = post($_POST['send'], $_POST['pass'], NULL);
Спустя 1 минута, 29 секунд (6.07.2011 - 18:09) m4a1fox написал(а):
Мда... не правильно я его применял! У меня массив не получился!
Спустя 1 минута, 28 секунд (6.07.2011 - 18:11) Игорь_Vasinsky написал(а):
если я нен гоню - то значение аргумента по умолчанию использують если аргуменгт - крайний правый...
потом - первый аргумент не нужен, не проще один раз проверить его наличие и запустить функцию...и всё остальное...
потом - первый аргумент не нужен, не проще один раз проверить его наличие и запустить функцию...и всё остальное...
Спустя 1 минута, 48 секунд (6.07.2011 - 18:12) neadekvat написал(а):
Цитата (m4a1fox @ 6.07.2011 - 19:06) |
Это просто премер! Я так проверил работу функции зря придераетесь! |
То есть все остальное в моем посте ты просто проигнорил? Как обычно.
Цитата (Игорь_Vasinsky @ 6.07.2011 - 19:06) |
смотриться бредово |
Сегодня все такие самокритичные, фантастика.
В общем, я, видимо, не догнал, что хочет ТС. Может, вот это?
/**
* @param string|array
*/
function html_chars($data)
{
if (is_string($data))
return htmlspecialchars($data);
else
return array_map('html_chars', $data);
}
$isset_indexes = array('login', 'password');
$i = 0;
foreach($_POST as $name => $val)
{
if (isset($isset_indexes[$$name])) {
++$i;
$$name = html_chars($val);
}
}
if (count($isset_indexes) == $i)
echo 'Все элементы на месте';
else
echo 'Чего-то не хватает';
Спустя 49 секунд (6.07.2011 - 18:13) DySprozin написал(а):
m4a1fox
так?
вот тому посту, который ниже:
так?
<?php
$mas = array('name' => 'Гость', 'pass' => NULL, 'foo' => 'bar')
...
foreach ($mas as $key => $value) {
$$key = post($_POST[$key], $value);
}
вот тому посту, который ниже:
Свернутый текст
ахах =)) в кои-то веки неадекват не раскритиковал меня :P
Спустя 2 минуты, 33 секунды (6.07.2011 - 18:16) neadekvat написал(а):
DySprozin, хорошее решение *THUMB_UP*
Спустя 1 минута, 10 секунд (6.07.2011 - 18:17) Игорь_Vasinsky написал(а):
neadekvat
это я тебя в теме спалил
, вообщем да - он хочет так, но сам придти к правильной схеме
твой пост - возращает массив, а DySprozin - как бы дополняя - показывает как его превратить в кучкупеременных
это я тебя в теме спалил
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
твой пост - возращает массив, а DySprozin - как бы дополняя - показывает как его превратить в кучкупеременных
Спустя 1 минута, 42 секунды (6.07.2011 - 18:19) m4a1fox написал(а):
Вот так
применяю так
А вывод так
function post($send, $post=array(), $nul) {
if(isset($send)){
for($i=0; $i<count($post); $i++) {
$value = !empty($post[$i])?$post[$i]:$nul;
}
}
return $value;
}
применяю так
$name = post($_POST['send'], array($_POST), "Гость");
А вывод так
$name['name] и $name['pass']
Спустя 1 минута, 56 секунд (6.07.2011 - 18:21) m4a1fox написал(а):
господа, будут дополнения, только не по поводу проверки mysql_reael_escape_string и так далее, это я сейчас сделаю, а именно по функции?
Спустя 10 секунд (6.07.2011 - 18:21) ИНСИ написал(а):
m4a1fox раньше сам бредил всякой хренью, похожей на твою. И сделал 2 функции:
1. Тут засоряются $_POST (их вообще лучше не изменять, до того как они используются)
2. А тут гоняю все циклом и создаю переменные (бурется ключи $_POST):
Мой тебе совет: Выкинь эту идею из головы и обрабатывай данные там, где ты их используешь!
1. Тут засоряются $_POST (их вообще лучше не изменять, до того как они используются)
function varFilter($value) {
if(is_array($value)) {
$value = array_map('varFilter', $value);
} else {
$value = trim($value);
if(get_magic_quotes_gpc()) $value = stripslashes($value);
}
return mysql_real_escape_string($value);
}
$_POST = varFilter($_POST);
2. А тут гоняю все циклом и создаю переменные (бурется ключи $_POST):
for($i = 0, $c = sizeof($_POST); $i < $c; $i++) {
$value = trim($_POST[$field[$i]);
if(get_magic_quotes_gpc()) $value = stripslashes($value);
$$field[$i] = mysql_real_escape_string($value]
}
Мой тебе совет: Выкинь эту идею из головы и обрабатывай данные там, где ты их используешь!
Спустя 3 минуты, 56 секунд (6.07.2011 - 18:25) m4a1fox написал(а):
INSIDIOUS
Думаете.... Но веть так реально удобнее, не надо сто раз переписывать одно и тоже, скорее вы конечно правы, все таки опыт, но было интересно попробывать. Спасибо за совет! Наверно так и буду делать?!
Думаете.... Но веть так реально удобнее, не надо сто раз переписывать одно и тоже, скорее вы конечно правы, все таки опыт, но было интересно попробывать. Спасибо за совет! Наверно так и буду делать?!
Спустя 59 секунд (6.07.2011 - 18:26) neadekvat написал(а):
Игорь_Vasinsky, мой код тоже вводит в адресное пространство кучку перемиенных, посмотри внимательно на цикл.
m4a1fox
if(isset($send))
Зачем, если $send является аргументом функции? Она не может не существовать.
for($i=0;
Если ты не используешь $i в цикле, то для массива используй foreach.
Плюс у тебя для всех значений получается одно и то же значение по умолчанию. Смотри, что тебе в теме пишут. Или мы больше этого делать не будем, если ты вообще никаких идей из представленного тебе кода не выносишь.
INSIDIOUS, stripslashes дважды будет применено. А вообще лучше магические кавычки отключать на уровне сервера (.htaccess) и не думать о них в коде.
m4a1fox
if(isset($send))
Зачем, если $send является аргументом функции? Она не может не существовать.
for($i=0;
Если ты не используешь $i в цикле, то для массива используй foreach.
Плюс у тебя для всех значений получается одно и то же значение по умолчанию. Смотри, что тебе в теме пишут. Или мы больше этого делать не будем, если ты вообще никаких идей из представленного тебе кода не выносишь.
INSIDIOUS, stripslashes дважды будет применено. А вообще лучше магические кавычки отключать на уровне сервера (.htaccess) и не думать о них в коде.
Спустя 1 минута, 3 секунды (6.07.2011 - 18:27) neadekvat написал(а):
Цитата (m4a1fox @ 6.07.2011 - 19:25) |
Думаете.... Но веть так реально удобнее, не надо сто раз переписывать одно и тоже, скорее вы конечно правы, все таки опыт, но было интересно попробывать. Спасибо за совет! Наверно так и буду делать?! |
Смотри, DySprozin, он и правда нас игнорит. Ну, это его выбор. Успехов, чо.
Спустя 1 минута, 43 секунды (6.07.2011 - 18:28) Игорь_Vasinsky написал(а):
neadekvat
точно. вижу
точно. вижу
Цитата |
if(isset($send)) Зачем, если $send является аргументом функции? Она не может не существовать. |
если аргумента нет - то будет ошибка, по этому я и говорю - один раз проверил наличие - и работай, а как аргумент - неиспользовать
Спустя 2 минуты, 52 секунды (6.07.2011 - 18:31) ИНСИ написал(а):
Цитата |
Но веть так реально удобнее, не надо сто раз переписывать одно и тоже |
Не всегда удобство оправдано
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Цитата |
INSIDIOUS, stripslashes дважды будет применено |
Не совсем понял, где?
Цитата |
А вообще лучше магические кавычки отключать на уровне сервера (.htaccess) и не думать о них в коде. |
Лучше когда код сам уже все предусматривает. Не всегда хостеры дают права менять настройки сервера.
Спустя 3 минуты (6.07.2011 - 18:34) neadekvat написал(а):
Цитата (INSIDIOUS @ 6.07.2011 - 19:31) |
Не совсем понял, где? |
Сначала в varFilter, а потом в цикле.
Цитата (INSIDIOUS @ 6.07.2011 - 19:31) |
Лучше когда код сам уже все предусматривает. Не всегда хостеры дают права менять настройки сервера. |
Не лучше. Это хлам, который на фиг не нужен и скоро будет удален.
А если хостер не позволяет использовать .htaccess, то это либо плохой хостер, которого надо менять, либо это бесплатный хостинг, и тут нам тогда просто не о чем говорить.
Спустя 12 минут, 11 секунд (6.07.2011 - 18:47) m4a1fox написал(а):
И все же не понимаю, чем моя функция вам не понравилась?neadekvat
Спустя 1 минута, 33 секунды (6.07.2011 - 18:48) Игорь_Vasinsky написал(а):
вроде ни чем - он просто сказал-что это дежавю....
Спустя 1 минута, 13 секунд (6.07.2011 - 18:49) m4a1fox написал(а):
Игорь_Vasinsky
А! Ну дык.... было интересно это самому сделать! Понимаете?
А! Ну дык.... было интересно это самому сделать! Понимаете?
Спустя 38 секунд (6.07.2011 - 18:50) neadekvat написал(а):
m4a1fox
http://phpforum.ru/index.php?showtopic=0&v...dpost&p=1255010
Середина поста - вся тебе посвящена.
http://phpforum.ru/index.php?showtopic=0&v...dpost&p=1255010
Середина поста - вся тебе посвящена.
Спустя 3 минуты, 5 секунд (6.07.2011 - 18:53) m4a1fox написал(а):
neadekvat
Я это читал! Спасибо! Буду знать!
Я это читал! Спасибо! Буду знать!
Спустя 17 часов, 15 минут, 3 секунды (7.07.2011 - 12:08) m4a1fox написал(а):
Продолжу тему. Доброе утро! Спасибо neadekvat сделал вот так
Применяю ее вот так
Господа, вопрос в следующем, как подправить функцию, что бы она мне показывала еще и пустые поля? Спасибо!
function post($send, $post=array(), $nul) {
if(isset($send)){
foreach ($post as $key => $value) {
if(!empty($value)) {
$string = $value;}
else {
$string .= $key;}
}
return $string;
}
}
Применяю ее вот так
$name = post($_POST['send'], array($_POST), "Гость");
Господа, вопрос в следующем, как подправить функцию, что бы она мне показывала еще и пустые поля? Спасибо!
Спустя 24 минуты, 24 секунды (7.07.2011 - 12:32) tatti написал(а):
m4a1fox
нафига то, что нафиг не нужно? :blink:
нафига то, что нафиг не нужно? :blink:
function post($nul) {
foreach ($_POST as $key => $val)
{
if(!empty($val)) $str.= $val;
else $str.= $key;
}
return $str;
}
if(isset($_POST['send']))
{
$name = post("Гость");
echo $name;
}
Спустя 5 минут, 19 секунд (7.07.2011 - 12:38) m4a1fox написал(а):
tatti
А так не получается?!
А так не получается?!
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
Спустя 1 минута, 16 секунд (7.07.2011 - 12:39) tatti написал(а):
m4a1fox
а что должно получатся? лишние данные?
а что должно получатся? лишние данные?
Спустя 3 минуты, 1 секунда (7.07.2011 - 12:42) m4a1fox написал(а):
tatti
Я применил вашу функцию прямо на странице, так как вы ее дали, работает! Спасибо! Буду дальше думать.... почему нельзя совместить это с моей функцией.... буду стараться, спасибо за направление?!
Я применил вашу функцию прямо на странице, так как вы ее дали, работает! Спасибо! Буду дальше думать.... почему нельзя совместить это с моей функцией.... буду стараться, спасибо за направление?!