PHP код за сигурност / против ботове /
02-11-2009
Първо искам да отбележа, че автора е неизвестен, не съм аз.
Реших да го споделя понеже ми е много полезен.
На практика можете да го видите тук: http://gre-rakovski.com/?p=contact .
Използва се за контакт форми, регистрация и др, които използват метод POST

създавате файл code.php:
<?php
session_start();
$simwoli = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$max_chars = 6;
$count = strlen($simwoli)-1;

for ($i=0; $i<$max_chars; $i++) {
$random = mt_rand(0, $count);
$rand .= $simwoli{$random};
}
$_SESSION['image_random_value'] = md5($rand);
$image = imagecreate(60, 22);
$bgColor = imagecolorallocate ($image, 255, 255, 255);
$textColor = imagecolorallocate ($image, 102, 102, 102);
imagestring ($image, 6, 4, 4, $rand, $textColor);
header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>


следващото го пишете във формуляра, там където да се показва кода:
Код за сигурност: <img src="code.php"/>
Въведи кода: <input type="text" name="randimage_txt" maxlength="6"/>


и последно, във файла, който обработва заявката:

if( md5( $_POST['randimage_txt'] ) != $_SESSION['image_random_value'] ){
print'Объркахте кода за сигурност. Моля опитайте отново!';
}
else{
//код, който да се изпълни ако секретния код е вярно попълнен
print'Кода за сигурност е верен.';}










/ Трябва да сте регистриран за да напишете коментар /
От: MontefuckeR
13:10 02-11-2009
За да стане и за GET метод този ред:

if( md5( $_POST['randimage_txt'] ) != $_SESSION['image_random_value'] ){

се променя с този:

if( md5( $_GET['randimage_txt'] ) != $_SESSION['image_random_value'] ){
От: bama
21:51 03-11-2009
а къв е смисъла да се хешира с мд5 ?
От: federer_11
14:38 04-11-2009
за по-голяма сигурност. Защото ботовете не са на два дена :P
От: alex95_bg_2
17:00 04-11-2009
Няма никакъв смисъл да се хешира с md5 :)
това е сесия
От: DangerM
13:23 12-12-2009
if( md5( $_POST['randimage_txt'] ) != $_SESSION['image_random_value'] ){
print'Объркахте кода за сигурност. Моля опитайте отново!';
}
else{
//код, който да се изпълни ако секретния код е вярно попълнен
print'Кода за сигурност е верен.';}
този код каде по точно се слага
1