SHARE
TWEET

pseudograpic-captcha-cookies-test.php

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