webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> porady >> php + mysql

Prosty token

autor: Mateusz Bogolubow, ostatnia modyfikacja: 2007-02-23

szukaj: token token generator kodów jednorazowych generator kodów jednorazowych PHP PHP

Token jest generatorem jednorazowych kodów służących do autoryzacji. W naszym przypadku będzie on zabezpieczał nasz formularz przed programami, które automatycznie wypełniają i wysyłają formularz - tzw. boty.

Nasz skrypt będzie oparty na plikach graficznych. Nie jest to najlepsze rozwiązanie, ale nie wymaga biblioteki GD .

Będziemy potrzebowali 10 plików graficznych, który każdy będzie zawierał inna cyfrę. Przyjmijmy, że plik zawierający 'zero' nazywa się '0.gif' itd. Nasz token, który będzie się składał z pięciu cyfr będzie przechowywany w zmiennej sesyjnej o nazwie token. Teraz tworzymy plik formularz.php i wprowadzamy do niego poniżej przedstawione fragmenty kodu...

Inicjujemy sesje i zmiennej $_SESSION['token'] przypisujemy pustą wartość.

<?php
session_start();
$_SESSION['token'] = '';
?>

Następnie losujemy 5 liczb z przedziału od '0' do '9' za pomocą funkcji rand() oraz tworzymy token jako ciag znaków ($_SESSION['token']) i ciąg obrazów($img). Zauważ, że przy znaku równości jest kropka - dzięki niej wartości są dopisywane, a nie podmieniane.

<?php
for($i=0;$i<5;$i++) {
 $liczba = rand(0,9);
 $_SESSION['token'] .= $liczba;
 $img .= '<img src="'.$liczba.'.gif" />';
}
?>

Nasz jednorazowy kod już mamy teraz stworzymy prosty formularz, do którego użytkownik będzie wprowadzał wyświetlany ciąg cyfr.

<html>
 <head>
 <title>token</title>
 </head>

 <body>
  <p>Wprowadź ponizszy kod do formularza</p>

  <?php echo $img; /* Wyświetla token w formie graficznej */ ?>

  <form action="sprawdz.php" method="post">
   <input type="text" name="token">
   <input type="submit" value="ok" />
  </form>
 </body>
</html>

To cały kod jaki ma się znaleźć w pliku formularz.php, teraz stwórz plik sprawdz.php i wprowadź do niego poniższy kod:

<?php
session_start();
if ($_SESSION['token'] ==  $_POST['token']) echo "Wprowadzono <b>poprawny</b> kod";
else echo "Wprowadzono <b>niepoprawny</b> kod";
?>

To tyle... mam nadzieję, że wszystko zostało dostatecznie wyjaśnione.

Mateusz Bogolubow

Osoby czytające tę publikację przeglądały również:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org