AdminTalk - Talk to Learn

Navigation
Go Back   AdminTalk - Talk to Learn > Webmaster Area > Programming Language > Other
Other Trao đổi về những vấn đề khác trong công nghệ phần mềm như Analyzing, Designing, Defining Solution Architures…

Đề mục chính

Cấu trúc diễn đàn
Thông tin tổng hợp
Thông báo và quy định chung
Đóng góp ý kiến
Những bài viết có giá trị
Tin tức công nghệ
•• Tin tức công nghệ thông tin
•• Doanh Nghiệp & Người Tiêu Dùng
Premium Server, Hosting Support
Web Hosting / Domain
•• Kiến thức cơ bản về Web Hosting/Domain
•• Plesk - CPanel
Server / VPS
•• Kiến thức cơ bản Server - VPS
•• Server Review/ Hardware
•• Mail Server - AntiSPAM
Virtuozzo - VMWare - HyperV
•• For Windows
•• For Linux
Security
•• Mạng Wan - Lan
•• Internet - Virus - Hacker
VoIP
•• Kiến Thức Cơ Bản VoIP
•• Phần Cứng VoIP
•• Phần Mềm VoIP
•• Nhà cung cấp VoIP
Server Operating System
Linux Server
Windows Server 200x
Computer Supports and Discussion
Operating System
•• Hệ điều hành Linux
•• Hệ điều hành Windows
•• Hệ điều hành Mac
•• Hệ điều hành Chrome
Laptop, Netbook
Hardware
•• Cpu Intel
•• Cpu AMD
•• PSU, Overclocking & Cooling
•• Mainboard & Memory
•• Đồ họa máy tính
•• Kinh nghiệm
Software
•• Linux Apps
•• Windows Apps
Webmaster Area
Webmaster talk
Programming Language
•• HTML & CSS
•• PHP
•• C++ / C#
•• .NET
•• Java
•• Other
Graphic & Mutimedia
SEO (Search Engine Optimization)
Browsers
•• Mozilla Firefox
•• Chrome
•• Internet Explorer
Thủ Thuật Internet
Thương mại điện tử
•• Hình thức thanh toán
•• Giải pháp
HiTech, Mobile, Movies, Music, eBooks, Relax
Tablet PC
•• iPad
Mobile
•• iPhone
•• BlackBerry
•• Others
Movies
•• Download phim HD
•• Download phim DVD
Music
•• Download nhạc Lossless Album
•• Download nhạc Lossless tuyển chọn
eBooks - Tài liệu
•• Tin học - Lập trình
•• Khoa học - Kỹ thuật
•• Ngoại Ngữ
•• Tutorials - Training
•• Kinh tế
•• Thể Loại Khác
Bài học trong cuộc sống
AdminTalk – Talk to You
Introduce Youself
Off topic/ Chatting
Mua bán - Rao vặt - Tuyển dụng
Quảng cáo
Tuyển dụng

Bầu chọn mới nhất
Bạn nghĩ sao về công nghệ USB 3.0 ?

Rất tuyệt! Sẽ sử dụng ngay nếu được bán trên thị trường: 47.37%

Tốt hơn USB 2.0 , nhưng giá có thể mắc hơn nhiều: 42.11%

Bình thường thôi, công nghệ luôn thay đổi mà: 10.53%

Không quan tâm lắm: 0%
Voters: 38. You may not vote on this poll

Thống kê
Đề tài: 10639
Bài gửi: 12203
Thành viên: 20,207
Thành viên tích cực: 82
Xin cùng nhau chào đón thành viên mới nhất: buixuantu
Kỷ lục: 624 người đã ghé thăm 17/11/2010 lúc 06:16 AM.
Thành viên mới:
hôm nay
- buixuantu
hôm nay
- baophuc0711
Hôm qua
- ddvtien
Hôm qua
- thanhtam1028
Hôm qua
- goodhealthvn1
Hôm qua
- honghobao286
07/02/2012
- condau
07/02/2012
- timlaibautroi7408
07/02/2012
- NguyenLien
07/02/2012
- quydona

Số người đang xem
View Who's Online Thành viên: 3
Khách: 69
Tổng: 72
Nhóm: 0
Nhóm:  
Thành viên:  aviomobile, aviovn8, linhshop1989
Mở Sổ Bạn Bè

Trả lời
 
LinkBack Ðiều Chỉnh Kiếm Trong Bài Xếp Bài

  #1 (permalink)
Old 01/03/2010, 11:57 PM
Tự Tạo CAPTCHA đơn giản cho ứng dụng của bạn - PHP

Chip
Admintalk's Staff
can't stop talking
 
Chip's Avatar
 
Tham gia ngày: Apr 2008
Nơi Cư Ngụ: Germany
Bài gởi: 4,003
My Mood:
Thanks: 27
Thanked 210 Times in 152 Posts
VP: 0.00
Donate
Send a message via MSN to Chip Send a message via Yahoo to Chip Send a message via Skype™ to Chip
Bài viết này bao gồm các phần:



- captcha là gì



- captcha được tạo như thế nào



- tiến hành code



- viết thành thư viện để sử dụng lại



1. Captcha là gì?



