Felhasznalo benttartasa tobb oldalon, egy domain-en keresztul
Sziasztok!
Van több oldal azonos domainben, különböző virtualhoston, amelyeknél fontos lenne, hogy ugyanazt a session-t használják. A session beállításai a következők: ini_set("session.cookie_domain", ".example.com").
Igy elvileg a site1.example.com, és site2.example.com -on ugyanezt a session-t kellene látnunk.
A session tesztelése során annak ellenére, hogy mindkét oldalon a session_id() függvény ugyanazt adja vissza, a $_SESSION értékei törlődnek, mikor egyik oldalról a másikra megyünk át (tehát ha egyik oldalon be lenne lépve a user, addig a másikon nem).
A server tulajdonsagai: php 5.2.1, apache 2.2.3
Az apache virtualhost beállításai a következők:
<VirtualHost *>
ServerName site1.example.com
ServerAlias www.site1.example.com
ServerAlias site1.example.com
DocumentRoot "/var/www/site1.example.com"
<Directory />
Options FollowSymlinks
AllowOverride All
</Directory>
</VirtualHost>
<VirtualHost *>
ServerName site2.example.com
ServerAlias www.site2.example.com
ServerAlias site2.example.com
DocumentRoot "/var/www/site2.example.com"
<Directory />
Options FollowSymlinks
AllowOverride All
</Directory>
</VirtualHost>
A php session-re vonatkozó beállításai:
Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary wddx
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php5 /var/lib/php5
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
A kod, amivel teszteltuk:
<?php
ini_set("session.cookie_domain", ".example.com");
session_start();
print "cookie_domain: ".ini_get("session.cookie_domain")."<br >";
if (!isset($_SESSION["tesztvar"])) {
print "Tesztvar nem volt létrehozva, létrehoztam<br>";
print "session_id: ".session_id()."<br>";
$_SESSION["tesztvar"] = 1;
} else {
print "Tesztvar be van állítva<br>";
print "session_id: ".session_id()."<br>";
}
?>
Milyen beállítástól függhet ez a dolog, hogy nagyon nem akar működni?
Koszi
ZoTyA
■ Van több oldal azonos domainben, különböző virtualhoston, amelyeknél fontos lenne, hogy ugyanazt a session-t használják. A session beállításai a következők: ini_set("session.cookie_domain", ".example.com").
Igy elvileg a site1.example.com, és site2.example.com -on ugyanezt a session-t kellene látnunk.
A session tesztelése során annak ellenére, hogy mindkét oldalon a session_id() függvény ugyanazt adja vissza, a $_SESSION értékei törlődnek, mikor egyik oldalról a másikra megyünk át (tehát ha egyik oldalon be lenne lépve a user, addig a másikon nem).
A server tulajdonsagai: php 5.2.1, apache 2.2.3
Az apache virtualhost beállításai a következők:
<VirtualHost *>
ServerName site1.example.com
ServerAlias www.site1.example.com
ServerAlias site1.example.com
DocumentRoot "/var/www/site1.example.com"
<Directory />
Options FollowSymlinks
AllowOverride All
</Directory>
</VirtualHost>
<VirtualHost *>
ServerName site2.example.com
ServerAlias www.site2.example.com
ServerAlias site2.example.com
DocumentRoot "/var/www/site2.example.com"
<Directory />
Options FollowSymlinks
AllowOverride All
</Directory>
</VirtualHost>
A php session-re vonatkozó beállításai:
Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary wddx
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php5 /var/lib/php5
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
A kod, amivel teszteltuk:
<?php
ini_set("session.cookie_domain", ".example.com");
session_start();
print "cookie_domain: ".ini_get("session.cookie_domain")."<br >";
if (!isset($_SESSION["tesztvar"])) {
print "Tesztvar nem volt létrehozva, létrehoztam<br>";
print "session_id: ".session_id()."<br>";
$_SESSION["tesztvar"] = 1;
} else {
print "Tesztvar be van állítva<br>";
print "session_id: ".session_id()."<br>";
}
?>
Milyen beállítástól függhet ez a dolog, hogy nagyon nem akar működni?
Koszi
ZoTyA
RTFM
'session.cookie_domain' should be set to empty string
for all local domain names, not only for 'localhost' (but should
not be empty for local IP addresses):
php.net
Nem igazan jo...
Igy semmi köze nem lesz a kettőnek egymáshoz és külön sessionjük lesz.
Google
session_id átvitele subdomainekre