Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> generowanie tokenów
thelaguna
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

Ostrzeżenie: (0%)
-----


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/

Ten post edytował thelaguna 21.09.2009, 21:27:09
Go to the top of the page
+Quote Post
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Po co zapisywać token ?
Go to the top of the page
+Quote Post
lukaszgolder
post
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 17
Dołączył: 2.04.2008
Skąd: z Zabrza

Ostrzeżenie: (0%)
-----


A czemu nie możesz tworzyć tokena "na bierząco", bez zapisywania zbędnych plików?
Go to the top of the page
+Quote Post
thelaguna
post
Post #4





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

Ostrzeżenie: (0%)
-----


Gdybym wiedział jak to zrobić... (IMG:style_emoticons/default/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ł (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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. (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
thelaguna
post
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

Ostrzeżenie: (0%)
-----


Nie czytam kursów tylko manuale.
No i widzisz, źle go tym razem zrozumiałem, głupi błąd (IMG:style_emoticons/default/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+ (IMG:style_emoticons/default/sadsmiley02.gif)
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Nie czytam kursów tylko manuale.

Kłamiesz. Ani tego, ani tego.

imagejpeg:
(IMG:http://images40.fotosik.pl/199/e6c2491a69ad7d8e.png)
Go to the top of the page
+Quote Post
thelaguna
post
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

Ostrzeżenie: (0%)
-----


Jasne, i napisałem wszystko na oko od tak. (IMG:style_emoticons/default/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?

Ten post edytował thelaguna 22.09.2009, 20:51:30
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #9





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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") (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
thelaguna
post
Post #10





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował thelaguna 22.09.2009, 21:28:23
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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. (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
thelaguna
post
Post #12





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
wizard144
post
Post #13





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 4.05.2009

Ostrzeżenie: (0%)
-----


Jeśli jest headers already sent to tylko ob_start, ob_end_flush (IMG:style_emoticons/default/snitch.gif) Ta funkcja zawsze działa ;d przynajmniej mi ;d
Go to the top of the page
+Quote Post
erix
post
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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. (IMG:style_emoticons/default/tongue.gif)

Poza tym, nie podałeś, z jakiego kodu obecnie korzystasz.
Go to the top of the page
+Quote Post
thelaguna
post
Post #15





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
erix
post
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
fander
post
Post #17





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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...
Go to the top of the page
+Quote Post
thelaguna
post
Post #18





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

Ostrzeżenie: (0%)
-----


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ąć

Ten post edytował thelaguna 23.09.2009, 12:27:56
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 15:15