Обратится с другого сайта и сосчитать значения сессии в php?

Добрый день.
Пишу основную часть сайта на php,а дополнительную (чат/вебсокетная часть/файлсервер для более быстрой отдачи) на golang.
Может показаться извращением, но хочу попробовать сделать следующее.
Человек заходит на пхп сервер- получает страничку, затем джаваскрипт начинает подключаться по вебсокетам к серверу на go. Надо как-то сообщить этому серверу, что этот пользователь,скажем, Вася, а этот -Петя. Была проблемка с передачей куков вообще по вебсокетам. Я сделал немного по другому: При подключении я пишу
var sock = new WebSocket("ws://localhost:2000/sock/12345");
т.е. 12345- это айдишник пользователя, который подключился. Теперь сервер знает, что под данным сокетом сидит пользователь 12345. Всё вроде хорошо.
Но естественно, если сюда заглянет программист- он может всё поломать.
Я хочу передать название сессии, например ocalhost:2000/sock/sessionName
Go сервер должен на какуюнибудь скрытую страничку php сервера послать запрос:
Скажи-ка, а есть ли такая сессия, если да- то дай мне айдишник человека.
Ну как-то так.
Подскажите пожалуйста, как такое сделать.
Спасибо.
  • Вопрос задан
  • 617 просмотров
Пригласить эксперта
Ответы на вопрос 2
Вам необходимо хранить сессии в каком-нибудь централизованном хранилище данных. Например memcached, redis, mongodb, etc.
И при запросе к серверу на golang - вам необходимо передавать тот же cookie, что и на php. Тогда сервер на golang сможет получить айдишник сессии, и легко достать всю инфу по сессии из memcached, redis, etc.
Вот здесь есть пример шейринга сессии между php и nodejs:
https://simplapi.wordpress.com/2012/04/11/php-node...
https://simplapi.wordpress.com/2012/04/13/php-and-...
Ответ написан
Комментировать
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Либо из JS читаете куку с session_id (не уверен, она может быть httponly), поэтому лучше при отдаче страницы из PHP передать в JS session_id (отрендерить js с переменной, инициализированной этим значением). А сокетом уже подключаться, передавая этот session_id. Подделать session_id не представляется возможным. Но, если ссыкотно (не должно быть) то выставите expiration у сессий, чтобы уж точно быть уверенным.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы