NHATRANG.FORUM-PRO GÓC GIẢI TRÍ HẤP DẪN SỐ1
NHATRANG.FORUM-PRO GÓC GIẢI TRÍ HẤP DẪN SỐ1
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

NHATRANG.FORUM-PRO GÓC GIẢI TRÍ HẤP DẪN SỐ1


 
Trang ChínhTrang Chính  GalleryGallery  Tìm kiếmTìm kiếm  Latest imagesLatest images  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  diễnđàndiễnđàn  
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
WEBSITE LIÊN KẾT
Toán H�c Tu�i Tr�
Social bookmarking
Social bookmarking reddit      

Bookmark and share the address of KIẾN THỨC on your social bookmarking website

Bookmark and share the address of NHATRANG.FORUM-PRO GÓC GIẢI TRÍ HẤP DẪN SỐ1 on your social bookmarking website

 

 Hướng dẫn cách tạo ảnh random-code antispam

Go down 
Tác giảThông điệp
Admin
Admin
Admin


Tổng số bài gửi : 462
Points : 1722
Reputation : 0
Join date : 27/05/2011
Age : 37
Đến từ : Nha Trang

Hướng dẫn cách tạo ảnh random-code antispam Empty
Bài gửiTiêu đề: Hướng dẫn cách tạo ảnh random-code antispam   Hướng dẫn cách tạo ảnh random-code antispam EmptyFri Jun 10, 2011 12:42 am

Hi all, mới đọc được cái này, đang rảnh nên cũng chia sẽ cho bà con xài chơi

Demo : www.zhome.info

Sau đây tui sẽ hướng dẫn mọi người cách tạo ra 1 hình ảnh random code dùng để anti-spam, nhưng hiện giờ thì hình như nó không còn tác dụng nhiều cho lắm (chỉ để học hỏi thôi!)

Ta tạo 1 file tên gì cũng được, chứa class tạo ảnh cần thiết. Class này createPicture.

PHP Code:
class createPicture
{
/*
* object properties
*/
public $width = '';
public $height = '';

// available charactor will be splitted
public $available =
'0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z';

private $available_array = array();
public $string_random = '';


// generate random code ^^
private function generateCode($length)
{
// make random string
try {
$this->string_random = '';
for ($i = 1; $i < $length; $i++)
{
$random_num = mt_rand(0, count($this->available_array) - 1);
$this->string_random .= $this->available_array***91;$random_num***93;;
}

return true;
} catch(exception $e) { return $e; }
}

function createPicture($length_char = 7, $width = 100, $height = 30, $available = '')
{
try {
if($available != '') {
$this->available = $available;
}

// length char must be under 10
if($length_char > 10) { return false; }



$this->available_array = split('-', $this->available);

$this->height = $height;
$this->width = $width;

// make random string
$this->generateCode($length_char);

// now create image contents charactors on it ^^


$image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream');
$background_color = imagecolorallocate($image, 96, 195, 255);
$text_color = imagecolorallocate($image, 255, 255, 255);
$noise_color = imagecolorallocate($image, 100, 120, 180);

// tao cac diem cham ngau nhien cho anh
for( $i=0; $i<($width*$height)/3; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}

// tao cac duong ke ngau nhien cho hinh anh
for( $i=0; $i<($width*$height)/150; $i++ ) {
imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
}

/* create textbox and add text */

imagestring($image, 100, 5, 5, $this->string_random, $text_color);

header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);



return true;
} catch(exception $e) { return $e; }
}



}
Ta sẽ đi sâu vào chi tiết class trên. Đầu tiên là 2 thuộc tính rộng và ngang (chưa set value).
PHP Code:
public $width = '';
public $height = '';
Kế tới là
PHP Code:
public $available =
'0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z';

private $available_array = array();
public $string_random = '';
Với
- $available là các kí tự sẽ dùng để tạo chuỗi random.
- $available_array là mảng sẽ chứa các kí tự của $available sau khi bị cắt ra.
- $string_random chính là kết quả sau khi generate code.