Một CAPTCHA (ˈkæptʃə, đọc giống như “capture”) là một loại kiểm thử dạng hỏi đáp được dùng trong máy tính để xác định xem người dùng có phải là con người hay không. “CAPTCHA” là một dạng sắp đặt chữ đầu của “Completely Automated Public Turing test to tell Computers and Humans Apart” (Phép thử Turing công cộng hoàn toàn tự động để phân biệt máy tính với người), được trường Đại học Carnegie Mellon cố gắng đăng kí thương hiệu nhưng đã bị bác bỏ. Đây là một quá trình một máy tính (máy chủ) yêu cầu một người dùng hoàn tất một kiểm tra đơn giản mà máy tính có thể dễ dàng tạo ra và đánh giá, nhưng không thể tự giải nó được. Vì máy tính không thể giải quyết CAPTCHA, bất kỳ người dùng nào nhập vào lời giải đúng sẽ được xem là con người.



Thuật ngữ CAPTCHA được Luis von Ahn, Manuel Blum, Nicholas J. Hopper (tất cả đều thuộc Đại học Carnegie Mellon), và John Langford (khi đó thuộc IBM) đặt ra vào năm 2000. Một loại CAPTCHA phổ biến yêu cầu người dùng phải nhập các chữ cái trong một tấm hình méo mó, đôi khi cùng với một dãy số hoặc chữ lờ mờ xuất hiện trên màn hình.



Một CAPTCHA đôi khi được mô tả như một phép thử Turing ngược, vì nó được một máy tạo ra và nhắm vào con người, ngược lại với phép thử Turing chuẩn do con người tạo ra và nhắm vào máy.



<nguồn wikipedia>



2. captcha được tạo như thế nào



Đầu tiên ta cần phải ghi ra file ảnhtừ các chuỗi random.



Lưu chuỗi random này vào session.



So sánh chuỗi random trong session với request được gửi lên



Nếu chính xác thì thự hiện tiến trình



Nếu không thì trả về lỗi.



3. code nào



Đầu tiên để có thể ghi 1 string lên image file, tôi đi tìm đọc về thư viện image của php:



[Chỉ có thành viên mới thấy links này. ]



Có rất nhiều, keyword tôi quan tâm là draw – string – images



Lúc này có 2 sự lựa chọn tôi tìm thấy.1 là có file ảnh sẵn, đọc và ghi và file đó.2 sử dụng 1 file php, gen ra ảnh khi có parameter.



Cách 1 xem chừng khá đơn giản, nhưng chỉ chạy được khi có 1 request. còn nhiều req thì chịu



Cách thứ 2 tôi đã chọn, truyền chuỗi vào nó tự gen ra ngay trên phía client 1 file có header dạng image.



Như vậy tôi có 2 file:



- gen_image.php



- test.php



—> GEN_IMAGE.PHP —>



PHP Code:
<?php



// thông báo đây là image type



header (“Content-typeimage/png”);



$img=ImageCreate(80,30); // quy định kích cỡ của ảnh

$bgcolor=ImageColorAllocate($img,255,255,255); // cho màu nền là màu trắng

$red=ImagecolorAllocate($img,255,0,0); // quy định chữ màu đỏ cho nổi



ImageString($img,10,10,10$_REQUEST['text'],$red); // add cái text lấy được từ request vào obj image



ImageSetPixel($img,50,50,$red);

ImagePNG($img);

ImageDestroy($img);

?>
Như vậy là xong file gen_image.php. Nếu bạn gõ địa chỉ gen_image.php?text=”abcabc”, nó sẽ gen ra ảnh png với text trong ảnh là abcabc



Giờ tạo file test nào:



- chúng ta cần 1 hàm cho ra chuỗi random, ở đây tôi mượn hàn gen ra chuỗi mã màu random



PHP Code:
function get_random_color()

{

$c=;

for (
$i 0$i<6$i++)

{

$c .=  dechex(rand(0,15));

}

return 
“$c”;


Giờ đến phần phân tích xem user gõ cái gì vào hay không và so sánh với chuỗi k tự trong session



PHP Code:
$captcha = get_random_color();

$captcha_url = ”;



if( !isset($_SESSION['dCaptchaContentb']) || !isset($_REQUEST['captcha']))

{

$_SESSION['dCaptchaContentb'] = $captcha;

$captcha_url = ‘/gen.php?text=’.$captcha;

}

else if(isset($_REQUEST['captcha']))

{

if($_SESSION['dCaptchaContentb'] == $_REQUEST['captcha'])

{

//proccess

}

else

{

//noproccess



}

unsset($_SESSION['dCaptchaContentb']);

}



Tạo form ở bên dưới test



<form method=’post’>

<img src=’<?php echo $captcha_url ?>’ />

<input type=’text’ name=’captcha’ />

<input type=’submit’ value=’submit’ />

</form>
Giờ là lúc test thử xem ok không



4. viết thành thư viện để sử dụng lại[/quote]

Bài viết cùng chủ đề:
Chip vẫn chưa có mặt trong diễn đàn  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Trả Lời Với Trích Dẫn
Trả lời

Bookmarks


Ðang đọc: 1 (0 thành viên và 1 khách)
 
Ðiều Chỉnh Kiếm Trong Bài
Kiếm Trong Bài:

Kiếm Chi Tiết
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Mở
Pingbacks are Mở
Refbacks are Mở

Chuyển đến



Múi giờ GMT. Hiện tại là 11:53 PM.
Powered by: vBulletin - Copyright © 2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.AdminTalk.vn
Powered by vBCMS® 1.2.5 ©2002 - 2012 VinaCIS® Corporation