![]() |
![]() |
-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,
Wczorajszym autorem wpisu jestem ja. Zamieszczam zatem kod który powoduje komplikacje w postaci nie wyświatlania obrazków, gdy tworzę równolegle egzemplarz klasy Session w klasie Token: Klasa Token: Kod <?php require_once ('class/StringGenerator.class.php'); require_once ('class/Session.class.php'); class Token { private $objStringGenerator; private $strLength = 5; private $sizeW = 150; private $sizeY = 70; private $imgResource; private $fontColor; private $fontDir = 'token/token.ttf'; private $fontSize = 30; private $returnImage; private $objSession; public function __construct() { $this->objStringGenerator = StringGenerator::GetString($this->strLength); $this->objSession = new Session(); //jesli jest dodany zakomentowany fragment, obrazki sie nie wyswietlaja, czyli juz od momentu tworzenia nowej instancji klasy // w tym samym czasie z klasy sesji korzysta też register.php $_SESSION['token'] = $this->objStringGenerator; //cd. } private function CreateImage() { return imagecreatetruecolor($this->sizeW, $this->sizeY); } public function GetString() { return $this->objStringGenerator; } public function Execute() { $this->imgResource = $this->CreateImage(); $this->ImageFillColor(); $this->Imagettftext(); $this->returnImage = imagejpeg($this->imgResource); imagedestroy($this->imgResource); return $this->returnImage; } private function SetFontColour() { return imagecolorallocate($this->imgResource, 0, 0, 0); } private function Imagettftext() { return imagettftext($this->imgResource, $this->fontSize, rand(-5, 5), 5, 50, $this->SetFontColour(), $this->SetFont(), $this->objStringGenerator); } private function SetFont() { return $this->fontDir; } private function ImageFillColor() { return imagefilledrectangle($this->imgResource, 0, 0, 400, 70, $this->WhiteColor()); } private function WhiteColor() { return imagecolorallocate($this->imgResource, 255, 255, 255); } } ?> Plik token.php: Kod <?php //Wczytanie generatora obrazków require_once ('class/Token.class.php'); $token = new Token(); $token->Execute(); ?> Odwołanie do token.php znajduje się w szablonach Smarty w <img>. Może teraz widać gdzie robię błąd? Ten post edytował m44 17.11.2008, 21:35:28 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 16:31 |