ugrás a tartalomhoz

Munkamenet adatok nem jönnek újra elő

Anonymous · 2005. Aug. 8. (H), 17.53
Üdv!

Sürgősn kéne segítség! A helyzet a következő:


Van egy php oldalam, ami indít egy sessiont. Ha a user bejelentkezik, akkor a $_SESSION[] tömböt feltölti az adatbázisból kiolvasott adatokkal, és ezzel belépteti a usert. Ezt megcsinálja jól.

A baj, viszont, hogy ezek után bármilyen linkre kattintok az oldalon, a $_SESSION[] tömb kiürül, és ennek következtében a usert kilépteti a program.

A linkek az alábbi formátumban vannak megadva: $_SERVER['PHP_SELF']."?page=linkcelja".

Aztán a programnak pedig be kéne includeolnia a linkcelja.inc.php-t. De ehelyet kiüríti a $_SESSION[]-t.

A php.iniben a session beállításaim:

session.save_handler = files
session.save_path = .\tmp
session.use_cookies = 0
session.name = PHPSESSID
session.auto_start = 1
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter =
session.cache_expire = 180
session.use_trans_sid = 0
 
1

session_start()

Anonymous · 2005. Aug. 8. (H), 19.39
Esetleg, csak probaképp ha elhelyezel egy session_start() függvényt a lapok elején? Látom hogy session.auto_start = 1, de mégis olyan mintha nem adná át a sessiont. Esetleg próbáld meg az url-ben átadni a sessiont (session.use_trans_sid = 1)
2

<Nincs cím>

Anonymous · 2005. Aug. 8. (H), 21.16
Az elején ott a session_start, és próbáltam a session.use_trans_sid-t bekapcsolni...

De azért kösz :)
3

<Nincs cím>

Anonymous · 2005. Aug. 8. (H), 22.06
Ha bekapcsoltad, akkor hozzáfűzte a linkekhez az azonosítót és ennek ellenére ürült ki a $_SESSION? Még esetleg megpróbálhatod a session.use_cookies-t bekapcsolni, hátha úgy megy (igaz ez nem teljes megoldás).
4

session_start()

nal · 2005. Aug. 8. (H), 22.20
Szerintem sem indul el a session.
Igy nem adja át az adatokat a másik PHP oldalnak.
Én is szívtam ezzel :
Próbáld az oldalad legelejére tenni a session_start()-t.
5

persze, sehogy nem megy át a munkamenet azonosító!

Hojtsy Gábor · 2005. Aug. 8. (H), 23.42
Nos, a use_trans_sid ki van kapcsolva, tehát meg sem próbálja a PHP átadni űrlapban és linkekben az azonosítót, a use_cookies pedig ugyanúgy ki van kapcsolva, tehát sütit sem fog beállítani. Magyarul semmilyen módon nem állítja be a PHP a kliensnél a munkamenet azonosítót.

Most akkor ezalapján milyen feltételezés vezet téged arra, hogy a dolognak működnie kellene? Ha a kliens nem kapja meg az azonosítót (akár a PHP segítségével, akár a kódod megfelelő elkészítésével), akkor nem is fogja visszakapni, következésképpen nem fogja tudni, hogy milyen klienssel van dolga, és nem tudja elővenni a hozzá tartozó adatokat. Ha nem akarod, hogy a PHP a kimeneten átírjon linkeket és űrlapokat, akkor neked kell gondoskodni, hogy mindenütt feltűnjön a munkamenet azonosító a kimeneten, ahol kell, és ugyanez igaz a sütikre is.
6

<Nincs cím>

Anonymous · 2005. Aug. 9. (K), 00.11
A trans_sidet bekapcsoltam. Session_start ott van az elején. Még mindig nem műxik. Cookiekat pedig nem akarok használni.
7

<Nincs cím>

Anonymous · 2005. Aug. 9. (K), 03.27
Próbáld nem localhost-ként nézni az oldalt, vagy nem ip-vel tesztelni. Vagy Opera-ban, asszem annak jó lesz úgy is.
10

URL

Anonymous · 2005. Aug. 9. (K), 12.50
nézd meg, hogy az URL végén ott van-e az azonosító. Amúgy próba képpen kipróbálhatnd sütivel is... Vagy a SID konstanssal.
8

session_start()

nal · 2005. Aug. 9. (K), 07.50
pa.php :
<?php
session_start();
$_SESSION['PA']="session adat";
?>
<a href='PB.php' >PB hívása</a>

pb.php :
<?php
session_start();
echo $_SESSION['PA'];
?>
ennek mennie kell , akkor mükszik a session
9

tmp

aries · 2005. Aug. 9. (K), 08.08
Az a TMP könyvtár létezik, írható/olvasható?
--
Aries
http://aries.mindworks.hu
11

<Nincs cím>

Anonymous · 2005. Aug. 10. (Sze), 19.41
TMP könyvtár létezik. Meg is jelenik benne a session, mikor belépek. A sessionbe be is kerülnek az adatok, print_r($_SESSION) nagyon szépen megmutatja. Aztán rákattintok egy linkre, és kiürül a $_SESSION. Megmarad, nem törlődik, csak kiürül. És ettől persze használhatatlanná válik az egész progi...

Azért kösz az ötleteket :)
12

Nem egyértelmű

zila · 2005. Aug. 14. (V), 15.13
Az eddigi hozzászólásokból nekem nem egyértelmű, hogy a session_start ott van minden php-d elején? (mert ott kell lennie :)

üdv,
Zila
13

ott van

Anonymous · 2005. Aug. 19. (P), 17.24
Egy darab php filet használok, az magát hívja meg egy URL-ben átadott ?page= paraméterrel, aminek a tartalmát ilyesformán hívja meg a program:

include("../inc/".$_GET['page'].".page.php");

A session_start(); pedig ott van az elején.

Más: megpróbáltam cookiekkal is, úgysem müxik.
14

unset

Anonymous · 2005. Aug. 25. (Cs), 21.27
Nincs valahol véletlenül egy unset? Vagy idő előtti session_write_close?
15

<Nincs cím>

Anonymous · 2005. Szep. 3. (Szo), 22.36
$sid = session_id();
if ($_GET['logout'] == 1 || (!empty($sid) && empty($_SESSION['samurai_id'])))
{
session_unset();
session_destroy();
}

Ez az egyetlen session_unset() az egész progiban.