PageRenderTime 48ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/kcaptcha/captcha.php

https://github.com/crocus/virpl
PHP | 91 lines | 71 code | 4 blank | 16 comment | 10 complexity | 8c24feeedecfa5039c76ab3e521589c8 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. <?php
  2. session_start ();
  3. $_SESSION['code'] = substr(md5(uniqid(mt_rand())),0,5);
  4. //function CreateIm(){
  5. //$a= image;
  6. switch ($a) {
  7. case "image":
  8. $im = @imagecreate (180, 60) or die ("Cannot initialize new GD image stream!");
  9. $bg = imagecolorallocate ($im, 232, 238, 247);
  10. $char = $_SESSION['code'];
  11. //$char = "23456789abcdeghkmnpqsuvxyz";
  12. //создаём шум на фоне
  13. for ($i=0; $i<=128; $i++) {
  14. $color = imagecolorallocate ($im, rand(0,255), rand(0,255), rand(0,255)); //задаём цвет
  15. imagesetpixel($im, rand(2,180), rand(2,60), $color); //рисуем пиксель
  16. }
  17. //выводим символы кода
  18. for ($k = 0; $k < strlen($char); $k++) {
  19. $color = imagecolorallocate ($im, rand(0,255), rand(0,128), rand(0,255)); //задаём цвет
  20. $x = 5 + $k * 20;
  21. $y = rand(1, 30);
  22. //$r_char = rand(1,$k);
  23. // imagechar ($im, 5, $x, $y, $char[$rchar], $color);
  24. imagechar ($im, 5, $x, $y, $char[$k], $color);
  25. }
  26. /*/упрощённый вариант
  27. $color = imagecolorallocate($img, 0, 0, 0);
  28. imagestring($im, 3, 5, 3, $char, $color);*/
  29. //антикеширование
  30. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  31. header("Cache-Control: no-store, no-cache, must-revalidate");
  32. header("Cache-Control: post-check=0, pre-check=0", false);
  33. header("Pragma: no-cache");
  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. //function CreateIm();
  62. print '<form action="captcha.php" method="get"/>'.
  63. '<input type="hidden" name="a" value="submit">'.
  64. '<label for="code">Код подтверждения:</label>'.
  65. '<br/>'.
  66. '<input type="text" id="code" name="code" size="4" maxlength="4">'.
  67. '<br/>'.
  68. '<img align="absmiddle" src=\'captcha.php?a=image\'>'.
  69. '<br/>'.
  70. '<input type="submit" value="Go">';
  71. break;
  72. }
  73. <?php
  74. if (!isset($_POST['screen'])) {
  75. ?>
  76. <form action="" method="post">
  77. <script language="javascript">
  78. var mnf = window.document.getElementById("mainFrame");
  79. document.write ('<input name="screen" type="hidden" value="'+ document.body.clientWidth +'_'+document.body.clientHeight + '"></form>');
  80. //document.write ('<input name="screen" type="hidden" value="'+ screen.width +'_'+screen.height + '"></form>');
  81. document.forms[0].submit();
  82. </script>
  83. <?php
  84. }
  85. if (isset($_POST['screen'])) echo $_POST['screen'];
  86. ?>
  87. ?>