Скрыть GET параметры в адресной строке

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
alaevka
Сообщения: 77
Зарегистрирован: 2010.03.12, 11:34
Контактная информация:

Скрыть GET параметры в адресной строке

Сообщение alaevka »

Всем доброе утро.

Не спрашивайте почему не использую POST запрос, необходимо только GET. Запрос формируется в форме. В форме очень много полей, в результате сабмита в адресной строке что-то вида:

Код: Выделить всё

http://sitename.ru/controller/action/?param1=value1&param2=value2.... 
и таких параметров около 20 - не красиво.

Можно ли как-то средствами yii или .htaccess все это скрыть и привести к виду

Код: Выделить всё

http://sitename.ru/controller/action/ 


Но обязательно использовать GET. Уже измучался, а решения все никак не найду.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Скрыть GET параметры в адресной строке

Сообщение rak »

разве что аяксом данные отправлять
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Скрыть GET параметры в адресной строке

Сообщение esche »

ТРИЗ-задачка?
1. В адресной строке требуется передать параметры
2. Параметры не должны отображаться в адресной строке
----
а) нужно ли передавать параметры в каждом запросе, или их можно сохранить в сессии/куках?
б) можно кодировать параметры и получать строку к примеру (.../action/val1-val2 .. если количество значений ограничено и известно заранее - можно назначить соответствия и получить что-то вроде /action/ae), однако форма (без применения javascript) будет отдавать их в виде get-строки, которую можно разобрать на сервере и перенаправить на нужный кодированный URL
...
Аватара пользователя
radamir
Сообщения: 142
Зарегистрирован: 2009.08.10, 08:02
Откуда: Новосибирск

Re: Скрыть GET параметры в адресной строке

Сообщение radamir »

Думаю тут javascript-ом нужно перехватывть onsubmit формы и формировать запрос вида http://sitename.ru/controller/action/pa ... m2/value2/... А на стороне сервера в настройках Yii

Код: Выделить всё

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
); 
Ну и не забыть создать .htaccess конечно.
Аватара пользователя
alaevka
Сообщения: 77
Зарегистрирован: 2010.03.12, 11:34
Контактная информация:

Re: Скрыть GET параметры в адресной строке

Сообщение alaevka »

Аяксом никак..а если это не форма, а тупо ссылка....
piter-i
Сообщения: 19
Зарегистрирован: 2011.01.11, 17:47

Re: Скрыть GET параметры в адресной строке

Сообщение piter-i »

Вариант раз: при формировании ссылок раздавать каждой уникальный идентификатор, а в сессию класть мап: идентификатор - параметры. При переходе по урлу вытаскивать параметры по переданному идентификатору.
Вариант два: описать задачу подробнее и тут вам быстро объяснят где вы неправы.
Аватара пользователя
alaevka
Сообщения: 77
Зарегистрирован: 2010.03.12, 11:34
Контактная информация:

Re: Скрыть GET параметры в адресной строке

Сообщение alaevka »

Описываю вариант 2 подробнее))

Забыли про форму. Есть ссылка:
http://sitename.ru/controller/action/?p ... am2=value2....

При клике на нее в адресной строке должно быть:
http://sitename.ru/controller/action/

Но параметры должны передаться.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Скрыть GET параметры в адресной строке

Сообщение rak »

тогда вариант выше должен подойти, создавать какой то хеш из параметров и хранить его где то.
Аватара пользователя
alaevka
Сообщения: 77
Зарегистрирован: 2010.03.12, 11:34
Контактная информация:

Re: Скрыть GET параметры в адресной строке

Сообщение alaevka »

Да, думаю так и сделать. Но все же это не лучшее решение.
piter-i
Сообщения: 19
Зарегистрирован: 2011.01.11, 17:47

Re: Скрыть GET параметры в адресной строке

Сообщение piter-i »

Т.е. не нужно скрывать парамеры в урле ссылки? Ну можно тогда например апачем передавать запрос на определённый контроллер, а в контроллере уже редиректить куда нужно
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Скрыть GET параметры в адресной строке

Сообщение rak »

alaevka писал(а):Но все же это не лучшее решение.
других вариантов я лично вообще не вижу
oscarhandsome
Сообщения: 3
Зарегистрирован: 2019.10.21, 07:11
Откуда: Saint Petesburg
Контактная информация:

Re: Скрыть GET параметры в адресной строке

Сообщение oscarhandsome »

Я не уверен, что это истинно верное решение. Но в доке это вроде было. В правилах построения url вот

Пример, пишем во view:

Код: Выделить всё

<a href="<?= \yii\helpers\Url::to(['product/view', 'urlAlias' => $product->urlAlias]) ?>"><?= $product->name ?></a>
Далее в urlManager:

Код: Выделить всё

'product/view/<urlAlias:>' => 'product/view',
Без указания RegEx, где-то видел, что будет использован get параметр. Далее в контроллере ловим get параметр:

Код: Выделить всё

$urlAlias = Yii::$app->request->get('urlAlias');
Ответить