Membuat Form Registrasi Dengan Captcha

Membuat Form Registrasi Dengan Captcha

Pada kesempatan kali ini kita akan belajar mengenai bahasa pemrograman PHP yaitu dengan membuat Form Registrasi dengan Captcha, Salah satu fungsi dari Captcha sendiri yaitu untuk keamanan pada saat proses registrasi suatu program aplikasi sehingga aplikasi tidak mudah disalahgunakan dengan mudah oleh orang lain, oleh karena itu pentingnya Captcha dalam suatu program aplikasi sehingga inilah menjadi ide bagi saya untuk membuat postingan artikel mengenai From Registrasi dengan Captcha. 

Sebenarnya dalam membuat Form Registrasi dengan menggunakan Captcha hampir sama dengan proses input data yang lainnya dikarenakan Form registrasi ini juga menggunakan proses CRUD atau Create, Update dan Delete yang membedakan hanyalah pada Captcha.

Langkah Membuat Form Registrasi Dengan Captcha
  1. Buka Text Editor pada komputer anda
  2. Kemudian buatlah sebuah database dengan menggunakan MySQL dengan nama "latihan" dengan type database seperti berikut ini.
  3. Setelah membuat database MySQL selanjutnya yaitu membuat koneksi untuk menghubungkan database MySQL dengan PHP.
    <?php

    $conn = new PDO("mysql:host=localhost;dbname=latihan", 'root', '');

    ?>
  4. Buatlah sebuah halaman Index.PHP, seperti berikut ini.
    <?php
    include('header.php');
    ?>

    <body>
    <br><br>

    <form class="form-horizontal" method="POST" action="contact_query.php">

        <p class="full_name">
            <input type="text" name="full_name" id="full_name" placeholder="" autofocus="autofocus" required/>
            <label for="full_name">Your Name</label>
        </p>
           
        <p class="email">
            <input type="email" name="email" id="email" placeholder="" required/>
            <label for="email">Your Email Address</label>
        </p>   
       
        <p class="message">
            <textarea name="message" placeholder="" required></textarea>
            <label for="message">Your Message</label>
        </p>
       
    <div class="control-group" style="float:left; margin-left:-185px;">
        <div class="controls">
       
        <img src="generatecaptcha.php?rand=<?php echo rand(); ?>" name="captcha_img" id='image_captcha' >
        <a href='javascript: refreshing_Captcha();'><i class="icon-refresh icon-large"></i></a>
        <script language='JavaScript' type='text/javascript'>
            function refreshing_Captcha()
            {
                var img = document.images['image_captcha'];
                img.src = img.src.substring(0,img.src.lastIndexOf("?"))+"?rand="+Math.random()*1000;
            }
        </script>
        </div>
    </div>

    <br />
    <br />
    <br />

    <div class="control-group" style="margin-left:-181px;">
        <div class="controls">
            <input id="code" name="code_confirmation" type="text" placeholder="Enter the Code Above" required></td>
        </div>
    </div>
    <div class="control-group" style="margin-left:-181px;">
        <div class="controls">
            <button type="submit" name="send_message" class="btn btn-primary"><i class="icon-ok icon-large"></i> Submit</button>
        </div>
    </div>

    </form>

    </body>
    </html>
  5. Setelah membuat halaman index.PHP, langkah selanjutnya yaitu membuat script captcha untuk mengamankan proses registrasi. Gunakan script berikut ini.
    <?php

    session_start();
    //Settings: You can customize the captcha here
    $image_width = 280;
    $image_height = 40;
    $characters_on_image = 6;
    $font = './monofont.ttf';

    //The characters that can be used in the CAPTCHA code.
    //avoid confusing characters (l 1 and i for example)
    $possible_letters = '23456789bcdfghjkmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ';
    $random_dots = 30;
    $random_lines = 20;
    $captcha_text_color="0x142864";
    $captcha_noice_color = "0x142864";

    $code = '';


    $i = 0;
    while ($i < $characters_on_image) {
    $code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1);
    $i++;
    }


    $font_size = $image_height * .75;
    $image = @imagecreate($image_width, $image_height);


    /* setting the background, text and noise colours here */
    $background_color = imagecolorallocate($image, 255, 255, 255);

    $arr_text_color = hexrgb($captcha_text_color);
    $text_color = imagecolorallocate($image, $arr_text_color['red'],
            $arr_text_color['green'], $arr_text_color['blue']);

    $arr_noice_color = hexrgb($captcha_noice_color);
    $image_noise_color = imagecolorallocate($image, $arr_noice_color['red'],
            $arr_noice_color['green'], $arr_noice_color['blue']);


    /* generating the dots randomly in background */
    for( $i=0; $i<$random_dots; $i++ ) {
    imagefilledellipse($image, mt_rand(0,$image_width),
     mt_rand(0,$image_height), 2, 3, $image_noise_color);
    }


    /* generating lines randomly in background of image */
    for( $i=0; $i<$random_lines; $i++ ) {
    imageline($image, mt_rand(0,$image_width), mt_rand(0,$image_height),
     mt_rand(0,$image_width), mt_rand(0,$image_height), $image_noise_color);
    }


    /* create a text box and add 6 letters code in it */
    $textbox = imagettfbbox($font_size, 0, $font, $code);
    $x = ($image_width - $textbox[4])/2;
    $y = ($image_height - $textbox[5])/2;
    imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code);


    /* Show captcha image in the page html page */
    header('Content-Type: image/jpeg');// defining the image type to be shown in browser widow
    imagejpeg($image);//showing the image
    imagedestroy($image);//destroying the image instance
    $_SESSION['code_confirmation'] = $code;

    function hexrgb ($hexstr)
    {
      $int = hexdec($hexstr);

      return array("red" => 0xFF & ($int >> 0x10),
                   "green" => 0xFF & ($int >> 0x8),
                   "blue" => 0xFF & $int);
    }
    ?>
  6. Buat juga script simpan untuk menyimpan data yang telah kita input.
    <?php
    session_start();
    include ('db.php');

    if(isset($_POST['send_message'])) {

    $full_name = $_POST['full_name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $code_confirmation = $_POST['code_confirmation'];

    $query_trapper = $conn->prepare('SELECT * FROM tbl_contact WHERE email = ?');
    $query_trapper->execute(array($email));
    $trapper = $query_trapper->rowCount();

    if ($trapper > 0) {
        echo "<script>alert('Email already used!'); window.location='index.php'</script>";
        echo "<script>javascript:self-history.back() </script>;";
    }elseif(strcmp($_SESSION['code_confirmation'], $_POST['code_confirmation']) != 0) {
        echo "<script>alert('The captcha code does not match!!'); window.location='index.php'</script>";
        echo "<script>javascript:self-history.back() </script>;";
    } else {

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $insert_query = "INSERT INTO tbl_contact (full_name, email, message, code_confirmation)
    VALUES (?, ?, ?, ?)";

    $insert = $conn->prepare($insert_query);
    $insert->execute(array($full_name, $email, $message, $code_confirmation));

    echo "<script>alert('Successfully send your message!'); window.location='index.php'</script>";
    }
    }
    ?>
  7. Setelah membuat file-file utama seperti yang diatas selanjutnya yaitu dengan menambahkan style halaman agar lebih menarik untuk dilihat dan dinikmati.
  8. Simpan semua file tadi pada sebuah folder yang sama.
  9. Selamat mencoba
Demikian panduan mengenai Membuat Form Registrasi Dengan Captcha semoga dapat bermanfaat bagi anda dan dapat digunakan sebagaimana mestinya, terima kasih.
Reactions

Post a Comment

0 Comments