Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: generowanie tokenów
Forum PHP.pl > Forum > PHP
thelaguna
Witam.

Mam generator który wkleja mi tekst do pliku graficznego, wsadzony w formularz do rejestracji.
Zapisuje on token do pliku i w tym momencie mam pytanie...

Szukam optymalnego sposobu wyświetlania tych tokenów, a co za tym idzie, także usuwania ich po wyświetleniu.
Najpierw chciałem dać unlink(); zaraz przed końcem funkcji ale ten sposób odpada.

Byłbym wdzięczny za jakieś wskazówki.

  1. function login_regform()
  2. {
  3. echo '<form action="index.php" method="post">
  4. <table>
  5. <tr><td>user:</td><td><input type="text" name="reguser" /></td></tr>
  6. <tr><td>pass:</td><td><input type="password" name="regpas1" /></td></tr>
  7. <tr><td>pass:</td><td><input type="password" name="regpas2" /></td></tr>
  8. <tr><td>mail:</td><td><input type="text" name="regmail" /></td></tr></table>
  9. Przepisz kod z obrazka poniżej:<br />';
  10.  
  11. $regtoken = imagecreatefromjpeg('login_system/regtoken.jpg');
  12. $font_color = imagecolorallocate($regtoken,254,254,254);
  13.  
  14. $tablica = '1234QWERASDFZXCV';
  15. $string = '';
  16. $i = 5;
  17.  
  18. for($i=0;$i<6;$i++)
  19. {
  20. $string .= $tablica[mt_rand()%(strlen($tablica))];
  21. }
  22. $filename = uniqid().'.png';
  23. imagestring($regtoken , 5 , 20 , 2 , $string , $text_color );
  24. imagepng($regtoken, 'temp/'.$filename);
  25. imagedestroy($regtoken);
  26.  
  27. echo '<img src="temp/'.$filename.'" /><br>
  28. <input type="text" size="8" name="regtoken" /><br />
  29. <input type="hidden" name="regid" value="temp/'.$filename.'" />
  30. <input type="submit" value="Zarejestruj" />
  31. </form>';
  32.  
  33. }


ps. jeszcze przez jakiś czas skrypt można zobaczyć tutaj
http://ldt.cal.pl/cms/news/
Wicepsik
Po co zapisywać token ?
lukaszgolder
A czemu nie możesz tworzyć tokena "na bierząco", bez zapisywania zbędnych plików?
thelaguna
Gdybym wiedział jak to zrobić... laugh.gif
Więc jak wyświetlić mój token bez używania imagepng, imagejpeg, ..., ?

Chyba że macie na myśli utworzenie n obrazków z literkami i cyframi, zapisanie ich i losowe wyświetlanie? Co to to nie, wg. mnie to durny pomysł biggrin.gif
erix
Przeczytaj sobie pierwszy lepszy kurs tworzenia tokenów/captcha.

Masz tam wywołanie obrazka w postaci ścieżki do pliku PHP, pominięcie drugiego parametru tych funkcji. tongue.gif
thelaguna
Nie czytam kursów tylko manuale.
No i widzisz, źle go tym razem zrozumiałem, głupi błąd smile.gif

Ale... problem mam nadal. Grafikę wyświetla mi w postaci ciągu znaków. Zarówno mój kod jak i kod z manuala.
Z nagłówka wyświetlonego ciągu przez imagejpeg(); widzę że.. "CREATOR: gd-jpeg v1.0 (using IJG JPEG v62)" a wg manuala funkcja działa dopiero od gd-jpeg v1.8+ sadsmiley02.gif
erix
Cytat
Nie czytam kursów tylko manuale.

Kłamiesz. Ani tego, ani tego.

imagejpeg:
thelaguna
Jasne, i napisałem wszystko na oko od tak. sleep.gif'
Idźcie już panie moderatorzu stąd zamiast głupoty gadać, boście mi problemu nie rozwiązali mimo swoich usilnych starań.
Wyście panie moderatorzu nie czytali bo nawet cytujecie nie to co trzeba.

Cytat
Note: JPEG support is only available if PHP was compiled against GD-1.8 or later.


Generowanie tokenów mi działa od początku, zapisywanie i późniejsze wyświetlanie tak samo. a BEZPOŚREDNIE WYŚWIETLANIE NIE DZIAŁA tak jak powinno i generuje ciąg znaków zamiast obrazu ponieważ jestem kłamcą?
Może da się ten smutny fakt jakoś obejść bądź naprawić koledzy programiści?
-=Peter=-
Cytat
BEZPOŚREDNIE WYŚWIETLANIE NIE DZIAŁA tak jak powinno i generuje ciąg znaków zamiast obrazu ponieważ jestem kłamcą


