![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam napisanego session handlera, który dane przechowywuje w mysql. W artykule o SH na php.pl przeczytałem, że zmienne sesyjne są serializowane. Chciałem zrobić moduł "userzy on line" wiec wybrałem wszystkie wpisy z DB i probowalem odserializowac. Okazało się, że te dane nie są zaserializowane tylko zapisane w jakiś dziwny sposób. Czy ktoś może mi odpowiezieć, jak taki string, który przedstawiam poniżej zamienić na tablice assoc? Kod userid;s:1:"1";login;s:4:"olek";roles;s:54:"editMenus;viewNews;manageNews;viewComments;addComments";groupid;s:1:"1";groupName;s:13:"Administrator";lang;s:2:"pl";
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
userid;s:1:"1";
nazwa zmiennej typ: string dlugosc 1 wartosc "1" chyba jest taka funkcja unserialzie -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli to jest wynik serializowania, to dane muszą przecież być "zaserializowane" i dać się odserializować. Nie ma sensu analizować tego ręcznie. No chyba że był jakiś błąd przy zapisywaniu tego do bazy danych i odserializowanie się nie udaje.
BTW, kiedyś miałem problem z zapisywaniem serializowanych obiektów do pliku - file_put_contents(serialize($foo)) - chyba obiekt był zbyt długi po serializacji i z powrotem wychodziły śmieci, i o dziwo pomogło mi jakieś wstawienie slashy (i usunięcie oczywiście przed deserializację). Summa summarum, wyszło bez sensu. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
muszę zrobić małe sprostowanie. Otóż gdy pisałem pierwszego posta byłem chyba bardzo śpiący bo podałem zły string. Prawidłowy string( czyli ten co zapisuje metoda write sesji) jest następujący:
Kod userid|s:1:"0";login|s:9:"anonymous";roles|s:41:"useAuth;viewNews;viewComments;addComments";groupid|s:1:"2";groupName|s:10:"U?ytkownik";lang|s:2:"pl"; Ace zapodał mi takie wyrażenie regularne. Działa, jednakże rozwiązuje problem w sposób bardzo nieelegancki i raczej nie będę mógł go użyć w swojej aplikacji. Jeżeli ktos ma pomysł, jak ten string odczytać, proszę o rady ![]() Rezultat: Kod Array ( [0] => Array ( [0] => userid|s:1:"0"; [1] => login|s:9:"anonymous"; [2] => roles|s:41:"useAuth;viewNews;viewComments;addComments"; [3] => groupid|s:1:"2"; [4] => groupName|s:10:"U?ytkownik"; [5] => lang|s:2:"pl"; ) [1] => Array ( [0] => userid [1] => login [2] => roles [3] => groupid [4] => groupName [5] => lang ) [2] => Array ( [0] => s [1] => s [2] => s [3] => s [4] => s [5] => s ) [3] => Array ( [0] => 1 [1] => 9 [2] => 41 [3] => 1 [4] => 10 [5] => 2 ) [4] => Array ( [0] => 0 [1] => anonymous [2] => useAuth;viewNews;viewComments;addComments [3] => 2 [4] => U?ytkownik [5] => pl ) ) UPDATE: a więc problem rozwiązany:
Kod Array Gratulacje przyjmuję od poniedziałku do piątku w godzinach od 18:00 do 22:00 ( [userid] => 0 [login] => anonymous [roles] => useAuth;viewNews;viewComments;addComments [groupid] => 2 [groupName] => U?ytkownik [lang] => pl ) ![]() Ten post edytował olo 27.01.2005, 17:30:37 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 1.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
Działa, działa. Pochwalić!!!
![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 0 Dołączył: 13.01.2003 Skąd: 3rd ball of mud behind a big ball of burning gas Ostrzeżenie: (0%) ![]() ![]() |
Coś bardziej wydajnego (-;
Przykład użycia:
Output: Kod array(6) {
["userid"]=> string(1) "0" ["login"]=> string(9) "anonymous" ["roles"]=> string(41) "useAuth;viewNews;viewComments;addComments" ["groupid"]=> string(1) "2" ["groupName"]=> string(10) "U?ytkownik" ["lang"]=> string(2) "pl" } -------------------- It's Time to Join the PLD Linux Generation!
<? while (!$success) { $try++; } ?> |
|
|
![]()
Post
#7
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Optymalizacja sie klania ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:35 |