Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2024, 09:07   #1
Zuldek
Новичок
Джуниор
 
Регистрация: 01.01.2024
Сообщений: 6
По умолчанию Собрать post/get и куки параметры в одну переменную

Код:
foreach ($_REQUEST as $k => $v) {
	$v && $data[$k] = addslashes(strip_tags($v));
}
$_REQUEST - содержит get параметры и post. Вопрос в том, как добавить в данную переменную еще массив куков?

Чтобы все пользовательские данные были в одной переменной и были обработаны на наличие нежелательных символов в строке?

Последний раз редактировалось Zuldek; 01.01.2024 в 09:13.
Zuldek вне форума Ответить с цитированием
Старый 01.01.2024, 09:09   #2
Zuldek
Новичок
Джуниор
 
Регистрация: 01.01.2024
Сообщений: 6
По умолчанию

Вопрос еще в том, какая конструкция будет обрабатывать быстрее? То есть и быстрее и по времени менее затратно, так как подобную операцию необходимо проделывать каждый раз когда пользователь открывает страницу...
Zuldek вне форума Ответить с цитированием
Старый 01.01.2024, 09:36   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Циклы всегда работают медленнее, потому надо отдавать предпочтение встроенным функциям. Для слияния нескольких массивов в один используется функция array_merge:
Код:
$data = array_merge($_COOKIE, $_REQUEST);
Только надо учесть, что числовые ключи могут быть переиндексированы.

Последний раз редактировалось Arigato; 01.01.2024 в 09:41.
Arigato вне форума Ответить с цитированием
Старый 01.01.2024, 13:10   #4
Zuldek
Новичок
Джуниор
 
Регистрация: 01.01.2024
Сообщений: 6
По умолчанию

В js необходимо передать пост в котором содержится массив.
Код:
navigator.sendBeacon('/jx', JSON.stringify({po:'st',  p:[1,2,3]}))
Сделал так:
Код:
$data = ($j = json_decode(file_get_contents('php://input'), true)) ? array_merge($_REQUEST, $j) : $_REQUEST;
Возможно ли исправить, дабы так сильно не колхозить?
Zuldek вне форума Ответить с цитированием
Старый 01.01.2024, 13:13   #5
Zuldek
Новичок
Джуниор
 
Регистрация: 01.01.2024
Сообщений: 6
По умолчанию

Код:
$data = array_merge($_REQUEST, (json_decode(file_get_contents('php://input'), true) ?? []));
Все еще пугает такое...
Zuldek вне форума Ответить с цитированием
Старый 01.01.2024, 13:37   #6
Zuldek
Новичок
Джуниор
 
Регистрация: 01.01.2024
Сообщений: 6
По умолчанию

Вот так, вроде все получилось
Код:
	$data = array_merge($_REQUEST, $_COOKIE, (json_decode(file_get_contents('php://input'), true) ?? []));
	array_walk_recursive($data, function(&$v, $k){	
		$v = addslashes(strip_tags($v));
	});
Но все равно, пугает именно эта конструкция

Код:
(json_decode(file_get_contents('php://input'), true) ?? [])
Zuldek вне форума Ответить с цитированием
Старый 01.01.2024, 16:53   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от Zuldek Посмотреть сообщение
$v = addslashes(strip_tags($v));
С какой целью вы это делаете?

Цитата:
Сообщение от Zuldek Посмотреть сообщение
$data = array_merge($_REQUEST, $_COOKIE, (json_decode(file_get_contents('php ://input'), true) ?? []));
Не знаю, какая перед вами стоит задача, но логичнее $_REQUEST и $_COOKIE поменять местами. Дело в том, что если какой-то из параметров будет присутствовать и там и там, то в вашей записи приоритет будет у значения из куки, а не из запроса. То есть если параметр попал в куки, то никаким get или post его уже не перекрыть, всегда будет браться из куки.

Если меняем местами, то с помощью get или post можно перекрыть значения из куки.

Последний раз редактировалось Arigato; 01.01.2024 в 16:56.
Arigato вне форума Ответить с цитированием
Старый 02.01.2024, 11:40   #8
Zuldek
Новичок
Джуниор
 
Регистрация: 01.01.2024
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
С какой целью вы это делаете?
Отфильтровать строку от нежелательных символов.
Zuldek вне форума Ответить с цитированием
Старый 02.01.2024, 16:07   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Это не ответ. Зачем ее фильтровать? И с чего вдруг конкретно эти символы попали в категорию нежелательных?
Arigato вне форума Ответить с цитированием
Старый 03.01.2024, 10:00   #10
Liris
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 20
По умолчанию

Я бы предположил, что у нас классическая ошибка молотка:
https://ru.wikipedia.org/wiki/%D0%9F...2%D0%BA%D0%B0)
Liris вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как собрать в одну несколько программ Sweta Помощь студентам 3 27.05.2021 02:08
Собрать таблицу - Одну из Трех. KolyAle Фриланс 3 08.07.2019 18:41
Помогите собрать формулу в одну строку Petrov210217 Microsoft Office Excel 12 02.02.2019 09:47
C++. Собрать две маленькие программки в одну!! || Flashka || Помощь студентам 0 11.05.2010 13:59
Как все edit собрать в переменную и записать в файл f1xed Помощь студентам 9 07.02.2010 23:18