簡體   English   中英

在Apache和WebSocket服務器之間使用PHP會話

[英]Using PHP session between apache and websocket server

我正在使用來自https://github.com/Flynsarmy/PHPWebSocket-Chat的 websocket代碼

我已經有了Mysql的自定義用戶帳戶,該帳戶的用戶通過login.php登錄到websocket。 因此,我為特定用戶設置了會話/ cookie。 舉個例子

$_SESSION["user"] = 'xyz';//User is created.

問題是,即使我使用session_id()嘗試使用$ _SESSION 我未能獲得$ _SESSION值。 我正在server.php中執行此操作,而該服務器應該與php server.php命令一起運行。 我在下面嘗試代碼。

session_id("lsjdfjl');
@session_start();
$user = $_SESSION["user"];

而且我收到錯誤消息說未定義索引...

有沒有其他方法可以將上述Websocket服務器與自定義用戶數據庫結合起來,並為不同的登錄用戶創建單獨的聊天室。 例如FB聊天/ Gmail聊天系統。

接受的答案不是很准確。

您可以使用相同的會話數據-參見此處:

https://stackoverflow.com/a/49802049/1274820

我也將在此處張貼代碼和圖像以供后代使用,並避免鏈接腐爛:

var cookie = require('cookie');
var fs = require('fs');
var phpUnserialize = require('php-unserialize');

//This should point to your php session directory.
//My php.ini says session.save_path = "${US_ROOTF}/tmp"
var SESS_PATH = "C:/SomeDirectory/WhereYourPHPIs/tmp/";

io.on('connection', function(socket) {
    //I just check if cookies are a string - may be better method
    if(typeof socket.handshake.headers.cookie === "string") {
        var sid = cookie.parse(socket.handshake.headers.cookie);
        if(typeof sid.PHPSESSID === "undefined") {
          console.log("Undefined PHPSESSID");
        }
        else {
            console.log("PHP Session ID: " + sid.PHPSESSID);
            fs.readFile(SESS_PATH + "sess_" + sid.PHPSESSID, 'utf-8', function(err,data) {
                if(!err) {
                    console.log("Session Data:");
                    var sd = phpUnserialize.unserializeSession(data);
                    console.log(sd);
                }
                else {
                   console.log(err);
                }
            });
        }
    }
}

結果:

結果

您不能使用同一會話。

您根本無法將會話用於websocket連接。

Websocket連接是一個單獨的連接,位於不同的端口上,因此您的主會話在那里不可用。

您需要閱讀有關基於令牌的Websocket身份驗證的信息。 這是一些從https://auth0.com/blog/2014/01/15/auth-with-socket-io/開始的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM