Редактировать
Простой и эффективный ответ, на который указывают 04FS и Магнус Эрикссон , заключается в отправке зашифрованного токена черезIFrame, идентифицирующий пользователя.
Вот что я сделал:
- Создайте зашифрованный токен с PHP random_bytes () для каждого пользователя и сохраните их вбаза данных.
- Когда пользователь входит в систему, запрашивает у базы данных токен и помещает в него переменную $ _SESSION.
- Отправляет токен в качестве параметра на URL в IFrame.
<iframe src="http://localhost:3381/?token=(some hashed string)"></iframe>
(примечание: может быть лучше не использовать легко узнаваемое слово «токен», а что-то другое)
Запросите ту же базу данных с сервера Node.js, найдите токен и войдите в соответствующего пользователя.
Окончание редактирования
IЯ довольно новичок в веб-разработках.
Я работаю над гибридным веб-приложением PHP / Node.js. Я использую PHP для создания страницы и Node.js с Express.js и Socket.io для создания чата в реальном времени.
В настоящее время Я использую IFrame в своем PHPСтраница для отображения чата с сервера Node.js. Кажется, это лучшее решение, так как я не могу использовать функции php, такие как file_get_content (), для запроса к серверу Node.js, потому что мне нужно отображение в реальном времени.
Вот что работает:
index.php на локальном хосте: 8080 (Apache)
<iframe src="http://localhost:3381/?userid=1"></iframe>
Сервер Node.js на локальном хосте: 3381 (маршрутизация выполнена с помощью Express.js)
app.get('/', function (req, res) {
res.sendfile(__dirname + '/template-chat.html');
console.log(req.query.userid);
});
Файл template-chat.html содержит интерфейс чата.
Так что все работает, как я хочу: чат обновляется в режиме реального времени. время, пока пользователь перемещается по сайту.
Моя проблема: Я хочу определить пользователя, который печатает сообщения в окне чата. Я хочу быть уверен, что это то же самое, что и на сайте PHP (я уже сделал форму входа PHP / Mysql). Я, очевидно, не могу сделать то, что сделал здесь, отправив идентификатор пользователя в URL-адресе, поскольку кто-то просто должен вручную изменить этот идентификатор, чтобы его идентифицировали как кого-то другого.
Я не думаю, что смогу сделать http.getзапрос от Node.js к Apache, потому что PHP не хранит данные пользователя в памяти.
Я прочитал здесь: PHP, nodeJS и сеансы , которые я могу использовать memcached чтобы получить содержимое сеанса PHP внутри моего сервера Node.js.
Это то, чего я пытаюсь достичь прямо сейчас, но, похоже, ему нужны расширения / драйверы, с которыми я не знаком, поэтому Я спрашиваю, есть ли лучшее, более простое или более безопасное решение, чем memcached, для идентификации пользователя в чате, возможно, путем отправки учетных данных для входа (или даже простого user_id) из PHP в Node.js.
Спасибо!