ugrás a tartalomhoz

Session probléma

rambo986 · 2009. Júl. 2. (Cs), 13.24
Sziasztok!

Php-mysql alapú weboldalamon bejelentkezés után minden felhasználó kap egy session-t, hogy fennmaradjon a bejelentkezés állapota. Működött is eddig hibamentesen.

Biztonsági okokból azonban minden fájlt kihelyeztem a wwwroot-on kívülre, a publikus oldalon csak egy index.php van, ami includolja get alapján a megfelelő fájlokat, és most nem működik a session kezelés rendesen. Tehát bejelentkezni be tudok, de amint tovább akarok lépni egy menüpontra, rögtön kijelentkezik.

A session-öket kezelő php-t a public oldalon lévő index.php minden oldalra beicludolja a get értékétől függetlenül. Tehát maga a session kezelés programozási szempontból nem változott az oldalamon, csak a fájlok kerültek át más könyvtárakba.

Próbáltam betenni egy session start-ot a publikus index.php-ba, de így sem megy.
Mi lehet a baj, van valami ötletetek?

Köszönöm a segítséget előre is!
 
1

Munkamenet indítás?

kerzo · 2009. Júl. 2. (Cs), 14.35
El lett indítva a munkamenet? Mondjuk az index.php elején:
session_start();
2

El van indítva

rambo986 · 2009. Júl. 2. (Cs), 17.08
Igen, el lett indítva a publikus index.php elején, de így sem működik sajnos.
3

session tömb

kerzo · 2009. Júl. 2. (Cs), 17.43
Ha kiíratod a SESSION tömb értékét bejelentkezés előtt és után is, akkor az van benne, amit szeretnél?
4

Helyén van

rambo986 · 2009. Júl. 2. (Cs), 18.32
Közvetlenül bejelentkezés után a session értéke az aminek lennie kell, kijelentkezés után pedig üres, ahogyan lennie kell.

De bejelentkezés után, ha rákattintok egy menüpontra pl. adatmódosítás, akkor már rögtön úgy érzékeli, mintha nem lenne session, mert kiírja, hogy nincs jogosultságom az oldal megtekintéséhez. Ami direkt van benne, hogy ezeket az oldalakat csak bejelentkezett felhasználók nézhessék meg. Tehát ha egy menüpontra kattintok, valamiért törli a sessiont, vagy úgy érzékeli, hogy nincs.

Ami érdekes, hogy ezek után ha a böngésző vissza gombjával visszatérek az index.php-hoz, akkor a bejelentkező modulban megint kiírja a session értékét, ami a felhasználónevem. Vagyis olyankor meg megint megcsinálja a sessiont, vagy úgy érzékeli, hogy van. De ennek nem így kellene lennie, mert eddig ezt nem lehetett megcsinálni.
5

struktúra

kerzo · 2009. Júl. 2. (Cs), 20.01
Ha jol gondolom, akkor valami hasonló lehet az oldal felépítése:

<?php

require_once("session_moka.php");

...
//header
...

if ( isset($_SESSION['belepve']) && $_SESSION['belepve'] == "true" ) {
  //link összeállítás
  require_once("oldal_linkje.php");
} else {
  //elmész te a ... belépő oldalra
}
...
//footer
...
?>
Bár azért sokat segítene egy kód.
6

Igen, ez a struktúra

rambo986 · 2009. Júl. 3. (P), 01.23
Igen, a struktúra leegyszerűsítve ez, annyi különbséggel, hogy a "session_moka.php"-t a wwwroot-on kívülről includolom be. Bár próbáltam úgy is, hogy ezt a fájlt nem a wwwroot-ból includolom be, de akkor sem működött. Magyarán valószínűleg a többi fájl, amely wwwroot-on kívül van, és felhasználja a session-t, mint információt, azokkal lesz a baj. Bár nem biztos.

Az a baj, hogy eléggé összevissza még a kódom meg sok fájlból áll, de megpróbálok holnapra leírni egy egyszerűsítettet. Addig ha valakinek van ötlete, azt szívesen várom.
7

Hibás path beállítás a sütin?

tgr · 2009. Júl. 3. (P), 02.29
Hibás path beállítás a sütin?
8

Nem használok sütit

rambo986 · 2009. Júl. 3. (P), 14.11
Nem használok sütit, így ez nem lehet baj.
Bár lehet, hogy ebben az esetben kifejezetten szükséges lenne, hogy cookie-val hitelesítsem a munkamenetet, de nem vagyok benne biztos.
9

de használsz

gex · 2009. Júl. 3. (P), 15.58
valószínűleg nem az url-ben adod át a session-azonosítót, úgyhogy használsz sütit.
10

Ha nem használsz sütit, az

tgr · 2009. Júl. 3. (P), 17.36
Ha nem használsz sütit, az önmagában baj :-) Mindenesetre valószínűleg a session azonosító megőrzésével van a gond. Ha megmutatnád a kódot vagy az oldalt, és nem találgatni kéne, úgy könnyebb lenne segíteni...
11

Megoldottam

rambo986 · 2009. Júl. 3. (P), 21.19
Igazatok volt, csináltam egy megoldást, hogy mindig megtoldja az url címeket az adott session azonosítójával, úgyhogy most működik. Köszönöm a segítséget!
12

A GET paraméterben átadott

tgr · 2009. Júl. 5. (V), 00.54
A GET paraméterben átadott session azonosító nagyon rossz gyakorlat, egyrészt lehetetlenné teszi a cache-elést, megnehezíti a könyvjelzőzést és összezavarhatja a keresőket, másrészt ha a felhasználó egy külső linket követ, a link túlsó végén levő oldal a refererből kiolvashatja a session id-t, ami effektíve ugyanaz, mintha a jelszót tudná elolvasni. Használj sütit helyette, azt éppen erre találták ki.