Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odtwarzanie sesji
Forum PHP.pl > Forum > PHP
rzseattle
Hey

Mam problem, przy ktorym normalnie sie zakrecilem. Ciekawi mnie jak wy odtwarzacie sesje uzytkownika, poniewaz moje proby narazie nic nie przyniosly. Najpierw chcialem aby obiekt auth zwracal id uzytkownika (po rozpoznaniu ciacha) a nastepnie na podstawie id session handler odtwarzal sesje. Problem polega na tym ze obiekt auth wykozystuje sesje do przechowywania danych o urzytkowniku. Czyli jesli go wywolam przy otwieraniu sesji to po zakonczeniu rejestracji session handlera dane uprzednio w sesji umieszczone gubia sie. Niby da sie ominac ten problem przez pominiecie obiektu auth ale nie musze nikomu tlumaczyc ze to nie jest dobry pomysl. Moze ktos posiada juz doswiadczenia z odtwarzaniem sesji i zechce sie nimi podzielic ?
..:: pingu ::..
nie wiem czy ci to pomozę ale
[php:1:9e04596d6e]<?php
session_id ( $dane );
session_start();
?>[/php:1:9e04596d6e]
tak mozesz ustalic sesje, podbierajac skąds numer sesji jako $dane.
rzseattle
Cytat
tak mozesz ustalic sesje, podbierajac skąds numer sesji jako $dane.


Nie o to mi chodzilo winksmiley.jpg.

Problemem jest dla mnie odtwarzanie sesji jesli dane potrzebne do jej odtworzenia dostarcza obiekt auth ktory z kolei uzywa sesji do przetrzymywania danych. Nie chce obnizac bezpieczenstwa systemu omijajac obiektu auth ale chyba jednak nie ma innego wyjscia. Tylko do ciasteczka autoryzujacego bede musial dodac unikalny klucz zeby ktos sobie na wlasna reke ciasteczka nie zrobil.
boloo77
Nie jestem pewny czy Ci to pomoże ale możesz spróbować troche zmienić podejście do tematu...

w sesji trzymasz cały obiekt autch.

musisz jedynie pamiętać żeby zrobić to w ten sposób:
[php:1:ecde89ef99]<?php
session_write_close();
//Tutaj definicja klasy autch.
session_start();
?>[/php:1:ecde89ef99]

no i jak gość się zaloguje obiekt autch pobiera jego dane i tworzysz zmienna sesji - obiekt autch
[php:1:ecde89ef99]<?php
$autch=New autch();
if($autch->Zaloguj($login,$haslo))//jesli poprawnie sie zalogowal autch->Zaloguj() pobiera jego dane i zwraca true
{
$_SESSION['autch']=$autch;
}
?>[/php:1:ecde89ef99]

a potem tylko sprawdzasz czy istnieje obiekt
[php:1:ecde89ef99]<?php
if(isset($_SESSION['autch']) && get_class ( $_SESSION['autch']=="autch"))
{
//gosc jest zalogowany
$autch=$_SESSION['auych'];
}
else
{
header("Location:logowanie.php");
//gosc nie jest zalogowany
}
?>[/php:1:ecde89ef99]
rzseattle
@boloo77 biestety nie o to mi chodzilo. Juz nawet nie patrz na to jak na autoryzacje. Chodzi o to ze obiekt ktory powinien dostarczyc session handlerowi dane dla odtworzenia starej sesji sam jej uzywa. Wszystko sie krzaczy poniewaz ow obiekt umieszcza dane w standardowej sesji php ktora jest nadpisywana przez uzyty pozniej session handler. Wiec dane sie gubia sad.gif . Powtorne wywolanie obiektu nie wchodzi w gre poniewaz moze nie miec juz wystarczajacych danych do zalogowania uzytkownika (np gdyby wymienial jego ciastko logujace z powodow bezpieczenstwa). Czyli jeden wielki paradox winksmiley.jpg .
Bora
czyli jeże.i dobrze rozumiem to używasz jakby 2'ch sesji na raz. Ja bym zrobił to tak. Własna klasa z obsługą sesji po session read zapisać id jako zmeinną , nowe sessionid przypisać przez session_id($nowe). Potem tylko jeszzce przy zapisie powtórzyć tyko odwrócony proces. Nie wiem czy dobrze zrozumiałe ale chyba o to biega smile.gif. aha i może jeszcze być tak jak ja ostatnio sie zakręciłem. zastosowałem przed klasą do obsługi sesji klase która przetwarzała tablic get i post a potem je czyściła co spowodowało spore zamieszanie smile.gif
rzseattle
No to jest logiczne rozumowanie. Niestety staram za wszelka cene trzymac sie wyznaczonych celow. Czyli np session handler nie powinien zajmowac sie niczym innym jak zapoczatkowaniem sesji uzytkownika , starej badz nowej. Nie powinien sie przejmowac tym ze obiekt auth costam chce i trzeba by bylo go wspomoc przez przepisanie okreslonych danych do sesji :/ .

Ale dzieki bora chyba jednak przepisze ta jedna tablice autoyzacyjna i bede mial spokoj.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.