PHP Session Id changes between pages

前端 未结 10 2014
长发绾君心
长发绾君心 2020-12-07 01:07

I have a problem where i am losing the PHP session between 2 pages.

The session_start() is included in a file called session-inc.php into every page requiring a sess

10条回答
  •  生来不讨喜
    2020-12-07 01:43

    I just spent all day diagnosing this issue in my Ionic3 - to - PHP project. TL; DR - make sure your client is actually sending session credentials.

    In the interest of helping anyone who makes this mistake, I will share how I found the problem. I used these tools to diagnose the session on both the client and server:

    1) Add a test file with phpinfo() to the server to review PHP session options.

    2) Review the PHP code to make sure that no output, intentional or un-intentional occurs before the session_start() line. Check the status bar of Visual Studio Code to make sure the Byte Order Mark (BOM) is absent from the PHP files.

    3) Review server PHP logs (in /var/log/nginx/error.log for me). Add error_log() lines to the php file to dump the session_id() or $_SESSION array.

    4) Use tcpdump -An 'port 80 or port 443' to view the actual HTTP requests and replies. (That's where I discovered the missing cookies).

    For an Ionic3 data provider the correct syntax for the client is:

        var obsHttp = this.http.post(url, body,
      { headers: new HttpHeaders({
        'Content-Type':'application/x-www-form-urlencoded'
      }),withCredentials: true }).timeout(this.timeoutTime);
    

    Notice the withCrentials:true One needs to call subscribe on the obsHttp() observable to send the request.

提交回复
热议问题