|
[PHP] установка капчи
#37717709
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
|
|
Здраствйуте, нашол в сети интересную капчу, помогите пожалуйста пристоить её к сайту. Должно после правильного ввода открывать доступ к станице, тоисть нужно условие сделать.
капча находиться в папке:
libcaptcha/captcha_gen.php?gen1'
вот сам код:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147.
<?php
if(!session_id())
@session_start();
if(isset($_GET['gen']) && isset($_SESSION['captcha_ok']) && $_SESSION['captcha_ok']==1)
die('<html><head><meta http-equiv="Content-Type" content="text/html;charset=windows-1251"></head><body>The text entered correctly</body></html>');
if(!isset($_SESSION['code']) || $_SESSION['code']=='')
{
$_SESSION['code']=$code=substr(str_replace(Array('9','0'),Array('1','2'),mt_rand()),0,5);
$_SESSION['entered']='';
$_SESSION['coords']=Array();
$_SESSION['captcha_ok']=0;
header('Location: ?gen1');
die();
}
else
{
$code=$_SESSION['code'];
}
if(defined('GENERATE_CAPTCHA'))
{
$cp=CAPTCHA_PATH;
$coords=Array(Array(2,22),Array(2,54),Array(2,87),Array(34,22),Array(34,54),Array(34,87),Array(67,22),Array(67,54));
shuffle($coords);
$_SESSION['coords']=$coords;
$img=imagecreatefrompng($cp.'back.png');
for($i=1;$i<=8;$i++)
{
$tmp=imagecreatefrompng($cp.$i.'.png');
imagecopy($img,$tmp,$coords[$i-1][0],$coords[$i-1][1],0,0,30,30);
imagedestroy($tmp);
}
$tmp=imagecreatefrompng($cp.'arrow.png');
imagecopy($img,$tmp,67,87,0,0,30,30);
imagedestroy($tmp);
imagettftext($img,9,0,2,14,imagecolorallocate($img,0,0,0),'arial.ttf',to_unicode('Введите '.$_SESSION['code']));
imagettftext($img,9,0,2,133,imagecolorallocate($img,0,120,0),'arial.ttf',to_unicode('Введено: '.$_SESSION['entered']));
header('Content-type: image/png');
imagepng($img);
die();
}
function captcha_gen()
{
if(isset($_POST['cap_x']) && isset($_POST['cap_y']) && !is_array($_POST['cap_x']) && !is_array($_POST['cap_y']) && preg_match('/^\d+$/',$_POST['cap_x']) && preg_match('/^\d+$/',$_POST['cap_y']))
{
$num='';
for($i=1;$i<=8;$i++)
{
$a=$_POST['cap_x']-$_SESSION['coords'][$i-1][0];
$b=$_POST['cap_y']-$_SESSION['coords'][$i-1][1];
if($a<33 && $a>0 && $b<33 && $b>0)
{
$num=$i;
break;
}
}
if($num>0 && strlen($_SESSION['entered'])<5)
{
$_SESSION['entered'].=$num;
header('Location: ?gen1');
die();
}
$a=$_POST['cap_x']-67;
$b=$_POST['cap_y']-87;
if($a<33 && $a>0 && $b<33 && $b>0 && strlen($_SESSION['entered'])>0)
{
$_SESSION['entered']=substr($_SESSION['entered'],0,-1);
header('Location: ?gen1');
die();
}
}
if($_SESSION['entered']===$_SESSION['code'])
{
$_SESSION['captcha_ok']=1;
die('<html><head><meta http-equiv="Content-Type" content="text/html;charset=windows-1251"></head><body>The text entered correctly</body></html>');
}
$r=mt_rand();
print <<<HERE
<html><body style='margin:0px 0px 0px 0px;'>
<form action='?gen1' method='post'>
<input type='image' name='cap' src='?gen&$r'>
</form>
</body></html>
HERE;
}
function to_unicode($text,$from='w')
{
$text=convert_cyr_string($text,$from,'i');
$uni='';
for($i=0, $len=strlen($text); $i<$len; $i++)
{
$char=$text{$i};
$code=ord($char);
$uni.=($code>175) ? "&#".(1040+($code-176)).";" : $char;
}
return $uni;
}
function clean_captcha()
{
global $_SESSION;
$_SESSION['captcha_ok']=NULL;
$_SESSION['code']=NULL;
$_SESSION['entered']=NULL;
$_SESSION['coords']=NULL;
unset($_SESSION['captcha_ok']);
unset($_SESSION['code']);
unset($_SESSION['entered']);
unset($_SESSION['coords']);
}
function check_captcha()
{
global $_SESSION;
return isset($_SESSION['captcha_ok']) && $_SESSION['captcha_ok']===1;
}
?>
|
|
|