PHP Session alt alanı ile paylaştı

3 Cevap php

Ben alt etki arasında oturum değişkenleri geçen hakkında (bu da dahil olmak üzere) birçok forum okudum, ve ben bu işe alınamıyor. Birisi eksik ne açıklayabilir misiniz?

Step 1 In the php.ini file: session.cookie_domain = ".mydomain.com" Verified with phpinfo() that I am using the right php.ini file

Step 2 In page at www.mydomain.com set a session variable $_SESSION['a'] , verify that it appears by calling it on the next page (it does). Clink link to sub.mydomain.com

Step 3 Page at sub.mydomain.com checks if session variable is set using:

$a = $_SESSION['a']; if(!isset($_SESSION['a'])){ echo "Error: Session Variable not available"; }

Ne yazık ki benim hata mesajı alıyorum. Ne eksik? Yardımlarınız için şimdiden teşekkür ederiz.

3 Cevap

Yani, ben farklı bir yöne gitti ve çalıştı bu girdiyi kullanılır ...

session_set_cookie_params(0, '/', '.mydomain.com'); session_start();

debugging.
is the thing you're missing.

her şeyden önce gidiyor ve ne kurabiye aslında ayarlanır ediliyor ne görmek için HTTP başlıklarını izlemek zorunda. Sen LiveHTTPHeaders Firefox addon falan kullanabilirsiniz. Bu bilgi ile sorunu bulabilirsiniz. O kimse tur soruya cevap verebilir olmadan "benim oturumları çalışmıyor"

It can prove your statement of proper domain setting in the session settings. Or disprove it.
It can reveal some other misconfiguring.
It may show you cookie being sent back by the browser - so you can be sure that is server side problem

actual result kodunuzu (yerine dolaylı sonuçlara dayalı olarak tahmin etme) görmek için her zaman yardımcı olur.

Sen bir çerez olarak session id geçmek ve yeni etki aynı session id ayarlamanız gerekir

Örneğin bu kodu kullanabilirsiniz

ini_set('session.cookie_domain', '.example.com');
$currentCookieParams = session_get_cookie_params();

$rootDomain = '.example.com';
session_set_cookie_params( 
    $currentCookieParams["lifetime"], 
    $currentCookieParams["path"], 
    $rootDomain, 
    $currentCookieParams["secure"], 
    $currentCookieParams["httponly"] 
); 

if(!empty($_SESSION)){
    $cookieName = session_id();
    setcookie('PHPSESSID', $cookieName, time() + 3600, '/', $rootDomain); 

}

if(isset($_COOKIE['PHPSESSID'])){
    session_name($_COOKIE['PHPSESSID']); 
}