CodeIgniter is generating multiple sessions in the

2020-02-14 17:26发布

问题:

I have a site which does a few ajax calls on page load. For some reason, CodeIgnitor is inserting 4 sessions (I'm assuming one for each ajax call) as you load the page. I'm storing the sessions in the database.

I'm pretty sure there should only be one session per browser. Firefox seems to generate only one; other browsers seem to create a whole bunch of sessions. Multiple sessions for the same user are giving me some serious authentication problems.

Why is this happening? How can I stop it?

回答1:

Hi guys,

I know the discussion took place while ago, but somebody might find this useful. By now I've used CI session without storing its data in database. Today I decided to give it a try and immediately run across the same problem: CI was generating new session in every page load.

I checked my server time, timezone, my cookie etc. - everything I could find as a tip on forums - with no result. Then decided to debug the CI Session class myself. Long story short, it turned out that my user_agent field in my session table was too small - VARCHAR 50 - which cuts the original user_agent string - hence CI doesn't find my session and generates onother one. I just increased the user_agent field size to 200 and everything works like a charm.

I forgot to mention that I use Mac OS X Lion.

Again, hope this will help somebody.



回答2:

Check the date / time on your client OS, and on your server.

I know its too late, but maybe someone finds this page while looking for the answer...

I think it happens because CI sets an expiration time on the cookie containing the session id and if the time difference between the server and client is higher than the expiration time the cookie gets old and the server will generate a new session for the client on every request. Never took the time to figure out the exact mechanism, but happened to me several times, and this fix always worked.



回答3:

I've found this topic with same problem: on every page CI generates new session. Possible solution: remove underscored from site name ( NOT "my_test_site.com", but "my-test-site.com"). At least, this helped in my situation.



回答4:

Check your config.php file and make sure the cookie options are properly filled out. If they are not it cant track the user and it will gen a new session on every page load.



回答5:

Check the date / time on your client OS, and on your server.

I had the same situation and confirm the solution as a fix



回答6:

$config['cookie_domain'] = "example.com";

Use your domain name in this snippet.