Dupla session tábla rekord

Patuzzi képe

4.7.4 és 5.0-nál a következő a problémám:
Időnként nem tudok belépni, mert visszadobja a login képernyőt üzenet nélkül.
CACHE és SESSIONS táblákat ezért kiürítettem, ezután megállapítottam, bejelentkezési kisérletkor két sessionrekord jön létre:
- uid=1 értékkel (ennek sid-je egyezik a cookiban levő PHPSESSID-vel)
- és egy másik uid=0 értékkel.
Ha ismételten belépni próbálok, új session rekord jön létre, aminek sid-je már más, és ez beíródik a cookiba is.
Az érdekesség az, ha a uid=0 értéket átírom uid=1-re, akkor be tudok lépni, de kijelentkezés után megint nem, mert visszaíródik uid=0-ra.
A watchdog szerint a bejelentkezés sikeres!
Mivel így több uid=1 sor lesz a session táblában, így a "bejelentkezett felhasználók" listájában többször szerepel ugyanaz a név.
Úgy tűnik, ez nem böngészőfüggő, hanem tárhelyfüggő, ami egy Hosting cégnél van (PHP v4.4.4, Apache v1.3.37, MySQL v4.1.21)
Van, hogy semmi gond, de van, hogy minden honlapom itt hibás.

Mi lehet az ok és a megoldás?

Hojtsy Gábor képe

Lehet, hogy a .htaccess fájlt nem kezeli le a szerver, és a session beállítások nem jók (mondjuk a sessiont elkezdi fájlban és nem veszi át az adatbázis). Ellenőrizni kellene, hogy a .htaccess érvényre jut.

0
0
Patuzzi képe

Köszi a választ, de hogy kell leellenőrizni, hogy a .htaccess érvényre jutott-e?

Újabb adatok, hátha segít a megoldásban:
Egy hosting cégnél van a tárhely és domain regisztráció.
A fő domain esetében (pl. www.valami.hu) tökéletesen működik. Az aldomain-ek esetében (pl. aldomain.valami.hu, ami ugye a www.valami.hu/aldomain könyvtárba dob be) nem tudok belépni. Ugyanakkor a "www.valami.hu/aldomain" cím megadásával működik.
Megnéztem, minden fő- és aldomain gyökerében a .htaccess fájl ugyanaz)
Sikertelen belépés esetén, ha látszik az "Aktív felhasználók" blokk, akkor többször szerepel ugyanaz a név, mivel a session táblában is több rekord lesz.

Mi lehet az oka?

0
0
Hojtsy Gábor képe

Meg kell nézni, hogy a sütit mire állítja be a Drupal a webhelyek esetén. Találkoztam már a problémával, hogy a fődomain-en (example.com) belépve voltam, és amikor az aldomain-t (sub.example.com) látogattam, az is a fődomain sütit látta, mert úgy volt beállítva, hogy example.com-ra legyen érvényes a süti. Egy ideig próbáltam megoldást keresni a problémára a Drupalon belül, végülis az volt a legegyszerűbb, ha a session sütinek más nevet adok a különböző aldomaineken a .htaccess-ből beállítva. Így biztosan nem keverednek a süti miatt a session azonosítók.

0
0
Patuzzi képe

igen, valahol itt a hiba. Maga a cookie fájlok jók lehetnek, mert létrejön pl. egy user@example[1].txt és a [email protected][1].txt, bennük pl. a


PHPSESSID
98f9d582fda0a558a52221e4494128e8
example.hu/
...


ill.


PHPSESSID
7e1690821d818916e07a2b1664d8531a
aldomain.example.hu/


tartalom. Viszont az aldomain 2 session rekordja mutatja, hogy tényleg keveredés van a cookie-kban:
- egyik rekord (uid=1) esetén a sid értéke stimmel a saját cookie-jával,
- másik rekord esetén (uid=0) a sid értéke megegyezik a fődomain cookie-ban megjegyzett session ID-val!!!
Tehát itt a baj!


Viszont .htaccess ügyben nem vagyok járatos, ezért megkérdezem, hogy hogyan kell ezt akkor végrehajtani: "a session sütinek más nevet adok a különböző aldomaineken a .htaccess-ből beállítva"?

Előre is köszi

0
0
Hojtsy Gábor képe

Én ezt inkább a settings.php-be szoktam rakni. A drupal.hu/english esetében például ez van bent a settings.php alján.

// drupal.hu/english session!!
ini_set('session.cookie_domain',    'drupal.hu');
ini_set('session.cookie_path',      '/english');
ini_set('session.name',             'DRUPALHUENGLISH');
0
0
Patuzzi képe

Nagyon köszönöm a megoldást Gobának.
Csak az
ini_set('session.name','AKARMI');
sort tettem be a settings.php-be minden aldomain esetében, így minden tökéletesen jó (természetesen az AKARMI mindenhol más).

Valószínűleg a settings.php új bejegyzése (csak az 5.0-nál láttam) kavar be:

/**
* We try to set the correct cookie domain. If you are experiencing problems
* try commenting out the code below or specifying the cookie domain by hand.
*/
if (isset($_SERVER['HTTP_HOST'])) {
$domain = '.'. preg_replace('`^www.`', '', $_SERVER['HTTP_HOST']);
// Per RFC 2109, cookie domains must contain at least one dot other than the
// first. For hosts such as 'localhost', we don't set a cookie domain.
if (count(explode('.', $domain)) > 2) {
ini_set('session.cookie_domain', $domain);
}
}

Még egyszer nagyon-nagy köszönet.
A pezsgőt a legközelebbi konferencián átadom ünnepélyes keretek között.

0
0
uborka képe

Nekem ugyanaz a problémám, azzal az eltéréssel, hogy a böngészőben a cookie nem is jön létre, és a honlap nem aldomain-ként érhető el. A drupal alatt a SESSIONS táblában két bejegyzés, 1 és 0 uid-al.

Drupal 4.7.6
MySQL 5.0.24a

Az érdekes az, hogy egy ideig már működött az oldal, és egyszer csak nem.

0
0