Yoav Kadosh
Yoav Kadosh

Reputation: 5155

PHPSESSID not being saved to cookie

the PHPSESSID variable that holds the session id is not being saved into the client cookie. This results in a new session id being generated every time I call the session_start() function.

This is true when i'm using FireFox, Opera and Chrome. With safari, for some reason, this variable is being successfuly saved into the cookie and everything works fine.

EDIT: Here is my session settings via phpinfo():

session settings via phpinfo

My website has a subdomain, and I want to use the same session acorss all subdomains.

2nd EDIT: when I check var_dump($_COOKIE); on my main domain I get the session id under the name PHPSESSID but when I do that on the subdomain I get an empty array().

Upvotes: 6

Views: 20524

Answers (3)

Lorenz Baermann
Lorenz Baermann

Reputation: 1

The same thing happened to me, I couldn't log in to my users in Safari and Mac Os browsers, not even Firefox, only on Chrome (pc, not Mac). The reason turned out to be a combination, in php.ini, of

  1. session.cookie_lifetime=0
  2. session.cookie_domain=mydomain

Where 0 I changed to 3600 (reasonable) as said by Shea and "mydomain" was (all my fault) wrong because it was missing the ".com", the right name of the domain!

So I ended up changing the config to

  1. session.cookie_lifetime=3600
  2. session.cookie_domain=mydomain.com

Upvotes: 0

gonglong
gonglong

Reputation: 592

It is not used for Yoav's case, but maybe used for other people who got similar issue:

don't forget to call session_start()

It sounds like session_start() would create the PHPSESSID and save it in cookie if it's not sent from client cookie.

from php.net

When a visitor accesses your site, PHP will check automatically (if session.auto_start is set to 1) or on your request (explicitly through session_start()) whether a specific session id has been sent with the request. If this is the case, the prior saved environment is recreated.

some good examples about session_start() http://php.net/manual/en/function.session-start.php

Upvotes: 1

Niet the Dark Absol
Niet the Dark Absol

Reputation: 324750

It looks like the cookie's domain is being set to localhost. This will only work if you're actually running your website from localhost. You need the session.cookie_domain to match your domain name, optionally with a . in front of it (as in .example.com) to also include subdomains.

Upvotes: 4

Related Questions