Captcha

  1. <?
  2. session_start ();
  3. $a = $_GET['a'];
  4. switch ($a) {
  5.     case 'image':
  6.         $im = @imagecreate (80, 20) or die ("Cannot initialize new GD image stream!");
  7.         $bg = imagecolorallocate ($im, 232, 238, 247);
  8.         $char = $_SESSION['code'];
  9.  
  10.         //создаём шум на фоне
  11.         for ($i=0; $i<=128; $i++) {
  12.             $color = imagecolorallocate ($im, rand(0,255), rand(0,255), rand(0,255)); //задаём цвет
  13.             imagesetpixel($im, rand(2,80), rand(2,20), $color); //рисуем пиксель
  14.         }
  15.  
  16.         //выводим символы кода
  17.         for ($i = 0; $i < strlen($char); $i++) {
  18.             $color = imagecolorallocate ($im, rand(0,255), rand(0,128), rand(0,255)); //задаём цвет
  19.             $x = 5 + $i * 20;
  20.             $y = rand(1, 6);
  21.             imagechar ($im, 5, $x, $y, $char[$i], $color);
  22.         }
  23.  
  24.         /*/упрощённый вариант
  25.         $color = imagecolorallocate($img, 0, 0, 0);
  26.         imagestring($im, 3, 5, 3, $char, $color);*/
  27.  
  28.         //антикеширование
  29.         header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  30.         header("Cache-Control: no-store, no-cache, must-revalidate");
  31.         header("Cache-Control: post-check=0, pre-check=0", false);
  32.         header("Pragma: no-cache");
  33.  
  34.         //создание рисунка в зависимости от доступного формата
  35.         if (function_exists("imagepng")) {
  36.            header("Content-type: image/png");
  37.            imagepng($im);
  38.         } elseif (function_exists("imagegif")) {
  39.            header("Content-type: image/gif");
  40.            imagegif($im);
  41.         } elseif (function_exists("imagejpeg")) {
  42.            header("Content-type: image/jpeg");
  43.            imagejpeg($im);
  44.         } else {
  45.            die("No image support in this PHP server!");
  46.         }
  47.         imagedestroy ($im);
  48.     break;
  49.     case 'submit':
  50.         //проверка кода
  51.         if (empty($_GET['code']) or empty($_SESSION['code'])) {
  52.             echo 'Вы не указали код подтверждения';
  53.         } elseif ($_GET['code'] != $_SESSION['code']) {
  54.             echo 'Код подтверждения не совпадает';
  55.         } else {
  56.             echo 'Всё Ok!';
  57.         }
  58.     break;
  59.     default:
  60.         $_SESSION['code'] = substr(md5(uniqid("")),0,4);
  61.         echo '<form action="captcha.php" method="get">'.
  62.             '<input type="hidden" name="a" value="submit">'.
  63.             '<label for="code">Код подтверждения:</label>'.
  64.             '<input type="text" id="code" name="code" size="4" maxlength="4">'.
  65.             '<img align="absmiddle" src="captcha.php?a=image">'.
  66.             '<input type="submit" value="Go">'.
  67.             '</form>';
  68.     break;
  69. }
  70. ?>
Нарыл скрипт каптчи.
Можно легко внедрить в свой скрипт.

Реклама

Мы в соцсетях

tw tg yt gt