@Deman1

Как разбить get запрос и занести все в свои переменные?

site.sits/classpr.add?count=1&v=4
Вот у меня есть такой запрос к сайту на файл index.php
Как мне сделать чтобы я мог разделить всё по своим местам?
Мне нужно получить примерно так
classpr
add
cout = 1
v = 4
Вот как мне разбить такой запрос? Что после ? там могут быть куча разных запросов и с разными именами и мне также их нужно сохранить
С SERVER я получаю его вот так
["REDIRECT_QUERY_STRING"]=> "action=classpr.add&count=1&v=4"
["QUERY_STRING"]=> "action=classpr.add&count=1&v=4"
["REQUEST_URI"]=>"/classpr.add?count=1&v=4"
  • Вопрос задан
  • 1349 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Не нужно никогда get запрос заносить ни в какие переменные.
Никогда не надо заниматься такой фигнёй, как выковыривание элементов массива в отдельные переменные.
Массив для того и придуман, чтобы работать с изменяемой неструктурированной информацией

Поэтому если тебе надо получить 1, то прсто пишешь $_GET['count']. ВСЁ. Никаких тебе страданий и проблем.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
bigton
@bigton
Web-программист
Дано ["REQUEST_URI"]=>"/classpr.add?count=1&v=4"

1. Берем $_SERVER['REQUEST_URI'] прогоняем через parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) так вы получите часть classpr.add

2. Все что после знака вопроса, автоматически располагается в $_GET

Безопасность

1. НЕ используйте extract() за такие советы надо банить!
2. Не доверяйте ничему, что получаете от пользователя (POST, GET, COOKIE, etc), ничего напрямую не вставляйте в базу, не пытайтесь вызвать и тд.

Вместо $_GET['count'] используйте filter_input(INPUT_GET, 'count', FILTER_VALIDATE_INT).

Пусть (classpr.add) прогоните через регулярку if ( ! preg_match('~^/([a-z0-9.]*)$~', $path, $matches)) return false;
Ответ написан
Комментировать
Get-параметры после ? можно извлечь из $_GET и при помощи функции extract разбить на отдельные переменные. В результате будут созданы переменные с именами ключей массива:
$count = 1;
$v = 4;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы