[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с переменными извне.
Эли4ка
Здравствуйте, как-то надоело мне периодически проверять POST, GET запрос это или какой другой. И решила этот вопрос так:
$input = array_merge( parseIncomingData( $_GET ), parseIncomingData( $_POST ) );
echo $input['url'];
/////////////////////////////////////////////////////
function clearKey($var) {
$key = mb_eregi_replace("[^a-zа-яё0-9 ]", '', $var);
return $key;
}

function parseIncomingData($data) {
$return = array();
foreach( $data as $key => $value ) {
if(!is_array($value)){
$return[ clearKey($key) ] = $value;
}
}

return $return;
}


Вопрос таков: насколько я потеряла в функционале и насколько я не знаю основ?
Просто что-то мне подсказывает, что так делать нельзя от слова совсем.
comolov
Какая задача стоит, что должна делать программа? Может $_REQUEST использовать вместо поста и гета?
Эли4ка
Приходит 6-10 переменных. Они могут быть либо гет либо пост. Но один раз столкнулась с тем, что какой-то дурак мне слал и пост и гет запрос
comolov
Используй $_REQUEST тогда.
curious
В скрипте могут быть разные сценарии в зависимости от GET и POST.
В rest api POST создание ресурса, GET получение.
На мой взгляд лучше явно указывать каким методом мы хотим получить данные на вход.
Сделать какой нибудь хелпер со статическими методами. В качестве 2-го параметра дефолтное значение


input::get('var', null);
input::post('var', null);

if (input::is_post()) {

}

input::request('var', false);
Эли4ка
О, кстати вариант. А только не поняла зачем эти null, false вторыми аргументами?
killer8080
Эли4ка
зачем нужна эта мешанина? GET и POST имеют разное назначение. Если ждёшь параметры в GET то там их и надо искать, причём тут POST?

Цитата (Эли4ка @ 8.01.2019 - 00:55)
Но один раз столкнулась с тем, что какой-то дурак мне слал и пост и гет запрос

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



Спустя 2 минуты, 46 секунд killer8080 написал(а):
Цитата (Эли4ка @ 8.01.2019 - 18:33)
А только не поняла зачем эти null, false вторыми аргументами?

очевидно дефолтные значения при отсутствии переменных

обрати внимание на filter_input может это то что тебе нужно
sergeiss
Цитата (killer8080 @ 8.01.2019 - 20:25)
если кто то пытается использовать их не предусмотренным способом, этого его проблемы

Полностью соглашусь с этим высказыванием.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Эли4ка
Цитата
зачем нужна эта мешанина? GET и POST имеют разное назначение. Если ждёшь параметры в GET то там их и надо искать, причём тут POST?

Ну потому что у меня ссылка вида: type/photo если гет то надо выводить фото, если пост то добавлять.
Цитата
запросы обычно летят от формы или ссылок на твоей же странице, ты сама их контролируешь, если кто то пытается использовать их не предусмотренным способом, этого его проблемы.

А мне какой-то придурок( прошу прощения ) через cURL шлет POST,GET,OPTION,DELETE,PUT и по каждой найденной ссылке. Зачем он это делает не пойму, но это напрягает. И хотелось бы знать, зачем он это делает.
Цитата
обрати внимание на filter_input может это то что тебе нужно

Смотрела, ну почти оно wink.gif
sergeiss
Насчет придурка. Могу предположить, что это идет сканирование с какой-то целью. Но чтобы это узнать наверняка, надо сначала найти его. Затем пробить двоечку в челюсть. Затем прямой левой в печёнку. И поинтересоваться, голосом Жванецкого "а почему, собственно?" smile.gif
А ссылки, я думаю, лучше поменять на type/photo/get и type/photo/add. Проще и логичнее будет это обрабатывать. Для каждой команды будет только один определенный тип параметра.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Эли4ка
Цитата
Насчет придурка. Могу предположить, что это идет сканирование с какой-то целью. Но чтобы это узнать наверняка, надо сначала найти его. Затем пробить двоечку в челюсть. Затем прямой левой в печёнку. И поинтересоваться, голосом Жванецкого "а почему, собственно?" smile.gif

laugh.gif
Цитата
А ссылки, я думаю, лучше поменять на type/photo/get и type/photo/add. Проще и логичнее будет это обрабатывать. Для каждой команды будет только один определенный тип параметра.

Так это ж один файл все обрабатывает. И гет и пост запросы. Это просто реврайт сделан для красоты.
Просто время, когда в директории были файлы с именами: add_photo.php, add_video.php авно канули в лету, хотя мне нравилась такая реализация, но сейчас нельзя так делать.
sergeiss
Эли4ка, либо ты меня не понимаешь, либо я тебя.
Делай любые рерайты, как тебе удобнее. Но только анализируй еще, какой адрес был использован. И если в нем было написано add, то анализируй POST. А если было get, анализируй GET. Я эту логику имел ввиду.
Впрочем, в зависимости от адреса (внутри единого/корневого обработчика запросов) можно просто подинклудить обработчик add-photo.php или get-photo.php, это ничему не противоречит.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Эли4ка
Цитата
Но только анализируй еще, какой адрес был использован. И если в нем было написано add, то анализируй POST. А если было get, анализируй GET. Я эту логику имел ввиду.

А, теперь поняла. Не пробовала кстати так делать почему-то blink.gif
Цитата
Впрочем, в зависимости от адреса (внутри единого/корневого обработчика запросов) можно просто подинклудить обработчик add-photo.php или get-photo.php, это ничему не противоречит.

Согласна
hurt3
Может быть должно идти указание откуда пришла переменная, в некотором смысле суперглобальные массивы -кажется они к ним относятся это интерфейсы обращения к программе, если же в рамках одного интерфейса используется 2 источника данных необходимо указать первый , тот что будет затирать информацию второго при передаче переменных с одинаковым именем.

Иначе будет вот так

Приходит 6-10 переменных. Они могут быть либо гет либо пост. Но один раз столкнулась с тем, что какой-то дурак мне слал и пост и гет запрос

и вот так


если кто то пытается использовать их не предусмотренным способом, этого его проблемы
Полностью соглашусь с этим высказыванием.
Быстрый ответ:

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