SHARE
TWEET

pseudograpic-captcha-session-test.php

tolikpunkoff Mar 27th, 2017 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.         include('captcha.php'); //подключаем модуль, генерирующий капчу
  3.         session_start(); //открываем сессию
  4.        
  5.         function showform($pgn) //функция, которая рисует форму с каптчей
  6.         {
  7.             echo "<center>";
  8.            
  9.             echo ("<pre><code>".$pgn."</code></pre>");
  10.            
  11.             echo "<form action='".$_SERVER['PHP_SELF']."' method='POST'>
  12.                 <p><b>Введите проверочный код</b></br>
  13.                 <p><input type='text' name='captchacode'></p>
  14.                 <p><input type='submit' value='Проверить'></p>
  15.             </form>";
  16.             echo "</center>";
  17.         }
  18.        
  19.         if ((!isset($_SESSION['mycaptchamd5']))||($_SERVER['REQUEST_METHOD']!='POST')) //каптча не введена или это первый заход на страничку
  20.         {          
  21.             $captchacode=getcaptchacode(6); //генерируем код капчи
  22.             $_SESSION['mycaptchamd5'] = md5($captchacode); //сохраняем в сессии MD5-хэш кода каптчи
  23.             $pgn=getpgnum($captchacode,$allnum," ",1,true,true); //генерируем псевдографическое изображение капчи по коду
  24.             showform($pgn); //показываем пользователю форму ввода капчи
  25.         }
  26.         else //каптча введена
  27.         {
  28.             $usercodemd5=md5(trim($_POST['captchacode'])); //извлекаем код, введенный пользователем в соотв. поле формы и получаем
  29.             //MD5-хэш
  30.            
  31.             $gencodemd5=$_SESSION['mycaptchamd5']; //вытаскиваем ранее сохраненный хэш
  32.            
  33.             if ($usercodemd5==$gencodemd5) //проверка соответствия
  34.             {
  35.                 echo "Код введен верно!"; //OK
  36.                 session_destroy(); //осторожнее так, если прикручиваете каптчу к движку. Можно ненароком сессию авторизации убить.
  37.             }
  38.             else //ашыпко
  39.             {
  40.                 $captchacode=getcaptchacode(6); //генерируем код капчи
  41.                 $_SESSION['mycaptchamd5'] = md5($captchacode); //сохраняем в сессии MD5-хэш кода каптчи
  42.                 $pgn=getpgnum($captchacode,$allnum," ",1,true,true); //генерируем псевдографическое изображение капчи по коду
  43.                 echo "<center><font color='red'>Код введен неверно, попробуйте еще</font></center>";
  44.                 showform($pgn); //показываем пользователю форму ввода капчи
  45.             }
  46.         }
  47. ?>
RAW Paste Data
Top