Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Problem z tokenem
Bojakki
post
Post #1





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


Znalazlem w necie takiego tokena:

  1. <?php
  2. // Nadaje nazwe sesji i ja startuje.
  3. session_name("sess");
  4.  
  5. // dodatkowe naglowki, by nie buforowac wyniku
  6. header ("Expires: Mon, 22 Sep 1997 09:00:00 GMT");
  7. header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  8. header ("Cache-Control: no-store, no-cache, must-revalidate");
  9. header ("Cache-Control: post-check=0, pre-check=0", false);
  10. header ("Pragma: no-cache");
  11.  
  12. // tworzę obrazek o okrelonych wymiarach
  13. $grafix = imagecreate(88, 31);
  14.  
  15. // Losowanie kolorow dla tla i napisu
  16. mt_srand(time()*123456789);
  17.  
  18. //kolor tekstu
  19. $white = imagecolorallocate($grafix, 255, 255, 255);
  20. $black = imagecolorallocate($grafix, 0, 0, 0);
  21. // maluję tło
  22. // otwieram obrazek typu PNG
  23. $grafixBackground = @imagecreatefromjpeg("token.jpg");
  24. // kopiuje cala zawartosc na $grafix
  25. imagecopy($grafix, $grafixBackground, 0, 0, 0, 0, 88, 31);
  26. // Losowanie slowa
  27.  
  28. $sAllowedChars = 'abcdefghijklmnopqrstuvwxyz';
  29. $sAllowedChars .= '0123456789';
  30.  
  31. $sAllowedChars = str_shuffle( $sAllowedChars );
  32. $sPassword = substr( $sAllowedChars, 0, 6 );
  33. //definiuje zbior czcionek i wybieram losowo jedna
  34. $font  = "verdana.ttf";
  35. imagettftext($grafix, 12, 0, 15, 20, $black, $font, $sPassword);
  36.  
  37. //zanieczyszam obrazek niewielkimi liniami
  38. for($i=1;$i<13;$i++){
  39. $randPixSpaceLeft = mt_rand(10, 88);
  40. $randPixSpaceTop = mt_rand(0, 31);
  41. imageline($grafix, $randPixSpaceLeft, $randPixSpaceTop, $randPixSpaceLeft+10, $randPixSpaceTop+7, $white);
  42. }
  43.  
  44. // przekazuje przez sesje wylosowane slowo
  45. $_SESSION["choosenWord"] = $sPassword;
  46.  
  47. // wysyłam odpowiedni nagłówek a następnie obrazek do przeglšdarki
  48. header("Content-type: image/jpeg");
  49.  
  50. imagejpeg($grafix);
  51.  
  52. // sprzštam po sobie
  53. imagedestroy($grafix);
  54. ?>


Wszystko dziala ok (obrazek sie generuje i wyswietla) gdy kod jest sam an stronie. Gdy wrzucilem kod w formularz to zamiast strony wyswietla sie tylko i wylacznie adres strony na ktorej jestem. Wie ktos gdzie lezy problem?

Z gory dziekuje za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
l0ud
post
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Ty go umieściłeś pomiędzy swój kod php? Tak się nie da, musisz zapisać go najlepiej w oddzielnym pliku i dołączyć go do formularza poprzez zastosowanie znacznika img, np.

<img src='token.php' alt=''>

gdzie token.php to ten skrypt
Go to the top of the page
+Quote Post
qqrq
post
Post #3





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


No ale jak "wrzuciłeś kod do formularza"? Musisz ten plik, który ci generuje token potraktować jak obrazek, wrzucić adres do niego do taga IMG. Potem (po zatwierdzeniu formularza) porównujesz zmienną sesji, która trzyma ci token z tym, co użytkownik wpisał w pole.
Go to the top of the page
+Quote Post
Bojakki
post
Post #4





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


rzeczywiscie trzeba zrobic tak jak pisales. Obrazek juz sie pojawia, ale formularz nie bardzo dziala.
Wyglada on tak. Formularz jest przyjmowany gdy nie wpisze nic w pole token czyli tak jakby $_SESSION['choosenWord'] nie bralo zmiennej z obrazka. Nie wiem czy ten formularz jest w ogole dobrze zbudowany:/
  1. <?php
  2. if(isset($_REQUEST['submit']))
  3. {
  4. $s = 0;
  5. $username = 'gość-'.mysql_real_escape_string(strip_tags($_POST[guestname]));
  6. $comment = mysql_real_escape_string(strip_tags($_POST[comment]));
  7. $stringl = strlen($comment);
  8. $stringl2 = strlen($username);
  9. if ($_SESSION['choosenWord'] != $_POST['token'])
  10. {
  11. $z.="<li>Źle przepisałeś znaki z obrazka</li>";
  12. $s++;
  13. }
  14. if ($stringl < 6)
  15. {
  16. $z.="<li>Zbyt krótka wiadomość</li>";
  17. $s++;
  18. }
  19. if ($stringl2 == 0)
  20. {
  21. $z.="<li>Nie uzupełniłeś pola Autor</li>";
  22. $s++;
  23. }
  24.  
  25. if ($s==0)
  26. {
  27. $success=1;
  28. }
  29. else
  30. {
  31. $success=-1;
  32. }
  33.  
  34. $myquery = mysql_query("INSERT INTO a_post (parentid, username, userid, dateline, pagetext, allowsmilie, ipaddress, ico
    nid, visible)
  35. VALUES ('{$parentid}','{$username}','{$userid}','{$lastpost}','{$comment}', 1, '{$ip}', '{$iconid}', 1)") or die(mysql_error());
  36. $lastpostid = mysql_insert_id($mysql);
  37. }
  38.  
  39. if($success==1)
  40. {
  41. echo '<li>Wiadomość została dodana</li>';
  42. echo '<center><a href="news.php?wsk='.$wsk.'">Zobacz</a></center>';
  43. }
  44. elseif($success==-1)
  45. {
  46. echo $z;
  47. echo '<center><a href="news.php?wsk='.$wsk.'">Spróbuj jeszcze raz</a></center>';
  48. }
  49. else
  50. {
  51. echo '
  52. <form method=POST action="'.$typen.'.php?wsk='.$wsk.'">
  53. Autor: <input type="text" size="33" name="guestname"/><br />
  54. Obrazek: <input type="text" size="23" name="token"/><br />
  55. <img src='token.php' alt='token'>
  56. Treść:<br /><textarea name="comment" rows="6" cols="70" type="text" value size="1000" maxlength="1000"></textarea><br />
  57. <input type="submit" name="submit" value="ZatwierdĽ" />
  58. </form>';
  59. }
  60. ?>
Go to the top of the page
+Quote Post
l0ud
post
Post #5





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


A zainicjowałeś sesję i nazwałeś ją tak samo jak jest to w skrypcie tokena?
Go to the top of the page
+Quote Post
Bojakki
post
Post #6





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


No wlasnie o sesji zapomnialem. Teraz jest juz picus glancus;)
Go to the top of the page
+Quote Post
l0ud
post
Post #7





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Dodaj jeszcze tylko sprawdzanie, czy kod tokena nie jest pusty - inaczej bardzo łatwo obejść taki token (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 24.08.2025 - 16:57