Thursday, December 21, 2006

Script Captcha di PHP

Lagi iseng nih gak ada kerjaan udah gitu tangan gatel buat ngeblog hehe, ok kita mulai yah.
Captcha sebutan buat image kecil yang berisi kode untuk verifikasi simple biasanya dipergunakan untuk menghindari submit otomatis dari bots, berikut contohnya :
sebenernya simple banget, flownya gini, pertama kita siapin karakter acak, lalu kita siapkan image *tentunya dengan menggunakan GD Library yang ada di PHP*, dan masukkan karakter tersebut ke image yang telah kita siapkan, simple kan? ok let's coding..

1. $result = md5(microtime() * 1000);
2. $result = substr($result, 0, 6);
3.
4. $im = imagecreate(90, 29);
5. $background_color = imagecolorallocate($im, 0xFF, 0x80, 0x00);
6. $text_color = imagecolorallocate($im, 0x02, 0x01, 0x00);
7. $line_color = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
8.
9. header("Content-type: image/png");
10. imagestring($im, 9, 5, 5, $result, $text_color);
11. imageline($im, 0, 0, 39, 29, $line_color);
12. imageline($im, 40, 4, 139, 29, $line_color);
13. imageline($im, 80, 4, 139, 98, $line_color);
14. imageline($im, 90, 4, 19, 8, $line_color);
15. imagepng($im);
baris 1-2 kita membuat karakter acak, microtime() * 1000 untuk membangkitkan bilangan acak lalu kita masukkan bilangan acak tersebut ke funsi md5() untuk mengacaknya lagi, lalu kita ambil 6 karakter dari depan dengan fungsi substr()

baris 4-7 kita mempersiapkan imagenya beserta warna yang akan kita gunakan,
imagecreate(90, 29) untuk membuat image, imagecolorallocate($im, 0xFF, 0x80, 0x00) untuk membuat warna yang akan kita gunakan, 0xFF, 0x80, 0x00 dsb. itu adalah bilangan hexa dari sebuah warna.

baris 9-15 kita tampilkan imagenya,
header("Content-type: image/png") untuk menampilkan image dengan keluaran png, imagestring($im, 9, 5, 5, $result, $text_color) untuk memasukkan karakter yang telah kita buat ke dalam image, imageline($im, 0, 0, 39, 29, $line_color) untuk membuat garis acak.

Hasilnya kurang lebih seperti ini *border putih tidak termasuk* :
Simple kan, dari script diatas kita bisa memodifikasinya lagi dengan sedemikian rupa entah warnanya bisa dinamis atau juga fontnya, bagaimana dengan autentikasinya? mudah, kita tinggal persiapkan session untuk menampung variable karakter yang telah kita buat lalu kita cocokkan dengan input dari user.
Ok segini dulu, mo sholat isya' dulu ah abis itu pulang ;)

4 comments:

Karen Luntungan said...

busyeett...yg kayak gini lw bilang simple, git..??
gimana yg rumit ya..??
(ya..secara gw bukan nak IT..) ;p

note. jangan diitungin titik2nya, ribet tauk.... :lol:

hdytsgt said...

hehehe, sapa yang mo ngitungin titik2nya :P

Unknown said...

Welehh.. yat.
Kalo mo ngajarin dari yang simpel2 aja dulu napa :P **beda yah yang kelas senior:P** hehehe...

hdytsgt said...

wah no comment dah :P