PHP SESSION data lost between page loads with WAMPserver 2.0 on localhost

后端 未结 7 985
长情又很酷
长情又很酷 2021-01-15 02:08

I have a PHP authentication system on my website using the $_SESSION variable.

A form submits a username and password to the file \"login.php\". It is handled like t

7条回答
  •  遥遥无期
    2021-01-15 02:32

    I had this problem using WAMPSERVER for development on /localhost. I needed to change session.use_only_cookies either in-line or in the php.ini setting from

    session.use_only_cookies = 1
    

    to

    session.use_only_cookies = 0
    

    Explanation

    Using default cookie-based sessions was working as expected but I needed a cookie-less solution. A test starting page:

    page 2';
    ?>
    

    The session data was created and stored successfully in the WAMPSERVER temp directory, e.g., C:\wamp\tmp\sess_0rkdlonl5uia717rf03d4svs16. The link generated by the above code looks similar to (note the UID matches the session data file name):

    page2.php?PHPSESSID=0rkdlonl5uia717rf03d4svs16

    But the destination page2.php was throwing undefined errors for the variable 'time' whilst attempting to retrieve the session data:

    page 1';
    ?>
    

    By setting session.use_only_cookies FALSE in either the script before session_start();:

    ini_set('session.use_only_cookies', '0');
    

    or changing it globally in php.ini:

    ; This option forces PHP to fetch and use a cookie for storing and maintaining
    ; the session id. We encourage this operation as it's very helpful in combatting
    ; session hijacking when not specifying and managing your own session id. It is
    ; not the end all be all of session hijacking defense, but it's a good start.
    ; http://php.net/session.use-only-cookies
    session.use_only_cookies = 0
    

    solved the problem.

提交回复
热议问题