Re: php4 -> php5 session problem
| From: | Juergen Falb | Date: | Fri, 16 May 2008 18:26:25 +0000 |
| Subject: | Re: php4 -> php5 session problem | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-274434@lists.php.net to get a copy of this message | ||
I've already tried adding session_write_close(); It didn't help. The session file gets saved and contains data after the first request, making the request from another machine resets everything. It even doesn't work if you make the request manually from different machines with the same session id allowing enough time between the requests.
Am 16.05.2008 um 13:24 schrieb paragasu:
On Fri, May 16, 2008 at 6:40 PM, Juergen Falb <falb@ict.tuwien.ac.at> wrote: Dear all, since upgrading to php5 I've a problem with session handling. In php4 a user initiated a session, the session id gets afterwards handed over to a payment provider. When the payment provider calls a script with the session id added to the query string, all session data gets loaded and everything works fine. When I switch to php5 all session data gets lost and the session file has zero length afterwards. Attached is a short script to verify the behaviour: <?php session_name('XTCtest'); if (isset($_GET['sid'])) $sessid = session_id($_GET['sid']); session_start(); if (isset($_GET['set'])) $_SESSION['customer_id']=$_GET['set']; echo "<html><head><title>test</title></head><body>your customer id is " .$_SESSION['customer_id']." and session id is ".session_id()."<body></html>"; ?> calling the script from machine 1 with query string "?set=4711" returns the correct value. calling the script again from machine 1 without a query string and cookies enabled works as expected (returns 4711). calling the script from machine 2 with query string "?XTCtest=<sessionid>" or "?sid=<sessionid>" works perfectly on php4 and return 4711. On php5 session data is lost and nothing is returned. Does anybody have a clue what I miss or have to change for php5? regards, Juergen P.S: attached are the php.ini setting for php5 session.save_handler = files session.save_path = "/tmp" session.use_cookies = 1 session.use_only_cookies = 0 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.serialize_handler = php session.gc_probability = 1session.gc_divisor = 1000session.gc_maxlifetime = 1440 session.bug_compat_42 = 1 session.bug_compat_warn = 1 session.referer_check = session.entropy_length = 0 session.entropy_file = session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0 session.hash_function = 0 session.hash_bits_per_character = 5 --PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php i got the same problem last time. The session lost after i do a page forwarding using the header('Location:') thing.. i fix it by adding session_write_close(); before the header()..