Возможно ли выставить Cookie таким образом, чтобы она отправлялась на сервер и обратно только по адресу «test/test.php», но не по «test/test.php*» (к примеру, «test/test.php?ddd=sss»)? Если нет, то какой возможен иной вариант?
LocalStorage из js с ajax'овым запросом и передачу параметра в самом GET-запросе не предлагать ;).
С позволения ZAV публикую часть нашей с ним переписки.
ZAV 13 мая 2012, 03:06
Опиши задачу, которую пытаешься решить.
Мне кажется, ты не с той стороны копаешь.
Serator 13 мая 2012, 03:31
Доброй ночи. Спасибо, что откликнулись. Задача такая. Имеем некую панель администрации в вакууме. Есть страница входа, то бишь «test/test.php» из примера и иные страницы, которые будут по адресу «test/test.php*» (доступны после авторизации). Так вот нужно выставить пользователю панели администрации предпочитаемый язык. Я решил это сделать следующим способом. Во время входа в панель администрации есть контрол с выбором доступных языков. По умолчанию язык берется из Accept-Language (возможно что-то еще, но не суть важно). Если выбранный язык не подходит пользователю, то он выбирает что-то отличное от языка по умолчанию. Далее информация уходит в БД и при входе (введении логина / пароля) информация о языке перевода берется из БД. Собственно кука нужна для того, чтобы попадая на страницу входа в панель админитрации показывать сразу же нужный язык, если пользователь до этого его выбирал. На других страницах эта кука более не нужна и не хотелось бы ее гонять понапрасну.
Возможно можно разграничить пути посредством Apache mod_rewrite, аль аналогичным способом, но хотелось бы решить все более красивым путем.
ZAV 13 мая 2012, 03:52
А что если пользователь захочет изменить язык внутри панели?
Если везде использовать правильные ссылки — по идее проблем не будет.
Например:
/admin/auth
/admin/main
/admin/users
И выглядит красиво, и решат проблему.
Serator 13 мая 2012, 23:00
Описывать весь функционал системы слишком долго и сие не имеет особого смысла в контексте задачи. Изменение языка после входа не планируется. Ну а разграничение с путями по сути и есть Apache mod_rewrite, аль аналоги… Подумаю еще над иными реализациями.
И, да, спасибо за то, что уделили внимание ;).
ZAV 13 мая 2012, 23:36
Я крайне сомневаюсь что куки как-то скажутся на производительности системы, так что это вообще можно просто проигнорировать.
Serator 13 мая 2012, 23:40
Это бесспорно, но хотелось бы все же стремиться к чему-то более совершенному.
Не опускать же руки при первой же трудности?.. ;)
Собственно публикую сие не ради споров о том, хорошо это, аль плохо и как можно было бы сделать иначе. Хочется решить конкретную задачу ;).
Нельзя. Задать можно домен и путь, а все параметры игнорируются.
Почему нельзя в самом test.php не учитывать куки, если ему переданы определённые параметры?
Как вариант, можно настроить rewrite путей. Вместо test/test.php?ddd=sss будет test/ddd/sss
И задать куки, которые работают для test/, но не работают для test/ddd
Спасибо. Да, я думал про Apache mow_rewrite и т.п., но хотелось бы как-нибудь красивее решить сей вопрос. Именно на путь кук я и делал ставку, но, как я понял, в нем нельзя написать что-то вроде регулярки. Ищу еще решения, быть может и найду…
«на какой-то дивный костыль» похожа ваша задача. И пока вы внятно не объясните какую цель преследуете (для чего вам это нужно), на внятное решение можете только уповать.
Перечитал ваш запрос еще раз, каюсь, был невнимателен — вам необходимо выставить язык до авторизации, и сессия здесь не решит.
При таких раскладах или забить и гонять печеньку постоянно или разносить форму авторизации и админку по разным путям.
Куки отправляются при любом запросе к серверу. Я не знаю какая у вас задача, но можно сделать форму с input type=«hidden», которая будет появляться только на «test/test.php» и заполняться.
Попытался ответить на единственный вопрос, который вы задавали ) Вот и предложил как вариант хранить и считывать нужные данные из скрытых инпутов. Не зная для чего вам нужно запрещать куки на одних и разрешать на других, что-то дельное не посоветуешь )