Cara Membuat Captcha Sederhana Dengan Script PHP

DailyBlog.id - Ketika kita ingin berkomentar atau mengunjungi suatu blog atau web, dan kalian dimintai untuk mengisi gambar keamanan? nah itu yang dinamakan captcha. Sesuai dengan judul yang saya berikan, disini saya akan membagikan tutorial pada kalian semua untuk membuat captcha yang sederhana menggunakan script php.

Sebelum masuk ke tutorial cara membuatnya, ada alangkah baiknya kalian mengenal captcha terlebih dahulu. Captcha merupakan singkatan dari Completely Automated Public Turing test to tell Computers and Human Apart. Bisa disimpulkan bahwa captcha itu merupakan sebuah teknik untuk pengecekkan robot atau manusia. Captcha sendiri biasanya berbentuk teks, gambar, atau pilihan gambar. Dan sesuai yang saya katakan diatas, bahwa captcha ini biasanya dipasang pada form komentar, buku tamu, login atau tempat lainnya yang digunakan untuk mencegah dari robot.

Lalu Apa Kegunaan Captcha Sebenarnya?

  • Captcha digunakan untuk mencegah spam pada suatu form
  • Captcha dapat digunakan untuk mencegah serangan bruteforce
  • Captcha dapat digunakan untuk mencegah trafik robot
  • Dan masih banyak lagi yang tidak saya ketahui

Cara Membuat Captcha Sederhana Dengan Script PHP

Jika sudah mengenal captcha, kalian sekarang bisa memulai untuk membuat captchanya dengan menggunakan script php. Caranya sangat mudah sekali, kalian bisa copas script yang ada dibawah ini atau kalian juga bisa mengunduh script dari Github yang akan saya berikan nanti dibawah. Dan untuk memulainya kalian bisa buat file index.php dan captcha.php.

captcha.php

<?php

// mengaktifkan session php
session_start();

function hexToRGB($hexstring)
{
	$integar = hexdec($hexstring);
	
	return [
		'red'	=> 0xFF & ($integar >> 0x10), 
		'green' => 0xFF & ($integar >> 0x8), 
		'blue'	=> 0xFF & $integar
	];
}


$i		= 0;
$imgHeight	= 80;
$imgWidth	= 250;
$randTotal	= 7;
$randomDots	= 50;
$randomLines    = 25;
$font		= realpath('./fonts/monofont.ttf');
$random		= '';
$captTextColor  = "0x142864";
$noiseColor	= "0x142864";
$fontSize	= $imgHeight * 0.65;
$random		= substr(str_shuffle('abcdefghijklmnopqrstuvwxyz0123456789'), 0 , $randTotal);
$image		= @imagecreate($imgWidth, $imgHeight);


// Atur latar belakang, teks, dan warna noise
$arrTextColor	= hexToRGB($captTextColor);
$arrNoiseColor	= hexToRGB($noiseColor);
$bgColor	= imagecolorallocate($image, 255, 255, 255);
$captTextColor 	= imagecolorallocate($image, $arrTextColor['red'], $arrTextColor['green'], $arrTextColor['blue']);
$imgNoiseColor	= imagecolorallocate($image, $arrNoiseColor['red'], $arrNoiseColor['green'], $arrNoiseColor['blue']);


// Cetak titik acak di latar belakang gambar
for ($i = 0; $i < $randomDots; $i++) 
{
	imagefilledellipse($image, mt_rand(0, $imgWidth), mt_rand(0, $imgHeight), 2, 3, $imgNoiseColor);
}


// Cetak garis acak di latar belakang gambar
for ($i = 0; $i < $randomLines; $i++) 
{
	imageline(
		$image,
		mt_rand(0,$imgWidth),
		mt_rand(0,$imgHeight),
		mt_rand(0,$imgWidth),
		mt_rand(0,$imgHeight),
		$imgNoiseColor
	);
}


// Cetak kotak teks dan tambahkan 6 kode huruf captcha
$textBox		= imagettfbbox($fontSize, 0, $font, $random); 
$x			= ($imgWidth - $textBox[4]) / 2;
$y			= ($imgHeight - $textBox[5]) / 2;
$_SESSION['captcha'] 	= $random;


imagettftext($image, $fontSize, 0, $x, $y, $captTextColor, $font, $random);
header('Content-Type: image/jpeg'); 
imagejpeg($image);
imagedestroy($image);


?>


Setelah itu kalian buat file dengan nama index.php, lalu copas sccript indexnya yang ada dibawah ini:

index.php

<?php

// mengaktifkan session php
session_start();

// melakukan pengecekan saat disubmit dan post captcha tidak kosong
if (isset($_POST['captcha']) && (!empty($_POST['captcha']))) 
{
    // melakukan pengecekan apakah post captcha dengan session captcha sama atau tidak
    if (strcasecmp($_SESSION['captcha'], $_POST['captcha']) != 0)
        $msg = '<span class="error">Kode captcha salah, silahkan coba lagi.</span>';
    else
        $msg = '<span class="sukses">Kode captcha Anda benar.</span>';
}

?>

<html>
    <head>
        <title>Captcha Sederhana - Script PHP</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        <style type="text/css">
            body {
                margin: 20px;
                font-size: 15px
            }
            a {
                text-decoration: none
            }
            .error {
                background: #ff0000;
                padding: 5px 8px;
                color: #fff
            }
            .sukses {
                background: #46ab4a;
                padding: 5px 8px;
                color: #fff
            }
        </style>
    </head>

    <body>
        <h1>Captcha Sederhana - Script PHP</h1>

        <form name="form" method="post" action="">
            <?=isset($msg) ? $msg.'<br/><br/>' : ''?>

            <label><strong>Ketik kode Captcha:</strong></label><br/>
            
            <input type="text" name="captcha" />
            <p><br /><img src="captcha.php?rand=<?=rand();?>" id="captcha_image" width="150" /></p>
            
            <p>Sulit membaca captcha? <a href='javascript:ulangCaptcha();'>klik disini</a> untuk ulang.</p>
            <input type="submit" name="submit" value="Submit">
        </form>
        
        <br /><br/>

        <script>
            function ulangCaptcha()
            {
                const img = document.images['captcha_image'];
                img.src = img.src.substring(0,img.src.lastIndexOf("?"))+"?rand="+Math.random() * 1000;
            }
        </script>
    </body>
</html>


Berhubung script captchanya menggunakan font monofont.ttf, maka untuk script lengkapnya bisa kalian download di GitHub saya melalui link berikut ini:

https://github.com/andspdev/simple-captcha


Dan jika sudah selesai, maka untuk tampilan uji coba dari script captcha yang diatas beserta index.php nya, akan seperti gambar dibawah ini:

Cara Membuat Captcha Sederhana Dengan Script PHP

Gimana? mudahkan untuk membuat captchanya. Jika sudah membuat, kalian silahkan mencoba untuk menginputkan kode captcha yang sesuai dengan gambar dan tidak sesuai. Maka, jika kode yang diinputkan tidak sesuai akan keluar pesan error dan jika diinputkan kode yang sesuai maka keluar pesan sukses.

Mungkin sampai disini saja artikel tutorial dari saya mengenai membuat captcha sederhana menggunakan script php. Jika saya ada salah kata atau salah pengetikan, saya mohon maaf. Sekian dan terima kasih.

Selamat mencoba!

Previous Post Next Post