Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Token
Forum PHP.pl > Forum > PHP > Frameworki
ahead
Nie wiem dokładnie jak zaimplementować token w ZF(jest zintegrowany ze smarty). Jako src obrazka ustawiłem odpowiednią akcje generującą token. Sama akcja wyświetla error, "obrazek nie może być wyświetlony, ponieważ zawiera błędy."
nexis
Może podzielisz się kodem, abyśmy mogli pomóc?
LBO
Przy tworzeniu formularza, generujesz Token i zapisujesz do sesji. Natomiast w obrazku z formularza wypluwasz ten token graficznie.

Możesz token w sesji połączyć jeszcze z jakimś unikalnym kluczem (który byś umieścił jako niewidoczny input) - wtedy użytkownik mógłby mieć kilka otworzonych formularzy i każdy ze swoim tokenem.
ahead
  1. <?php
  2. public function genAction(){
  3.        
  4.        $app = Zend_Registryget(Alib_RegistryAPP);
  5.        
  6.  $session = new Zend_Session_Namespace('token');
  7.  
  8.      header ("Expire: Mon, 22 Sep 1997 0:0:00 GMT");
  9.    header ("Last-Modifie: " . gmdate("D, d M Y ::s") . " GMT");
  10.    header ("Cache-Control: no-store, no-cache, must-revalidate");
  11.    header ("Cache-Control: post-check=0, pre-check=0", false);
  12.    header ("Pragm: no-cache");    
  13.    
  14.    mt_srand(time() * 13);
  15.    
  16.    $rand_first = mt_rand(0,8);
  17.    $rand_last = mt_rand(0,8);
  18.    
  19.    $allowed = '123456789';
  20.    $allowed = str_shuffle($allowed);
  21.    
  22.    $first = substr($allowed, -1);
  23.    $second = substr($allowed, 0,1);    
  24.    $pass = $first + $second;
  25.    
  26.    $string = $first . ' + ' . $second;
  27.    
  28.    $image = imagecreate(120, 50);
  29.    
  30.    $black = imagecolorallocate($image,0,0,0);
  31.    $white = imagecolorallocate($image, 255,255,255);
  32.    
  33.    $font =  $app->config['font'];
  34.    
  35.    imagettftext($image, 17, 6, 15, 35, $white, $font, $string);
  36.    
  37.  $session->name = $pass;
  38.    
  39.    header('Content-typ: image/png');
  40.    imagepng($image);
  41.    imagedestroy($image);
  42.    }
  43. ?>


jest to akcja gen. Na stronie logowania, daję w miejscu w którym ma się wyświetlić <img src="/token/gen/" alt=""> i tu chyba nie ma problemu. Problem tkwi w samym generowaniu.
LBO
Jak napisałem, token generujesz przy akcji formularza.

A w akcji obrazka go tylko pobierasz z sesji.
ahead
Ok. Przeniosłem generowanie tokena do akcji formularza, wrzuciłem go do sesji, a do akcji obrazka pobieram token i wyświetlam obrazek. Nadal jednak pojawia się błąd - obrazek zawiera błędy i nic się nie wyświetla.
LBO
A weś nie wypluwaj obrazka (zakomentuj) i zobacz, czy sa jakies bledy.
ahead
Dziwne...wyświetla ten sam komunikat błędu.
LBO
nie jestem wrózką wiesz? biggrin.gif
Sabistik
Czemu nie skorzystasz z Zend_Form_Element_Captcha ?
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.