Może byś tak jednak przeczytał to co wkleił @erix? A dokładnie linijkę w samym środku screena (podpowiedź: zaczynającą się magicznym słowem "header") smile.gif
thelaguna
Ludzie kochani, przecież pisałem że sprawdzałem też skrypt skopiowany z manuala.

poza tym Header mi wywala błąd, bo headera definiuje mi imagepng(); czy imagejpeg(); czy chociażby wcześniejsze imagecreatefromjpeg(); w zależności co wystąpi pierwsze.
erix
Cytat
Header mi wywala błąd, bo headera definiuje mi imagepng(); czy imagejpeg();

Jesteś taki pewien?
Cytat
To skip the filename argument in order to provide a quality argument just use a NULL value. By sending an image/jpeg content-type using header(), you can create a PHP script that outputs JPEG images directly.

Najpierw sprawdź, potem pisz.

Cytat
Header mi wywala błąd

Jestem 100% pewien, że headers already sent. tongue.gif
thelaguna
Pisz konkretnie jaki masz pomysł to może mi pomożesz, jeśli chodzi Ci o ob_start(); albo php.ini to już próbowałem.
wizard144
Jeśli jest headers already sent to tylko ob_start, ob_end_flush snitch.gif Ta funkcja zawsze działa ;d przynajmniej mi ;d
erix
Cytat
Pisz konkretnie jaki masz pomysł to może mi pomożesz

Mam taki pomysł, żebyś najpierw przeszukał forum pod kątem treści tego błędu. Już było tyle wątków na ten temat, że każdy nowy tego typu temat zamykamy z automatu. tongue.gif

Poza tym, nie podałeś, z jakiego kodu obecnie korzystasz.
thelaguna
Mój aktualny kod to:

  1. <?php
  2. function login_regform()
  3. {
  4. echo '<form action="index.php" method="post">
  5. <table>
  6. <tr><td>user:</td><td><input type="text" name="reguser" /></td></tr>
  7. <tr><td>pass:</td><td><input type="password" name="regpas1" /></td></tr>
  8. <tr><td>pass:</td><td><input type="password" name="regpas2" /></td></tr>
  9. <tr><td>mail:</td><td><input type="text" name="regmail" /></td></tr></table>
  10. Przepisz kod z obrazka ponizej:<br />';
  11.  
  12. $regtoken = imagecreatefromjpeg('login_system/regtoken.jpg');
  13. $font_color = imagecolorallocate($regtoken,255,255,255);
  14.  
  15. $tablica = '1234QWERASDFZXCV';
  16. $string = '';
  17. $i = 5;
  18.  
  19. for($i=0;$i<6;$i++)
  20. {
  21. $string .= $tablica[mt_rand()%(strlen($tablica))];
  22. }
  23. $filename = uniqid().'.jpg';
  24. imagestring($regtoken , 5 , 20 , 2 , $string , $font_color );
  25. header('Content-type: image/jpeg');
  26. imagejpeg($regtoken/*, 'temp/'.$filename*/);
  27. imagedestroy($regtoken);
  28.  
  29. // echo '<img src="temp/'.$filename.'" /><br />
  30. echo '
  31. <input type="text" size="8" name="regtoken" /><br />
  32. <input type="submit" value="Zarejestruj" />
  33. </form>';
  34. }
  35. login_regform();
  36. ?>


Mimo że edytowałem go wiele razy, niewiele się różni od podanego przeze mnie wcześniej.
erix
Jak chcesz wysyłać obrazek, jeśli występuje treść HTML przed nim?

Przed header/imagejpeg nie może być wysyłana JAKAKOLWIEK treść prócz obrazka.
fander
Proszę pana myślenie nie boli a przechodząc do sedna, to jeśli chcesz na stronie wyświetlić jakiś obrazek to w kodie html wstawiasz znacznik
Kod
<img src="adres_obrazka" />

czyż nie tak. Jeżeli przeglądarka napotka na tego typu znacznik to wysyła żadanie get pod wskazany adres bez znaczenia czy tam coś jest czy nie, serwer apache zwraca wynik pluje danymi obrazka albo czegokolwiek co zostało wywołane w tym znaczniku jeśli wpiszesz tam ścieżkę do obrazka to wyświetli obrazek jeśli do index.php to wyświetli to co zwróci index.php w takim razie aby ten token zadziałał musisz zrobić pliczek token.php i wsadzić tam ten kod który generuje ci tokena smile.gif

Do forumowiczów, ja nie rozumem dlaczego nie możecie komuś wytłumaczyć co jak działa a piszecie jakieś idiotyzmy po 1 zdaniu...
thelaguna
Wreszcie trafił się ktoś kto potrafi człowiekowi pomóc... Za co bardzo dziękuję
Doszedłem do podobnego wniosku gdy zamykałem skrypt w komentarzu linijka po linijce i wyrzucenie echo(); dało efekt.

erix, mogłeś to powiedzieć 2 dni temu.

Można zamknąć
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.