![]() |
![]() |
-gosc- |
![]()
Post
#1
|
Goście ![]() |
Witam,
Napisałem swojego Session Handlera, wszystko działa, tylko jest mały szczegół. PHP nie generuje mi zawsze 32-znakowego identyfikatora sesji, tylko krótszy, np. 26-znakowy, 28-znakowy - różnie, jednak za każdym razem inaczej. Czy PHP powinien domyślnie generować tylko 32-znakowe identyfikatory, czy założenie twórców języka jest, że ma to być ciąg do 32 znaków? A może mam coś żle ustawione w php.ini? Druga sprawa, to problem wykorzystanie Uchwytu Sesji w pewnym fragmencie kodu. Otóż mam klasę odpowiedzialną za generowania 5-znakowych stringów i wstawianie ich do pliku graficznego, czyli pospolity token. Problem rozwiązuje w ten sposób, że utworzyłem plik token.php, a w nim instancję klasy Token wraz z metodą wyświetlająca obrazek. Do tego pliku odwołuję się w pliku register.tpl (używam systemu szablonów Smarty) i po prostu wstawiam do niego odwołanie w znacznikach <img>. Obrazek wyświetla się poprawnie. Mój problem polega jednak na tym, że w pliku token.class.php nie mogę powtórnie (bo pierwszy raz jest to zrobione register.php) uruchomić sesji przez klasę do obsługi sesji. Wtedy dostaję informację, że albo obrazek zawiera błędy, albo nie jest on generowany. Muszę jednak zrobić jakoś wywołać sesję bo nie widzę innego sposobu, aby zachować wygenerowany string tokenowy pomiędzy odświeżeniami. Jak rozwiązać ten problem? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 10 Dołączył: 16.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Od początku. Klasy StringGenerator używam także w innych miejscach i skryptach więc działa ona prawidłowo. Na pewno nie jest to problem tworzenia ponownego sesji. Sprawdzałem już wcześniej za pomocą flagi (domyślnie pustej), a zmieniającej wartość tylko wtedy, kiedy tworzona jest instancja - jeśli została już utworzona, nie robi tego drugi raz (to chyba Singleton?). I nic. Dzisiaj zmodyfikowałem nawet skrypt, żeby można było pominąć na chwile tworzenie egzemplarza klasy sesji w pliku wczytywanym obok - register.php, i problem występuje dalej i polega on tylko na tym, że obrazek nie jest generowany, wszystko inne, czyli zapisanie ciacha sesyjnego, rozpoczęcie sesji działa, tylko obrazek się nie wyświetla. Wydaje mi się że konflikt polega na równoczesnym korzystaniu z biblioteki GD w klasie Token, ktora powinna wykonywać czynności związana stricte z obróbka grafiki. Jakiekolwiek wstawienie tam innych operacji prowadzi do komplikacji o których mowa. Zresztą kiedy wywoływana jest metoda execute klasy Token, dane sesyjne nie zapisują się w bazie. Kiedy zakomentuję tę metodę i wywołam sesje z Handlera + zapisze wygenerowany string w $_SESSION, to pojawia się on w bazie. Czyli problem jest z wykonywaniem pewnych prostych procesów graficznych i operacji typu sesja równocześnie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 18:51 |