Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //переменные скрипта
- $pgstring="#$%@!?0"; //символы, из которых будут составлены цифры
- $spstring="- "; //пробельные символы
- $pgchar="";
- $spchar="";
- //массивы, с символьными строчками, отображающими цифры
- //0
- $num0=array("*$$$$*","$$**$$","$$**$$","$$**$$","*$$$$*");
- //1
- $num1=array("**$$**","*$$$**","$*$$**","**$$**","$$$$$$");
- //2
- $num2=array("*$$$$*","$$**$$","***$$*","**$$**","$$$$$$");
- //3
- $num3=array("*$$$$*","$$**$$","***$$*","$$**$$","*$$$$*");
- //4
- $num4=array("$$**$$","$$**$$","$$$$$$","****$$","****$$");
- //5
- $num5=array("$$$$$$","$$****","$$$$$*","****$$","$$$$$*");
- //6
- $num6=array("*$$$$$","$$****","$$$$$*","$$**$$","*$$$$*");
- //7
- $num7=array("$$$$$$","***$$*","**$$**","*$$***","$$****");
- //8
- $num8=array("*$$$$*","$$**$$","*$$$$*","$$**$$","*$$$$*");
- //9
- $num9=array("*$$$$$","$$**$$","*$$$$$","****$$","*$$$$*");
- //все цифры
- $allnum=array($num0,$num1,$num2,$num3,$num4,$num5,$num6,$num7,$num8,$num9);
- //функции
- function gennum($num)
- {
- $ans="";
- for ($i=0; $i<count($num); $i++)
- {
- $ans=$ans.$num[$i]."<br>";
- }
- return $ans;
- }
- //получает случайный символ из строки
- function randomchar($srcstr)
- {
- $i=rand(0,strlen($srcstr)-1);
- return $srcstr{$i};
- }
- //формирует число псевдографикой
- //параметры: число в виде строки, массив с цифрами
- //символ пробела между цифрами, количество пробелов между цифрами
- //начальные пробелы, конечные пробелы
- function getpgnum($numstr,$numarr,$spchr,$spctr,$startsp,$endsp)
- {
- $ans="";
- $spstr="";
- $num=0;
- $curline=""; //текущая строка формируемого изображения
- if (!is_numeric($numstr)) //если в строку запихали не цифру
- {
- echo ("ERROR: NOT NUMBER ".$numstr); //выводим ошибку и завершаем скрипт
- die();
- }
- //формируем строку пробельных символов
- for ($i=0;$i<$spctr;$i++)
- {
- $spstr=$spstr.$spchr;
- }
- //проходим по всем строчкам изображения цифры
- //цифры все одинаковой высоты - 5 строк
- for ($j=0;$j<5;$j++)
- {
- //проходим по строке с числом
- for ($i=0;$i<strlen($numstr);$i++)
- {
- //$curline=""; //обнуляем текущую строчку изображения всей капчи
- $num=$numstr{$i}; //вытаскиваем отдельную цифру
- $imgnum=$numarr[$num]; //вытаскиваем изображение конкретной цифры
- //$imgnum[$j] - конкретная строчка изображения
- //формируем текущую линию для изображения всех цифр каптчи
- $curline=$curline.$imgnum[$j].$spstr;
- }
- //линия сформирована
- if ($startsp) //если нужны стартовые пробелы - добавляем
- {
- $curline=$spstr.$curline;
- }
- if (!$endsp) //если НЕ нужны конечные пробелы - удаляем
- {
- $curline=substr($curline,0,strlen($curline)-$spctr);
- }
- $ans=$ans.$curline."\r\n"; //в конце строчки добавляем перенос строки
- $curline=""; //очищаем переменную для хранения текущей строки каптчи
- }
- return $ans;
- }
- function getcaptchacode($codelen)
- {
- $ans="";
- for ($i=0;$i<$codelen;$i++)
- {
- $r=rand(0,9);
- $ans=$ans.$r;
- }
- return $ans;
- }
- //тело скрпита
- $pgchar=randomchar($pgstring);
- $spchar=randomchar($spstring);
- //заменяем символы в псевдографике на случайные
- for ($i=0; $i<count($allnum); $i++) //цикл по массиву со всеми цифрами
- {
- for ($j=0; $j<count($allnum[$i]); $j++) //цикл по всем строчкам с псевдографикой
- {
- $allnum[$i][$j]=str_replace("$",$pgchar,$allnum[$i][$j]);
- $allnum[$i][$j]=str_replace("*",$spchar,$allnum[$i][$j]);
- }
- }
- /*
- Пример получения кода и строки псевдографических цифр
- $code=getcaptchacode(6);
- $pgn=getpgnum($code,$allnum," ",3);
- echo ("<pre><code>".$pgn."</code></pre>");
- */
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement