Zabezpieczenie przed botami [CAPTCHA]
Nie wiem jak wam, ale mi captchy z tego działu nie działały więc:
1. Należy utworzyć plik captcha.php w katalogu głównym
Zawartośc pliku:
Kod php:
<?
session_start();
$pool = '123456789abcdefghijklmnopqrstuvwxyz'; // liczby i cyfry jakie mają występować
$img_width = 120;
$img_height = 30;
$str = '';
for ($i = 0; $i < 7; $i++){
$str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
}
$string = $str;
$_SESSION['captcha'] = $string;
$im = imagecreate($img_width, $img_height);
$bg_color = imagecolorallocate($im,99,16,222); // to i 3 następne linijki służy to ustawiania kolorów
$font_color = imagecolorallocate($im,252,252,252);
$grid_color = imagecolorallocate($im,31,0,0);
$border_color = imagecolorallocate ($im, 252, 252, 252);
imagefill($im,1,1,$bg_color);
for($i=0; $i<1600; $i++){
$rand1 = rand(0,$img_width);
$rand2 = rand(0,$img_height);
imageline($im, $rand1, $rand2, $rand1, $rand2, $grid_color);
}
$x = rand(5, $img_width/(7/2));
imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);
for($a=0; $a < 7; $a++){
imagestring($im, 5, $x, rand(6 , $img_height/5), substr($string, $a, 1), $font_color);
$x += (5*2); #odstęp
}
header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
?>
2. edytujemy teraz reg.php
ok 60 linia po :
Kod php:
$_POST['email'] = strip_tags($_POST['email']);
if (!is_email($_POST['email'])) {
$errorlist .= "\"" . $_POST['email'] . "\" " . $lang['error_mail'];
$errors++;
}
Dodajemy:
Kod php:
if (!$_POST['planet']) {
$errorlist .= $lang['error_planet];
$errors++;
session_start();
$girilen = $_REQUEST["captcha"];
if($_SESSION['captcha'] == $girilen){
echo "";
}else{
$errorlist .= $lang['error_captcha'];
$errors++;
}
}
3. Edytujemy teraz registry_form.tpl
Wstawiamy a raczej podmieniamy (każdy powinien wiedzieć gdzie, bo wystarczy znaleźć podobny "tekst" i podmienić ;])
Kod:
<tr>
<th>{Sex}</th>
<th><select name="sex">
<option value="">{Undefined}</option>
<option value="M">{Male}</option>
<option value="F">{Female}</option>
</select></th>
</tr>
</tr>
I od razu za tym gdy już podmieniliśmy wstawiamy:
Kod:
<tr>
<th><img src="captcha.php"></th>
<th><input type="text" name="captcha" size="20" maxlength="20" /></th>
</tr>
4. a i jeszcze można w reg.mo dać:
Kod:
$lang['error_captcha'] = 'Bledny kod z obrazka !<br />';
Chociażby można to wstawić pod:
Kod:
$lang['error_mailsend'] = 'Wystąpił błąd podczas wysyłania poczty e-mail! Twoje hasło : ';
Powinno działać 
Pozdrawiam
Zakładki