Membuat PHP Captcha Sendiri
Pernah denger istilah Captcha? captcha itu harfiahnya “Completely Automated Public Turing test to tell Computers and Humans Apart” ( dari Wikipedia ). Dibuat untuk membedakan antara mesin ( bot ) dan manusia. Captcha dibuat untuk melakukan validasi input pada website2 yang mempersilahkan pengunjung memberikan inputan baik berupa komentar, shoutout, kotak pendaftaran, atau apapun dimana pengunjung menginputkan sesuatu.
Kenapa harus divalidasi? soalnya banyak banget program2 SPAM COmment yang bisa aja menyerang situs kita. Kebayang kan klo kita bikin website, terus isi dari Comment/guestbook di website kita itu isinya Link2 ad ato penawaran tentang produk ato ga link ke situs2 porno. Jadi gak sedap dipandang. Biasanya yg ngisi Comment adalah program yang secara otomatis melakukan submit ke buku tamu / halaman comment website/blog kita.. Nah, klo pernah kejadian kayak gitu ato ga ngeliat yang kayak gitu, sebaiknya lengkapi websitenya dengan Captcha.
Captcha = Gambar Samar2
Simpelnya, Captcha merupakan sebuah gambar (image) yang berisi Angka / Teks atau kombinasi Angka & teks yang disamar2kan bentuk & rupanya sehingga memerlukan ketelitian dari pengunjung / orang yang ingin melakukan inputan data disebuah website.
Menambahkan Captcha pada website kita
Cara yang pertama adalah dengan download library Captcha dari thecaptcha.com Kita tinggal menambahkan librarynya dan disisipkan dengan website kita.
Cara yang kedua adalah dengan membuat PHP Captcha kita sendiri. Kode ini saya dapat dari somewhere setelah googling2. Eh ga taunya baru tau kalo di rumahweb.com tutorial kayak gini udah pernah ditulis. Jadi klo mau lebih detail boleh liat ke situsnya.
Cara Kerjanya:
Nah, cara kerjanya adalah bermain2 dengan session, pada saat form pendaftaran di Load, maka dibuatkan String Random dari MD5 yang diambil 5 digit pertamanya. Kemudian string itu disimpen di SESSION, Dari String itu dibuatkan Image dengan menggunakan GDLIbrary bawaan dari PHP dan ditampilkan di halaman Form tersebut. Pada saat User Submit String tersebut, dilakukan pengecekan dengan Session yang sudah tersimpan sebelumnya.