Tiếp đó là phương thức :
PHP Code:
private function generateCode($length)
{
// make random string
try {
$this->string_random = '';
for ($i = 1; $i < $length; $i++)
{
$random_num = mt_rand(0, count($this->available_array) - 1);
$this->string_random .= $this->available_array***91;$random_num***93;;
}

return true;
} catch(exception $e) { return $e; }
}
Phương thức này chủ yếu là nhằm tạo ra chuỗi $string_random bằng cách lấy ngẫu nhiên các kí tự trong mảng $available_array rồi kết hợp lại.

Tiếp tới mới là phương thức quan trọng của chúng ta :
PHP Code:
function createPicture($length_char = 7, $width = 100, $height = 30, $available = '')
Tham số dành cho phương thức này gồm độ dài chuỗi (ý là bao nhiêu kí tự í), độ rộng, cao của hình.

Sau một số bước ngoằn nghoèo tiếp theo, ta generateCode ra chuỗi ngẫu nhiên.
Tiếp tới là $image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream');
$background_color = imagecolorallocate($image, 96, 195, 255);
$text_color = imagecolorallocate($image, 255, 255, 255);
$noise_color = imagecolorallocate($image, 100, 120, 180);

- $image = @imagecreate($width, $height) chính là việc tạo ra 1 hình ảnh trống và assign nó vào biến image.
- Tiếp đó ta set các thông số về màu sắc và độ nhiễu của ảnh bằng cách
$background_color = imagecolorallocate($image, 96, 195, 255);
$text_color = imagecolorallocate($image, 255, 255, 255);
$noise_color = imagecolorallocate($image, 100, 120, 180); (ai có kiến thức về màu sắc thì tự thay thế, còn tui thì vô PTS để lấy mã màu).

Tiếp theo ta tạo các chấm và đường kẻ ngẫu nhiên cho hình (ai thích làm sao thì làm, không bắt buộc ^^)

Hướng dẫn cách tạo ảnh random-code antispam
Bây giờ ta chèn text vào hình : imagestring($image, 100, 5, 5, $this->string_random, $text_color);
100 là int font (đô lớn), tui set cho nó maximum luôn, nhưng thực tế thì max của nó chỉ cỡ 6~7 thôi, để lố thì nó cũng chẳng bự hơn . Tiếp đến là vị trí của chữ trong hình (tọa độ x, y). Cuối cùng là chèn chữ và đưa màu chữ vào. Ta đặt header là Content-Type: image/jpeg để trình duyệt hểu nó và xử lí như 1 hình ảnh jpeg bình thường. Tiếp tới ta đưa ra hình ảnh và xóa bộ nhớ chứa ảnh (để giảm tải server í mà) : imagejpeg($image);
imagedestroy($image);

Xong xui hết, ta khởi tạo đối tượng, đưa tham số vào đó :
$create_random_code = new createPicture(7, 68, 25);
$_SERVER['antispam_code'] = $create_random_code->string_random;

Phia cuối ta set session cho nó để có gì còn KT. (nhớ trên đầu trang thêm vào session_start(); để khởi tạo session.
Về Đầu Trang Go down
http://hung.forum-pro.net
 
Hướng dẫn cách tạo ảnh random-code antispam
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Cách khắc phục khi Firefox rùa bò
» Cách cài đặt chức năng Fax cho máy vi tính
» code Random Image Script
» Code Đếm Ngược Thời Gian - Full Code Java
» Cách cài đặt chương trình hỗ trợ xem tập tin dạng Flash

Permissions in this forum:Bạn không có quyền trả lời bài viết
NHATRANG.FORUM-PRO GÓC GIẢI TRÍ HẤP DẪN SỐ1 :: s2♥•••(¯`-:-†-:-´¯)•••♥s2................CÔNG NGHỆ THÔNG TIN :: _____Kiến thức tin học-
Chuyển đến