Всем привет! У меня есть готовый код капчи, но я никак не могу его вывести при ргистрации, просьба помочь! Код: <?php @error_reporting(E_ALL ^ E_NOTICE); @ini_set('display_errors', true); @ini_set('html_errors', false); @ini_set('error_reporting', E_ALL ^ E_NOTICE); function clean_url ($url) { if ($url == '') return; $url = str_replace("http://", "", $url); if (strtolower(substr($url, 0, 4)) == 'www.') $url = substr($url, 4); $url = explode('/', $url); $url = reset($url); $url = explode(':', $url); $url = reset($url); return $url; } if (clean_url($_SERVER['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) return; session_start(); $font=imagecreatefrompng("fonts/font.png"); imagealphablending($font, true); $fontfile_width=imagesx($font); $fontfile_height=imagesy($font)-1; $font_metrics=array(); $symbol=0; $reading_symbol=false; $alphabet = "0123456789"; $alphabet_length = strlen($alphabet); for($i=0;$i<$fontfile_width && $symbol<$alphabet_length;$i++){ $transparent = (imagecolorat($font, $i, 0) >> 24) == 127; if(!$reading_symbol && !$transparent){ $font_metrics[$alphabet{$symbol}]=array('start'=>$i); $reading_symbol=true; continue; } if($reading_symbol && $transparent){ $font_metrics[$alphabet{$symbol}]['end']=$i; $reading_symbol=false; $symbol++; continue; } } $image = imagecreatetruecolor(165,60); $width = ImageSX($image); $height = ImageSY($image); imagealphablending($image, true); $background_color = array(247,247,247); $foreground_color = array(70,70,70); $white=imagecolorallocate($image, 255, 255, 255); $black=imagecolorallocate($image, 128, 128, 0); imagefilledrectangle($image, 0, 0, ImageSX($image)-1, ImageSY($image)-1, $white); $string = ''; $x = 5; $y = 5; for ($i=0;$i<6;$i++) { $char = rand(0,9); $string .= $char; if ($x > 15) $x = $x - 2; imagecopy($image,$font,$x,$y,$font_metrics[$char]['start'],1,$font_metrics[$char]['end']-$font_metrics[$char]['start'],42); $x += $font_metrics[$char]['end']-$font_metrics[$char]['start']; } for ($i=0;$i<10;$i++) { ImageSmoothAlphaLine($image,Rand(5,$width*0.5),Rand(5,$height-5),rand($width*0.5,$width-5),rand(5,$height-5),255,255,255); } for ($i=0;$i<2;$i++) { ImageSmoothAlphaLine($image,rand(5,10),Rand(5,$height-5),rand($width-10,$width-5),rand(5,$height-5),0,0,0); } $center=$x/2; $img2=imagecreatetruecolor(ImageSX($image), ImageSY($image)); $rand1=mt_rand(750000,1200000)/10000000; $rand2=mt_rand(750000,1200000)/10000000; $rand3=mt_rand(750000,1200000)/10000000; $rand4=mt_rand(750000,1200000)/10000000; $rand5=mt_rand(0,3141592)/500000; $rand6=mt_rand(0,3141592)/500000; $rand7=mt_rand(0,3141592)/500000; $rand8=mt_rand(0,3141592)/500000; $rand9=mt_rand(330,420)/110; $rand10=mt_rand(330,450)/110; for($x=0;$x<ImageSX($image);$x++){ for($y=0;$y<ImageSY($image);$y++){ $sx=$x+(sin($x*$rand1+$rand5)+sin($y*$rand3+$rand6))*$rand9-$width/2+$center+1; $sy=$y+(sin($x*$rand2+$rand7)+sin($y*$rand4+$rand8))*$rand10; if($sx<0 || $sy<0 || $sx>=$width-1 || $sy>=$height-1){ $color=255; $color_x=255; $color_y=255; $color_xy=255; }else{ $color=imagecolorat($image, $sx, $sy) & 0xFF; $color_x=imagecolorat($image, $sx+1, $sy) & 0xFF; $color_y=imagecolorat($image, $sx, $sy+1) & 0xFF; $color_xy=imagecolorat($image, $sx+1, $sy+1) & 0xFF; } if($color==0 && $color_x==0 && $color_y==0 && $color_xy==0){ $newred=$foreground_color[0]; $newgreen=$foreground_color[1]; $newblue=$foreground_color[2]; }else if($color==255 && $color_x==255 && $color_y==255 && $color_xy==255){ $newred=$background_color[0]; $newgreen=$background_color[1]; $newblue=$background_color[2]; }else{ $frsx=$sx-floor($sx); $frsy=$sy-floor($sy); $frsx1=1-$frsx; $frsy1=1-$frsy; $newcolor=( $color*$frsx1*$frsy1+ $color_x*$frsx*$frsy1+ $color_y*$frsx1*$frsy+ $color_xy*$frsx*$frsy); if($newcolor>255) $newcolor=255; $newcolor=$newcolor/255; $newcolor0=1-$newcolor; $newred=$newcolor0*$foreground_color[0]+$newcolor*$background_color[0]; $newgreen=$newcolor0*$foreground_color[1]+$newcolor*$background_color[1]; $newblue=$newcolor0*$foreground_color[2]+$newcolor*$background_color[2]; } imagesetpixel($img2, $x, $y, imagecolorallocate($img2, $newred, $newgreen, $newblue)); } } $_SESSION['captcha'] = $string; header("content-type: image/png"); imagepng($img2); imagedestroy($img2); function ImageSmoothAlphaLine ($image, $x1, $y1, $x2, $y2, $r, $g, $b, $alpha=0) { $icr = $r; $icg = $g; $icb = $b; $dcol = imagecolorallocatealpha($image, $icr, $icg, $icb, $alpha); if ($y1 == $y2 || $x1 == $x2) imageline($image, $x1, $y2, $x1, $y2, $dcol); else { $m = ($y2 - $y1) / ($x2 - $x1); $b = $y1 - $m * $x1; if (abs ($m) <2) { $x = min($x1, $x2); $endx = max($x1, $x2) + 1; while ($x < $endx) { $y = $m * $x + $b; $ya = ($y == floor($y) ? 1: $y - floor($y)); $yb = ceil($y) - $y; $trgb = ImageColorAt($image, $x, floor($y)); $tcr = ($trgb >> 16) & 0xFF; $tcg = ($trgb >> 8) & 0xFF; $tcb = $trgb & 0xFF; imagesetpixel($image, $x, floor($y), imagecolorallocatealpha($image, ($tcr * $ya + $icr * $yb), ($tcg * $ya + $icg * $yb), ($tcb * $ya + $icb * $yb), $alpha)); $trgb = ImageColorAt($image, $x, ceil($y)); $tcr = ($trgb >> 16) & 0xFF; $tcg = ($trgb >> 8) & 0xFF; $tcb = $trgb & 0xFF; imagesetpixel($image, $x, ceil($y), imagecolorallocatealpha($image, ($tcr * $yb + $icr * $ya), ($tcg * $yb + $icg * $ya), ($tcb * $yb + $icb * $ya), $alpha)); $x++; } } else { $y = min($y1, $y2); $endy = max($y1, $y2) + 1; while ($y < $endy) { $x = ($y - $b) / $m; $xa = ($x == floor($x) ? 1: $x - floor($x)); $xb = ceil($x) - $x; $trgb = ImageColorAt($image, floor($x), $y); $tcr = ($trgb >> 16) & 0xFF; $tcg = ($trgb >> 8) & 0xFF; $tcb = $trgb & 0xFF; imagesetpixel($image, floor($x), $y, imagecolorallocatealpha($image, ($tcr * $xa + $icr * $xb), ($tcg * $xa + $icg * $xb), ($tcb * $xa + $icb * $xb), $alpha)); $trgb = ImageColorAt($image, ceil($x), $y); $tcr = ($trgb >> 16) & 0xFF; $tcg = ($trgb >> 8) & 0xFF; $tcb = $trgb & 0xFF; imagesetpixel ($image, ceil($x), $y, imagecolorallocatealpha($image, ($tcr * $xb + $icr * $xa), ($tcg * $xb + $icg * $xa), ($tcb * $xb + $icb * $xa), $alpha)); $y ++; } } } } ?> --- Добавлено, 29 янв 2016 --- А вот сама форма регистрации! Если код корявый, то подправьте пожалуйста! Код: <?PHP $_OPTIMIZATION["title"] = "Регистрация"; $_OPTIMIZATION["description"] = "Регистрация пользователя в системе"; $_OPTIMIZATION["keywords"] = "Регистрация нового участника в системе"; if(isset($_SESSION["user_id"])){ Header("Location: /account"); return; } $referer_id = (isset($_COOKIE["i"]) AND intval($_COOKIE["i"]) > 0 AND intval($_COOKIE["i"]) < 1000000) ? intval($_COOKIE["i"]) : 1; $db->Query("SELECT * FROM `db_users_a` WHERE `id` = '$referer_id'"); if ($db->Numrows() > 0){ $r = $db->FetchArray(); $referer_name = $r["user"]; } else { $referer_name = 'admin'; $referer_id = 1; } ?> <div class="text_right"> <div class="text_pages_top"></div> <div class="text_pages_content"> <div class="s_divide"></div> <div class="text" style="padding-top:0px;"> <?PHP if(isset($_POST["loginform"])){ $lmail = $func->IsMail($_POST["email"]); $login = $func->IsLogin($_POST["login"]); if($login !== false){ if($lmail !== false){ $db->Query("SELECT `id`, `user`, `pass`, `referer_id`, `banned` FROM `db_users_a` WHERE `email` = '$lmail' AND `user` = '$login'"); if($db->NumRows() == 1){ $log_data = $db->FetchArray(); $pass = $func->md5Password($_POST["pass"]); if($log_data["pass"] == $pass){ if($log_data["banned"] == 0){ # Считаем рефералов $db->Query("SELECT COUNT(*) FROM `db_users_a` WHERE `referer_id` = '".$log_data["id"]."'"); $refs = $db->FetchRow(); $db->Query("UPDATE `db_users_a` SET `referals` = '$refs', `date_login` = '".time()."', `ip` = INET_ATON('".$func->UserIP."') WHERE `id` = '".$log_data["id"]."'"); $_SESSION["user_id"] = $log_data["id"]; $_SESSION["user"] = $log_data["user"]; $_SESSION["referer_id"] = $log_data["referer_id"]; Header("Location: /account.html"); }else echo "<div class='err'>Аккаунт заблокирован</div>"; }else echo "<div class='err'>Пароль указан неверно</div>"; }else echo "<div class='err'>Указанный пользователь не зарегистрирован в системе</div>"; }else echo "<div class='err'>Email указан неверно</div>"; }else echo "<div class='err'>Логин указан неверно</div>"; } ?> <?php if(isset($_POST["singup"])){ $login = $func->IsLogin($_POST["login"]); $pass = $func->IsPassword($_POST["password"]); $rules = isset($_POST["rules"]) ? true : false; $time = time(); $ip = $func->UserIP; $ipregs = $db->Query("SELECT * FROM `db_users_a` WHERE INET_NTOA(db_users_a.ip) = '$ip' "); $ipregs = $db->NumRows(); $passmd = $func->md5Password($pass); $email = $func->IsMail($_POST["email"]); if($rules){ if($login !== false){ if($email !== false){ if($pass !== false){ if($pass == $_POST["re_password"]){ //$db->Query("SELECT COUNT(*) FROM `db_users_a` WHERE `ip` = '$ipp'"); //if($db->FetchRow() == 0){ $db->Query("SELECT COUNT(*) FROM `db_users_a` WHERE `user` = '$login' AND `email` = '$email'"); if($db->FetchRow() == 0){ # Регаем пользователя $db->Query("INSERT INTO `db_users_a` (`user`, `email`, `pass`, `referer`, `referer_id`, `date_reg`, `ip`) VALUES ('$login','$email','$passmd','$referer_name','$referer_id','$time',INET_ATON('$ip'))"); $lid = $db->LastInsert(); $db->Query("INSERT INTO `db_users_b` (`id`, `user`, `money_b`) VALUES ('$lid', '$login', '300')"); # Вставляем статистику $db->Query("UPDATE `db_stats` SET `all_users` = all_users + 1 WHERE `id` = '1'"); # Отправляем $sender = new isender; $sender -> SendAfterReg($login, $email, $pass); echo "<div class='ok'>Вы успешно зарегистрировались!</div>"; }else echo "<div class='err'>Данный пользователь уже существует!</div>"; }else echo "<div class='err'>Пароль и повтор пароля не совпадают!</div>"; }else echo "<div class='err'>Пароль заполнен неверно!</div>"; }else echo "<div class='err'>E-mail заполнен неверно!</div>"; }else echo "<div class='err'>Логин заполнен неверно!</div>"; }else echo "<div class='err'>Вы не подтвердили правила!</div>"; } ?> <div class="narrow"> <div class="title_r">Вход</div> <form name="loginform" action="/signup.html" method="post"> <input name="login" type="text" value="<?=(isset($_POST["login"])) ? htmlspecialchars($_POST["login"]) : false; ?>" placeholder="Пользователь" class="input_text"/> <input name="email" type="text" placeholder="E-mail" value="<?=(isset($_POST["email"])) ? htmlspecialchars($_POST["email"]) : false; ?>" class="input_text"/> <input name="pass" type="password" placeholder="Пароль" class="input_text"/> <div class="clear"></div> <input type="submit" class="subm_button" value="Вход" name="loginform"> </form> <div class="terms_main"> <label for="terms"><a href="/recovery.html">Забыли пароль?</a></label> </div> </div> <div class="narrow_r"> <div class="title_r">Регистрация</div> <form name="singup" method="post" action="/signup.html"> <input type="text" placeholder="Пользователь" value="<?=(isset($_POST["login"])) ? htmlspecialchars($_POST["login"]) : false; ?>" name="login" class="input_text"/> <input type="text" placeholder="E-mail" value="<?=(isset($_POST["email"])) ? htmlspecialchars($_POST["email"]) : false; ?>"/ name="email" class="input_text"/> <input type="password" placeholder="Пароль" value="" name="password" class="input_text"/> <input type="password" placeholder="Подтвердить пароль" value="" name="re_password" class="input_text"/> <div class="clear"></div> <div class="terms_main"> <input type="checkbox" name="rules"/> <label for="terms">Я прочитал и соглашаюсь с <a href="/rules.html" target="_blank">условиями</a> использования сайта</label> </div> <input type="submit" class="subm_button" value="Регистрация" name="singup"/> </form> </div> </div> </div> <div class="text_pages_bottom"></div> </div>
как всё-таки тяжко без отступов в коде... еще бы сжали бы в одну строчку без пробелов весь код... а по делу: для начала добавьте в форме регистрации <img> для вывода капчи (src="файл_с_кодом_капчи") и <input> для ввода данных из капчи пользователем затем добавьте проверку на равенство введенных данных и $_SESSION['captcha']