Помогите дописать капчу (Советы, Помощь, Идеи) - Visavi.net https://visavi.net/ RSS - Visavi.net https://visavi.net/assets/img/images/logo_small.png RSS - Visavi.net https://visavi.net/ [email protected] (admin) [email protected] (admin) Mon, 13 Jan 2025 14:51:13 +0300 собственно, сам класс<br> <pre class="prettyprint"> &lt;?php # ####### ####### # CLASS &quot;CAPTCHA&quot; # ####### ####### # class CAPTCHA { const CODE = &quot;0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm&quot;; private $protect = &quot;&quot;; private $font = &quot;&quot;; private $image = &quot;&quot;; private $width = 0; private $height = 0; # ####### ####### # CONSTRUCT # ####### ####### # # &#64;param integer $lenght # # &#64;param integer $width # # &#64;param integer $height # public function __construct($lenght = 5, $width = 120, $height = 60) { $this -&gt; width = $width; $this -&gt; height = $height; $this -&gt; protect = $this -&gt; generate_code($lenght); $this -&gt; font = $this -&gt; generate_font(&quot;&quot;); } # ####### ####### # GENERATE CODE # ####### ####### # # &#64;param integer $lenght # private function generate_code($lenght = 5) { $protect = $this -&gt; protect; $code = str_split(self&#58;&#58;CODE); for ($i = 0; $i &lt; $lenght; $i++) { $protect .= $code&#91;array_rand($code)]; } return $protect; } # ####### ####### # GENERATE FONT # ####### ####### # # &#64;param string $fonts_dir # private function generate_font($fonts_dir = &quot;fonts/&quot;) { $array_fonts = array(); $glob_fonts = glob($fonts_dir.&quot;*.ttf&quot;); foreach ($glob_fonts as $basename) { $array_fonts&#91;] = $fonts_dir.basename($basename); } return $array_fonts&#91;mt_rand(0, count($array_fonts) - 1)]; } # ####### ####### # CREATE IMAGE # ####### ####### # public function create_image() { $image = imagecreatetruecolor($this -&gt; width, $this -&gt; height); $bodycolor = imagecolorallocate($image, mt_rand(128, 255), mt_rand(128, 255), mt_rand(128, 255)); $textcolor = imagecolorallocate($image, 0, 0, 0); $textcoloralpha = imagecolorallocatealpha($image, 0, 0, 0, 100); $box = imagettfbbox(20, 0, $this -&gt; font, $this -&gt; protect); $x = ($this -&gt; width - $box&#91;4]) / 2; $y = ($this -&gt; height - $box&#91;5]) / 2; imagefill($image, 0, 0, $bodycolor); imagettftext($image, 20, 0, $x, $y, $textcoloralpha, $this -&gt; font, $this -&gt; protect); header(&quot;Expires&#58; Mon, 26 Jul 1997 05&#58;00&#58;00 GMT&quot;); header(&quot;Cache-Control&#58; no-store, no-cache, must-revalidate&quot;); header(&quot;Content-type&#58; image/png&quot;); imagepng($image); imagedestroy($image); } } $c = new CAPTCHA(); $c -&gt; create_image(); ?&gt; </pre> https://visavi.net/topics/19730/333305 Помогите дописать капчу (Советы, Помощь, Идеи) Виталий Mon, 14 Mar 2011 18:49:08 +0300 Сообщения https://visavi.net/topics/19730/333305 Не знаю, что добавить туда, но все, что б я не делал выглядит отвратительно - то не распозноваемо пользователем, то просто не красиво! <img src="https://visavi.net/uploads/stickers/sad.gif" alt="sad"> некоторые из вас занимались постраением капчей, и может кто поможет из своих проделок посоветует пару методов как хоть маленько защититься от спама и просто преукрасить слегка капчу! <br> <br> ................ https://visavi.net/topics/19730/333302 Помогите дописать капчу (Советы, Помощь, Идеи) Виталий Mon, 14 Mar 2011 18:48:22 +0300 Сообщения https://visavi.net/topics/19730/333302