Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2015, 11:49
Новичок на форуме
Отправить личное сообщение для temnykk Посмотреть профиль Найти все сообщения от temnykk
 
Регистрация: 11.11.2015
Сообщений: 5

Проблема с передачей PHPSESSID в location.pathname в firefox
Уважаемые специалисты.

На сайте, над которым тружусь, для поддержания сессии всегда использовались куки, но тут возникла задач а в отдельных случаях передавать PHPSESSID через URL.
В числе прочего на уровне PHP отключаю куки и включаю transsid и браузеры подхватывают сами большую часть.

Но есть, среди прочего, в JS-коде такой редирект:

location.pathname = '/cart/list/';

И несколько практически таких же.
Соответственно, с учётом указанной выше настройки на выходе после такой команды получается что-то в виде:
mysite.com/cart/list/?PHPSESSID=al5mlujofn8v24lcpg54ighgs6

Суть проблемы:
Firefox, в отличие от всех остальных браузеров не подставляет в этом случае сессию. Т.е. имеем:
mysite.com/cart/list/
В коде есть переменная, отвечающая за сессию и можно сделать, например, так:

location.pathname = '/cart/list/'+((typeof(force_session_id) !== "undefined") ? '?PHPSESSID='+force_session_id : '');


Но тогда хром, например, делает вот это и вообще ломается:

mysite.com/cart/list/?PHPSESSID=al5mlujofn8v24lcpg54ighgs6?PHPSESSID=al 5mlujofn8v24lcpg54ighgs6

Значит нужна ещё доп. проверка на конкретный браузер т.е. решение не универсальное (вдруг эта проблема ещё где-то всплывёт и нужно ещё проверки добавлять).

Вопрос такой: можно ли как-то проще решить эту проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2015, 11:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от temnykk
но тут возникла задач а в отдельных случаях передавать PHPSESSID через URL.
Зачем?

Сообщение от temnykk
включаю transsid
Ее наоборот желательно отключать.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2015, 12:06
Новичок на форуме
Отправить личное сообщение для temnykk Посмотреть профиль Найти все сообщения от temnykk
 
Регистрация: 11.11.2015
Сообщений: 5

Сообщение от laimas Посмотреть сообщение
Зачем?
Это довольно долгая история.

Сообщение от laimas Посмотреть сообщение
Ее наоборот желательно отключать.
Знаю и уже написал, что обычно всё делается через куки. Но вот есть просто ситуация, в которой куки не работают и нужно передавать sid напрямую.
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2015, 13:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Мало того что SID светится, так еще есть и роботы, а при каждой новой сессии url то будет меняться, а это уже плохо.

Гарантировано работает вне всяких неожиданностей явно прописанное <a href"=?<?=SID?>">Go</a>.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2015, 14:54
Новичок на форуме
Отправить личное сообщение для temnykk Посмотреть профиль Найти все сообщения от temnykk
 
Регистрация: 11.11.2015
Сообщений: 5

Сообщение от laimas Посмотреть сообщение
Гарантировано работает вне всяких неожиданностей явно прописанное <a href"=?<?=SID?>">Go</a>.
А в JS можно использовать подобное? В этом собственно и вопрос - можно ли в location.pathname прописать такую конструкцию, чтобы в случае наличия SID оно всегда учитывалось.


Сообщение от laimas Посмотреть сообщение
Мало того что...
Я всё понимаю, спасибо.
Если бы решение "так не делать" было бы возможным, то не было бы и этого вопроса вообще.
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2015, 16:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Вы же ситуацию то понимаете - куки отключены и клиент не знает о ней ничего. Именно сервер будет ее автоматом проставлять. SID, это константа, значение которой и есть PHPSESSID=xxxxxxxxxx.... естественно РНР автоматом и подставит, и только в том случае если определена трансляция SID при отключенных куках. В противном случае подстановки SID в url не будет, даже если в url явно прописано <?=SID?>.

На стороне клиента посредством js куда-то добавить можно, но только естественно автоматически этого не произойдет.
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2015, 17:16
Новичок на форуме
Отправить личное сообщение для temnykk Посмотреть профиль Найти все сообщения от temnykk
 
Регистрация: 11.11.2015
Сообщений: 5

Так в том-то и дело.

Трансляция SID включена. Куки отключены.

При этом когда идёт такая команда:
location.pathname = '/cart/list/';

SID в новый адрес подставляется автоматически.

В хроме подставляется и в опере подставляется. А вот в firefox не подставляется почему-то.

Вот я и хочу узнать или почему не подставляется или есть ли какое-то более универсальное решение чтобы везде подставлялось помимо того, чтобы сделать в JS тупо проверку на firefox и поставить самостоятельно?
Ответить с цитированием
  #8 (permalink)  
Старый 11.11.2015, 17:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Так об этом и речь, всякие возможные проблемы на клиенте придется решать самому.
Ответить с цитированием
  #9 (permalink)  
Старый 11.11.2015, 18:03
Новичок на форуме
Отправить личное сообщение для temnykk Посмотреть профиль Найти все сообщения от temnykk
 
Регистрация: 11.11.2015
Сообщений: 5

Так я и решаю.

Просто хочу узнать, нет ли более универсального решения, чем проверять на Firefox.
Ответить с цитированием
  #10 (permalink)  
Старый 12.11.2015, 06:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Универсальное, это и есть трансляция SID, но не все гладко. Все остальное универсальным назвать сложно. Собственно если идентифицировать пользователя однозначно, как по отпечаткам пальцев, тогда бы и трансляции SID не требовалось да и сама сессия была бы не нужна, ее вполне бы можно заменить собственным механизмом на SQL.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с асинхронной передачей данных через POST Kapitan79 AJAX и COMET 2 28.12.2013 11:47
Проблема с меню на JS в Firefox MaxPayne Элементы интерфейса 0 24.10.2013 14:32
проблема с передачей параметров в функцию bartonom Элементы интерфейса 4 19.09.2011 12:41
Проблема с передачей параметров в IE flash_uz AJAX и COMET 4 17.04.2009 15:30
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56