File: php_captcha.php
<?php session_start(); $RandomStr = md5(microtime());// md5 to generate the random string $ResultStr = substr($RandomStr,0,5);//trim 5 digit $NewImage =imagecreatefromjpeg("img.jpg");//image create by existing image and as back ground $LineColor = imagecolorallocate($NewImage,233,239,239);//line color $TextColor = imagecolorallocate($NewImage, 255, 255, 255);//text color-white imageline($NewImage,1,1,40,40,$LineColor);//create line 1 on image imageline($NewImage,1,100,60,0,$LineColor);//create line 2 on image imageline($NewImage,5, 1, 200, 50, $LineColor); imagestring($NewImage, 5, 15, 5, $ResultStr, $TextColor);// Draw a random string horizontally $_SESSION['key'] = $ResultStr;// carry the data through session header("Content-type: image/jpeg");// out out the image imagejpeg($NewImage);//Output image to browser ?>
File: form.php
<?php session_start(); ?> <html> <head> <title>PHP-CAPTCHA </title> </head> <body onload="return focuson();"> <script language="javascript"> function focuson() { document.form1.number.focus()} function check() { if(document.form1.number.value==0) { alert("Please enter your Category Name"); document.form1.number.focus(); return false; } } </script> <?php if(isset($_REQUEST['Submit'])){ $key=substr($_SESSION['key'],0,5); $number = $_REQUEST['number']; if($number!=$key){ echo '<center><font face="Verdana, Arial, Helvetica, sans-serif" color="#FF0000"> Validation string not valid! Please try again!</font></center>';} else{ echo '<center><font face="Verdana, Arial, Helvetica, sans-serif" color="#66CC00"> Your string is valid!</font></center>';} } ?> <form name="form1" method="post" action="form.php" onsubmit="return check();"> <img src="php_captcha.php" /></td> <input name="number" type="text" id="number" /></td> <input name="Submit" type="submit" value="Submit" /></td> </form> </body> </html>
Kode lengkapnya Bisa di download disini
mo download tp link downloadnya gak bisa diakses , he he discreenshootnya ada tabnya recaptcha
iya.. blm sempet di upload.. ntar dech di benerin lagi.. blm nemuin tempat share file yang oke nich. ada saran?
tapi btw, itu kodenya dah valid ko, tinggal di copy paste aja… ^_^
Yang saya bingungkan, kode diatas kan menghasilkan file img.jpg. Misalnya ada 2 orang atau lebih yang mengakses halaman tersebut, apakah image captchanya ga error ? atau menampilkan gambar yang sama ? atau gimana
gambar yang dihasilkan isi (angka & text) nya didapat dari hasil random String yang di MD5, lalu dipotong 5 digit pertamanya… kemudian disimpan di Session.
$RandomStr = md5(microtime());// md5 to generate the random string
$ResultStr = substr($RandomStr,0,5);//trim 5 digit
..jadi setiap kali halaman direload, pasti selalu menampilkan hasil gambar yang berbeda. coba buka dua browser dan jalankan file yang sama…
contoh image captcha yang pernah saya buat ada disini http://himakom.prodi-mi.com/index.php/view/tipografi-font-untuk-web
cobain aja buka 2 kali di tab yg berbeda
dulu q sempat tanya ke orang2 untuk buat ini, cuman orang yang q tanya kaga ngerti….soalnya q sendiri ga tahu namanya…
rupanya CAPTCHA
Yup
fan…
kenapa ga di implemen ke web nya alia ?
dah lumayan banyak tuh spam nya..
nanya dunkz?
1. fungsi captcha apa sih?
2. kenapa harus pake captcha?
thanks before!!
@ismed:
sudah di implement kang ismed, silahkan cek lagi di http://alia.pknlpkia.ac.id
mohon maaf agak telat respon nya
@paul:
1.fungsi utamanya untuk mencegah spam. karena sekarang sudah banyak BOT (mesin) yang melakukan insert ke buku tamu / comment di website kita secara otomatis. nah, dengan captcha dipastikan, yang mau insert ke bukutamu/comment tersebut adalah manusia, bukan mesin.
2.sudah terjawab di nomor 1.
thanks banget ya… maklumlah lagi mencari artikel2nya sih… mas irfan makasih bgt…
btw… masih bisa nanyakan?
1. apakah ada cara lain selain captcha? pengen ngebandingin dengan yang lain… siapa tau ada..
2. bisa ga kita buat captcha, tapi kita randomnya dari folder yang isinya file2 .gif yang sudah dibuat dari perpaduan antara huruf dan angka?
best regard.
pengen ngebandingin dengan yang lain
@paul:
y sama.. senengnya bisa ngebantu
umm…
1. cara lain? setau saya selain dibandingin sama captcha, bisa juga dengan cara dibandingin sama angka hasil operasi matematika sebuah bilangan. Misal: (Berapa 5×6). Tapi si bilangannya di random jg, jadi BOT susah deh bacanya… contohnya.. um.. pernah liat dulu, tapi lupa lagi, bentar googling dulu. :p
2. cara kaya gitu kurang efektif deh klo menurut saya. Mungkin random huruf & angka nya tetep di PHP nya aja. Cuma yg bisa di ganti2 file imagenya (warna background & ilustrasinya mungkin). Kemudian cara si php nge-scratch(ngegores2in) tuh gambar lebih dipersulit lagi sehingga sulit dibaca.
semoga bermanfaat.. ^__^v
Wah thanks ya buat tipnya
Fan… thanks banget atas bantuannya… kalo ga ada loe… tugas gw bisa GAGALLLLLLLL 100%……
ada lagi yang ingin saya tanyain…
… kebetulan udah captcha itu udah gw kembanging dengan ngac kode di tiap huruf. jadi yang ada kode dihurufnya yang terpilih…..
pertanyaan gw :
1. gimana cara c captcha itu bisa menghambat spam? (sebenarnya gw udah tau tapi hanya ingin mencocokkan jawabannya)
2. gimana algoritmanya captcha itu? (hehehehe…gw ga tau apa itu algoritma)
3.boleh minta alamat YM loe ga? biar interaksi langsung… online konsul…
thanks before n after….
YM: irfanroom
wah bro… aku maw tanya neh bikin form yang inputannya untuk tgl lahir, jadi waktu kita masukin bulan nanti tglnya bisa ngatur sendiri, misalnya kita masukin bulan maret berarti tglnya sampai 31, tapi klo kita masukin bulan april tglnya jadi 30 terus untuk bulan februari masalahnya sama tahun nah itu gimana caranya yah… jadi form itu lasung ngebaca untuk dirinya sendiri.. kalo bisa segera dijawab ya ntu buat jobtraining aku soalnya hehehe… thx bro
wah… harus seperti itu ya spesifikasinya? biasanya mah klo buat tanggalan, pake combobox untuk tanggal nya (diisi 1-31, min tgl 1 max tgl 31), klo buat bulan sudah pasti diisi jan-des. Nah klo tahunnya tinggal masukin aja pake textbox. Ato bisa juga di define, looping dari tahun terkecil (misal 1940 – tahun skr 2008).
Tapi kalo speknya harus milih berdasarkan bulan.. umm.. okay ku coba bikinin deh. Btw, ntar liatnya di blog ku yg baru aja yah… Secepatnya ku bikin.Okay
http://satriadarma.webwae.com
nah tuh bang, dah dibikinin
kk, captcha nya koq ga bs yaahh?? gambarnya ga keluar.. plz bantuin donk
ga keluarnya kenapa yah ??
gambarnya ga bisa keluar ….
mas, kok ga bisa keluar gambarnya ya? saya coba akses lgs php_captcha.php, munculnya spt ini:
Warning: imagecreatefromjpeg(img.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /php_captcha.php on line 6
Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /php_captcha.php on line 8
Warning: imagecolorallocate(): supplied argument is not a valid Image resource in /php_captcha.php on line 9
Warning: imageline(): supplied argument is not a valid Image resource in /php_captcha.php on line 11
Warning: imageline(): supplied argument is not a valid Image resource in /php_captcha.php on line 12
Warning: imageline(): supplied argument is not a valid Image resource in /php_captcha.php on line 13
Warning: imagestring(): supplied argument is not a valid Image resource in /php_captcha.php on line 15
Warning: Cannot modify header information – headers already sent by (output started at /home/gobushba/public_html/php_captcha.php:6) in /php_captcha.php on line 18
Warning: imagejpeg(): supplied argument is not a valid Image resource in /php_captcha.php on line 19
kira2 salahnya apa ya mas?
iya gambarnya ga keluar. adanya kotak ada tanda silang merahnya
ada saran dari eri sk8ber untuk yg ga jalan pake imagecreate katanya ganti pake imagettftext($im, 22, 0, 10, 35, $black, $font, $ResultStr);
tapi sy sendiri juga belum nyoba… ntar di cek dulu knp bisa eyyoy. kayaknya ada masalah sm createjpg nya.
aaaaaaaaaaaaaaa………
pucing aku………
thank u…
Kepengen nyoba soale websiteku pernah kena spam sampe pusing 7 keliling..
Kalo ada kesulitan boleh share nggak? Thnx ya…
@omsiro:
pusingnya kenapa om?
@pinandita:
sim2… bermanfaat ?
@Simri:
Ok. Siap. mungkin spam2 sekarang udah lebih canggih kali ya. dengan teknik Captcha seperti ini sy belum tau apa masih bisa ditembus ato ngga. tapi mudah2an bisa ya.
Mau tanya nich knp background captcha pas di upload gk view , tapi di localhost tampil … kurang apanya …ya,
Waduh! katanya udah valid kok masih eroor!
errornya di bagian mananya rivai? mungkin qt bisa bahas.
bro mau tanya neh
kalo code php buat ganti gambar captcha gmna?
mohon bantuannya
thx
Halo semua, salam kenal.
Seneng banget nemu blog keq gini ^^. Kalo captchanya sendiri udah lama tau, cuma ga pernah pengen make soalnya blom butuh. Barusan sekitar 2 ato 3 hari lalu dosenku minta ada model scurity kayak captcha. Aku cari-cari dapetnya class melulu. Enak seh tinggal pake, tapi pengen ngerti konsepnya, dan sekarang dapat. Lah, koq ga liat konsepnya dari kelas yang ada?? Ah.. males.. udah terlalu banyak baris kode. Well.. Thanks banget bro..
Nah sekarang mau bagi2 pengetahuan jg aku ^^. Pertama dari kode diatas, ada satu baris kode yang menurutku ga perlu fungsi berlebih. Pada file form.php baris yang berisi
$key=substr($_SESSION['key'],0,5);
Nah itu fungsi substr-nya dalam kasus ini ga perlu. Coz diawal udah diambil 5 huruf. Jadi cukup kayak gini bisa =)
$key=$_SESSION['key'];
Terus masalah fungsi yang dari library gdi-nya, yaitu imagecreatefromjpeg(string) itu adalah fungsi untuk membuat identifier image dari file yang sudah ada, jadi harus nyediain file img.jpg terlebih dulu untuk contoh :
$NewImage = imagecreatefromjpeg(“img.jpg”);
Tapi pas tak coba nyediain file img.jpg gambarnya ga berubah, jadi gw ganti fungsinya jadi
$NewImage = imagecreate(100,20); // paramater = panjang, lebar.
Fungsi diatas membuat identifier baru tanpa source image, jadi murni di memori server.
Kemudian untuk kasus captcha yang minta hasil perhitungan ini aku kemarin coba buat yang sederharna, aku modifikasi dari contoh sebelumnya =)
file = captcha.php
Untuk file form.php sama, cuma ganti baris
menjadi
atau terserah sesuai file source image captchanya… Oh ya, hati2 untuk pembagian tak hingga semacam 1/3 yang hasilnya 0.3333333…. mending di kasih pembulatan. Atau di substr jg bisa.
Terserah itu =)
Tapi yang paling penting, dari penjelasan bang Irfan adalah konsepnya, thanks banget bro.
@toetde :
Itu libray gdi di PHP blom aktif bang.
@XekaiForce:
wah, thx banged +annya. sim2. sangat membantu sekali penjelasan dan bagi2 pengetahuan teknisnya jadi lebih worth it lagi kodingnya. Tentang pembagian yg klo mau jadi pembualatan bisa juga pake fungsi ceil() nya php.
ok bro thx juga dah mampir n share disini. mdh2an bisa tetep share ya.
regards.
makasi pak,, sedeng perlu ne…
Bagi yang gagal masang captcha, yag gambarnya gak mau muncul….
coba deh upload juga file img.jpg. anda bisa desain dulu pake adobe photoshop, baru di upload. pasti nantinya bisa…
semoga bisa membantu bagi yang gagal
NI ntar ditaruh dimana ya…?
ditaruhnya di contact-form / form yg membutuhkan validasi captcha.
kok hasilnya tetap ga ada ya? n yang keluar tetap kotak dengan tanda silang merah ?
ni errornya :
Fatal error: Call to undefined function: imagecreatetruecolor() in c:\apache\htdocs\captcha\php_captcha.php on line 13
kalau saya rubah begini :
$NewImage =imagecreatefromjpeg(“img.jpg”)
jadi :
ga ada hasilnya …
tolong jalan keluarnya mas?
@kang sofyan:
uda cek blm di php.ini?
cek dulu deh apa di baris extension=php_gd2.dll
ada tanda “;” di depan?
-> kalo ada mohon dihilangin deh…. ;p
-> kalo ga bs juga cek filenya ada ga?
[lokasi filenya ditaruh tergantung sama package (xampp, phptriad, dll) yg anda pake]
tes hallo!
monggo mas, mangap numpang lewat…
td ane cari2 di om google n ketemu posting ini…
nice post and idea, gan…
btw, cuma mau nambahin aja mungkin kalau dibuat create dari image jpg yg udah ada akan ribet (image ga muncul)… [atau mungkin bs ada terjadi exclusive locks untuk penggunanaan secara bersamaan. Cuma paranoia, ga bs ane buktikan ;p ]
jadi, ane pake cara bang XekaiForce, tp ga pake imagecreate karena rada transparan gitu antara background ama tulisan… [ga sama kayak contoh]
jadi, ane otak-atik dikit… [ijin yah gan...]
cara kang irfan:
$NewImage =imagecreatefromjpeg(“img.jpg”);
cara bang XekaiForce
$NewImage =imagecreate(100,20);
cara ane
$NewImage =imagecreatetruecolor(75, 30); //(Panjang, Tinggi)
dan dipaling bawah file “php_captcha.php” setelah:
imagejpeg($NewImage);//Output image to browser
ane tambahin:
imagedestroy($NewImage); //Clear output buffer. Added by Surya
dua cara ini disarankan oleh phpmanual [ satu mang jelas2 di sebut gitu. kedua, tiap ada contoh ttg image selalu ada imagedestroy() ]
[quote: phpmanual]
resource imagecreate ( int $width, int $height )
imagecreate() returns an image identifier representing a blank image of specified size.
We recommend the use of imagecreatetruecolor().
[/quote: phpmanual]
Thanks bro atas artikelnya
sama2 bang…
bro…uda g coba tapi koq script nya ga jalan sih ? tolong donk bantuannya…gw lagi pengen belajar capcai ne eh salah captcha…heheheh
thank’s yach.
ga bisanya gmn om ? ada keluar error atau gimandang.. siapa tw saya / temen2 yg lain bisa bantu
@Surya Japutera
Thanks bos, pake caranya bos Surya baru bisa jalan dengan bener nih script
pake $NewImage =imagecreatetruecolor(75, 30);
ok. sama2 bro.. your welcome. semoga berguna ya…
ikutan..om. tadinya juga binun kok gak kerja scriptnya. ternyata nilai $NewImage diganti pake imagecreate() baru kerja. Trims. Nah kalo buat gedein ukuran text nya gimana om?
@wesiyadi
weeew… pertanyaan yang bikin penasaran… hehehehe…
fyi,
bool imagestring (resource $image, int $font, int $x, int $y, string $string, int $color)
dari built-in function imagestring(), variabel $font lah yang bertugas menentukan ukurannya… tapi ternyata maksnya hanya sampai 5.
Because for you size does matter… Untuk itu, kita harus menggunakan built-in function yg lain, setelah search di php manual ini lah kandidatnya: imagettftext() penjelasan nanti dibawah, sebenarnya pake imagestring jg bs tp kalo liat contoh dari php manual kayaknya ribet…. jadi imagettftext() ini jadi pilihan alternatif.
imagettftext ( resource $image, float $size, float $angle, int $x, int $y, int $color, string $fontfile, string $text )
oh yah… $angle variable untuk bs dimiringin loh… namanya juga derajat.
NB:
1. Jangan lupa untuk memperbesar font, luas bidangnya ditambah (pada saat pembuatan $NewImage). Ex: $NewImage =imagecreatetruecolor(300, 120);//Create New Image.
2. Jangan lupa sebaiknya garisnya ditambah panjangnya. Ex: imageline($NewImage,1,1,130,130,$LineColor);//create line 1 on image
imageline($NewImage,1,100,300,0,$LineColor);//create line 2 on image
imageline($NewImage,5, 1, 200, 300, $LineColor);
bahkan ditambahkan sampai 5 or 10 garis….
3. jika menggunakan imagettftext(), ada baiknya ditambahkan angle, sayang ada fasilitas ngak dipake….
4. bisa juga ditambahkan bayangan loh… tinggal pake warna yang lain (sebagai ganti $white) dan dideclare lebih dulu dan jangan lupa atur posisinya…
5. Untuk keterangan lebih lanjut silahkan cek PHP Manual anda… sekarang ane mo kerja dulu…
Good luck…
weleeh..kok makin ribet..om..jangan kesel yak..ane lagi nyobain php
soalnye ane sedang bete ama si delphi
@wesiyadi: waaa php jadi pelarian nih ceritanya.. gara2 sebel sm delphi… ^_^
@surya: mantap tambahan tutorialnya om. saya cobain juga yaa…. tambah kumplit aja ini.. gimana klo qt bikin library untuk captcha php aja yu..
@Wesiyadi: hehehe coba aja pelan2 dan terus pelajarin… ^^
@Mas Irfan: mangap, baru sempet buka lagi… huehuehe… siip, boleh juga tuh bikin lib buat captcha… tapi ‘kan ide dasarnya dari mas sendiri… ^^
nanti aku share modif-an ku deh… makasih yah mas buat sharingan-nya…
session_start(); $RandomStr = md5(microtime()); // md5 to generate the random string $ResultStr = substr($RandomStr,0,5); //trim 5 digit $NewImage =imagecreatetruecolor(90, 35); //Create New Image. $LineColor = imagecolorallocate($NewImage, 128, 128, 128); //line color $TextColor = imagecolorallocate($NewImage, 255, 255, 255); //text color-white imageline($NewImage,1,1,100,50,$LineColor); //create line 1 on image imageline($NewImage,20,20,75,50,$LineColor); //create line 2 on image imageline($NewImage,1, 15, 100, 25, $LineColor); //create line 3 on image imageline($NewImage,1, 30, 100, 40, $LineColor); //create line 4 on image imageline($NewImage,1, 50, 100, 1, $LineColor); //create line 5 on image imageline($NewImage,50, 1, 90, 30, $LineColor); //create line 6 on image $font = 'segoeprb.ttf'; /*Surya Note: you can change this with another font you desire. Please consider to put the files in the same folder. */ $white = imagecolorallocate($NewImage, 255, 255, 255); imagettftext($NewImage, 18, 5, 5, 30, $white, $font, $ResultStr); $_SESSION['veri_key'] = $ResultStr; // carry the data through session header("Content-type: image/jpeg"); // out out the image imagejpeg($NewImage); //Output image to browser imagedestroy($NewImage); //Clear output buffer. Added by Suryamakin ribet tp makin mantaff tampilannya..
thx banget smuanya, jadi bisa lanjutin buat proyek deh.. hehee
Klo qta udh bwt form.php sm captcha.php nya trs cr masukin k dlm web qta gmna? kebetulan sy pke WP..
maaf neh maklum msh pemula..
thx
klo di wp udh ada askimet yg mencegah spam masuk, tinggal tambahin pluginnya aja. qt g perlu bikin captcha sendiri. captcha yg d bkin disini untuk bikin sendiri & diterapin di web yg dibikin (proyekan)…
duhh saya ga ngerti nich..
pusing baca scriptnya..
pelan – pelan saja… udah paling simpel banget itu kk..
mksh OM Irfan,
script Anda sgt membantu dalam pmbuatan tugas web saya.
iya sama2 ya… emang tugasnya disuruh ngapain ?
231412312
Thanks tutorialnya..
iya sama2 mba
matapfz nih blog… trus terang saya da sering bkin tugas web pakai PHP walaupun cuma standrt2 aj… liat scriptnya saya da tau maksudnya tpi trus terang lom ngarti… hihihi…
ini lo mo nanya ke agan2 senior…
kira2 nerapin captcha makai flash mungkin g?? jd yang ditampilin obyek bergerak gitu, soalle kan kabanyakan da makai gambar atau perhitungan matematika…
atau mang da ada yang makai flash, kalau da ada brarti saya ktinggalan info.
hehe syukurlah skarang udah ngerti brarti ya gan.. cara kerjanya captcha?
klo pake flash ya mungkin banget,, coba gugling dgn keyword flash captcha pasti banyak tuh..
btw,, captcha dgn image bergerak nya mo kayak gmn nih agan ical? sp tau jd ide yg menarik?
sory ni baru dbalas skarang alna ge beres2 nyambut lebaran nih… jd g OL seharian.
Gini loh gan, kalau objek bgaraknya nya kya flash2 yg banyak nampil di banner2 website, mirip2 itu, atau kalau memungkinkan pakai flash video kaya d youtube gitu.
Jadi capcha-nya dari video yg d link-in ke url video youtube gitu.
kira-kira maksudnya bgitu. kira2 logika PHP nya gmana tu.
Agan irfan tau g cara ngePHP-in nya??
By The Way, mohon ma’af lahir bathin dulu nih…
makasi ya..
jadi ada bahan perbandingan saya..
sukses terus,..
agan2 senior php bang irfan & friend mau tanya neh
kalo code php buat ganti gambar captcha gmna?
misalnya user nda tau gambar captcha yang muncul
terus dia mau ganti gambarnya
“untuk mengganti gambar captcha klik disini”
linknya dtaruh dstu gan
mohon bantuannya
thx
wah ane habis bikin kotak comment di web ane,,dan ane dapet dari emailmeform.com tpi ada capthca nya ane jadi pusing eh ternta ada disini jawabannya makasih yahh salam kenal
sama2.. salam kenal jg… senang bisa membantu di postingan lama ini
Om kalo buat login.php gimana ya