Membuat aplikasi registrasi dengan aktivasi email menggunakan PHP.

Antefer.web.id
0 Comments
Ketika mendaftar untuk website, forum, membuat email dan lain-lain. pertama-tama adalah melakukan registrasi dan hasil registrasi akan dikirim email sebagai konfirmasi registrasi untuk melakukan pengaktifan akun. metode ini sudah banyak digunakan hampir diseluruh website.
Berikut sedikit tutorial dalam membuat Aplikasi registrasi dengan aktivasi email menggunakan PHP. Agar aplikasi ini dapat berjalan dengan baik, maka dibutuhkan beberapa syarat yaitu, server suport PHP mailer, tentunya harus kondisi online dan kalau ada warning ganti setting php.ini display_error = off. Langkah-langkah sebagai berikut :

1 Membuat struktur database
diperlukan database untuk menyimpan informasi user :
CREATE TABLE IF NOT EXISTS `anggota` (
  `id_anggota` int(10) NOT NULL AUTO_INCREMENT,
  `Username` varchar(50) NOT NULL,
  `Email` varchar(50) NOT NULL,
  `Password` varchar(10) NOT NULL,
  `Aktivasi` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id_anggota`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;

2. Membuat database koneksi dan beberapa konfigurasi untuk mengirim email dan aktivasi :
<?php

/*setting untuk koneksi ke database */
DEFINE('DATABASE_USER', 'username_database');
DEFINE('DATABASE_PASSWORD', 'password_database');
DEFINE('DATABASE_HOST', 'localhost');
DEFINE('DATABASE_NAME', 'nama_database');
/*setting default time zone untuk dapat mengirimm email */
date_default_timezone_set('UTC');

//menetukan pengirim email
define('EMAIL', 'sesuatu@webanda.com');

/*menentuk root url dari script php yang dibuat http://website.com atau http://website.com/Folder/ */
DEFINE('WEBSITE_URL', 'http://localhost/registrasi');


// membuat koneksi ke database
$dbc = @mysqli_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD,
    DATABASE_NAME);

if (!$dbc) {
    trigger_error('koneksi tidak sukses: ' . mysqli_connect_error());
}

?>

3. Membuat Form isian registrasi :
<form action="index.php" method="post" class="registration_form">
  <fieldset>
    <legend>From Registrasi </legend>

    <p>Buat akun baru <span style="background:#EAEAEA none repeat scroll 0 0;line-height:1;margin-left:210px;;padding:5px 7px;">Apakah sudah terdaftar? <a href="login.php">Log in</a></span> </p>
    
    <div class="elements">
      <label for="name">Nama :</label>
      <input type="text" id="name" name="name" size="25" />
    </div>
    <div class="elements">
      <label for="e-mail">E-mail :</label>
      <input type="text" id="e-mail" name="e-mail" size="25" />
    </div>
    <div class="elements">
      <label for="Password">Password:</label>
      <input type="password" id="Password" name="Password" size="25" />
    </div>
    <div class="submit">
     <input type="hidden" name="formsubmitted" value="TRUE" />
      <input type="submit" value="Register" />
    </div>
  </fieldset>
</form>
</body>

4. Membuat aturan-aturan dalam pengisian form registrasi, membuat link aktivasi dan mengirim email konfirmasi.
<?php
    session_start();
    if(isset($_SESSION['Username'])){
     header("Location: page.php");
 }
 
include ('database_connection.php');
if (isset($_POST['formsubmitted'])) {
    $error = array();//buat array untuk menampung pesan eror  
    if (empty($_POST['name'])) {//jika variabel nama kosong 
        $error[] = 'Silahkan masukkan nama ';//tambahkan ke array sebagai pesan error
    } else {
        $name = $_POST['name'];//jika ada maka masukan isi dari variabel nama
    }

    if (empty($_POST['e-mail'])) {
        $error[] = 'Please Enter your Email ';
    } else {


        if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $_POST['e-mail'])) {
           //regular expression untuk validasi email
            $Email = $_POST['e-mail'];
        } else {
             $error[] = 'Email tidak valid';
        }


    }


    if (empty($_POST['Password'])) {
        $error[] = 'Silahkan masukkan password ';
    } else {
        $Password = $_POST['Password'];
    }


    if (empty($error)) //kirim ke database jika tidak ada eror

    { 

        // memastikan apakah email sudah ada di database atau belum
        $query_verify_email = "SELECT * FROM anggota  WHERE Email ='$Email'";
        $result_verify_email = mysqli_query($dbc, $query_verify_email);
        if (!$result_verify_email) {//if the Query Failed ,similar to if($result_verify_email==false)
            echo ' Terjadi eror pada database ';
        }

        if (mysqli_num_rows($result_verify_email) == 0) { // Jika tidak ada user lain yang teregistrasi telah menggunakan email ini


            // membuat kode aktivasi
            $activation = md5(uniqid(rand(), true));


            $query_insert_user = "INSERT INTO `anggota` ( `Username`, `Email`, `Password`, `Aktivasi`) VALUES ( '$name', '$Email', '$Password', '$activation')";


            $result_insert_user = mysqli_query($dbc, $query_insert_user);
            if (!$result_insert_user) {
                echo 'Query Failed ';
            }

            if (mysqli_affected_rows($dbc) == 1) { //Jika data yang dimasukan ke database sukses


                // kirim email
    $message = "Terimakasih sudah mencoba demo "Membuat aplikasi registrasi dengan aktivasi email menggunakan PHP." nn";
    $message .= " Untuk aktivasi contoh akun anda, silahkan klik link di bawah ini:nn";
                $message .= WEBSITE_URL . '/activate.php?email=' . urlencode($Email) . "&key=$activation";
                mail($Email, 'Registration Confirmation', $message, 'From: sesuatu@webanda.com');

                


                // Jika registrasi berhasil dan email telah terkirim
                echo '<div class="success">Terimakasih telah melakukan registrasi di demo ini, sebuah email telah dikirim ke '.$Email.' Silahkan klik pada link aktivasi untuk mengaktivkan account anda </div>';


            } else { // Jika terjadi kesalahan maka : 
                echo '<div class="errormsgbox">Tidak dapat melakukan registrasi karena kesalahan system</div>';
            }

        } else { // email addres telah terdaftar
            echo '<div class="errormsgbox" >email yang anda masukkan telah teregistrasi
</div>';
        }

    } else {//Jika terdapat kesalahan pada array error maka tampilkan
        
        

echo '<div class="errormsgbox"> <ol>';
        foreach ($error as $key => $values) {
            
            echo ' <li>'.$values.'</li>';


       
        }
        echo '</ol></div>';

    }
  
    mysqli_close($dbc);//Tutup koneksi database

}



?>

5. membuat program PHP untuk melakuka pengaktifan akun jika link aktivasi yang dikirim dalam email di klik :
<?php
include ('database_connection.php');

if (isset($_GET['email']) && preg_match('/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/', $_GET['email']))
{
    $email = $_GET['email'];
}
if (isset($_GET['key']) && (strlen($_GET['key']) == 32))
{
    $key = $_GET['key'];
}


if (isset($email) && isset($key))
{

    // Update databse untuk menset isi aktivasi ke "NULL" 

    $query_activate_account = "UPDATE anggota SET Aktivasi=NULL WHERE(Email ='$email' AND Aktivasi='$key')LIMIT 1";

   
    $result_activate_account = mysqli_query($dbc, $query_activate_account) ;

   
    if (mysqli_affected_rows($dbc) == 1)//Jika proses update telah berhasil
    {
    echo '<div class="success">Akun anda telah aktive, untuk masuk klik <a href="login.php">Log in</a></div>';

    } else
    {
        echo '<div class="errormsgbox">'.$email .' , ' . $key .' Ooops akun anda tidak dapat diaktivasi. silahkan lakukan registrasi ulang atau hubungi administrator.</div>';

    }

    mysqli_close($dbc);

} else {
        echo '<div class="errormsgbox">Terjadi kesalahan.</div>';
}


?>

6. Membuat Form Login jika user telah terkativasi, dan ingin masuk ke halaman member:
<form action="login.php" method="post" class="registration_form">
  <fieldset>
    <legend>Form Login  </legend>

    <p>Masukkan username dan password anda  </p>
    
    <div class="elements">
      <label for="name">Email :</label>
      <input type="text" id="e-mail" name="e-mail" size="25" />
    </div>
  
    <div class="elements">
      <label for="Password">Password:</label>
      <input type="password" id="Password" name="Password" size="25" />
    </div>
    <div class="submit">
     <input type="hidden" name="formsubmitted" value="TRUE" />
      <label>Jika belum memiliki akun <a href="index.php">Buat Akun</a></label><input type="submit" value="Login" />
    </div>
  </fieldset>
</form>

7. Membuat program PHP untuk melakuka proses login ke halaman member :
<?php

include ('database_connection.php');
if (isset($_POST['formsubmitted'])) {
    // Mulai session
session_start();
    $error = array();//buat array untuk simpan pesan kesalahan
  

    if (empty($_POST['e-mail'])) {//jika email kosonh
        $error[] = 'Silahkan isi email anda ';
    } else {


        if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $_POST['e-mail'])) {
           
            $Email = $_POST['e-mail'];
        } else {
             $error[] = 'Email anda tidak valid  ';
        }


    }


    if (empty($_POST['Password'])) {
        $error[] = 'Silahkan masukkan password anda ';
    } else {
        $Password = $_POST['Password'];
    }


       if (empty($error))//Jika array kosong, berarti tidak ada kesalahan
    { 

       

        $query_check_credentials = "SELECT * FROM anggota WHERE (Email='$Email' AND password='$Password') AND Aktivasi IS NULL";
   
        

        $result_check_credentials = mysqli_query($dbc, $query_check_credentials);
        if(!$result_check_credentials){//Jika query gagal
            echo 'Query Failed ';
        }

        if (@mysqli_num_rows($result_check_credentials) == 1)//Jika query berhasil
        { 

           


            $_SESSION = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC);//Masukkan hasil ke session
           
            header("Location: page.php");
          

        }else
        { 
            
            $msg_error= 'Mungkin akun anda belum dikativasi atau alamat Email/password salah';
        }

    }  else {
        
        

echo '<div class="errormsgbox"> <ol>';
        foreach ($error as $key => $values) {
            
            echo ' <li>'.$values.'</li>';


       
        }
        echo '</ol></div>';

    }
    
    
    if(isset($msg_error)){
        
        echo '<div class="warning">'.$msg_error.' </div>';
    }
    
    mysqli_close($dbc);

} 
?>

7. Membuat halaman member jika berhasil melakukan proses login untuk halaman ini sesuai dengan kebutuhan anda, pertama harus dicek apakah username sudah login tau belum jika belum arahkan ke halaman login :
<?php
 ob_start();
    session_start();
    if(!isset($_SESSION['Username'])){
         header("Location: login.php");
    }
    
    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Member Area </title>
<style type="text/css">
 .success {
 border: 1px solid;
 margin: 0 auto;
 padding:10px 5px 10px 60px;
 background-repeat: no-repeat;
 background-position: 10px center;
     font-weight:bold;
     width:450px;
     color: #4F8A10;
 background-color: #DFF2BF;
 background-image:url('images/success.png');
     
}



</style>
</head>

<body>
<div class="success">Selamat datang , <?php echo $_SESSION['Username'] ; ?><br /><a href="logout.php">Logout</a></div>
</body>
</html>

8. Membuat program PHP untuk proses logout, dimana cek session username apakah ada, kalau ada session dihapus dan arahkan ke index.php:
<?php
// Inialize session
session_start();

if(isSet($_SESSION['Username']))
{
  unset($_SESSION['Username']);

  header("Location: index.php");
exit;
}else{
  header('Location: index.php');
}
?>
Note : Pastikan fungsi PHP  mail() diserver ada dan berfungsi, jika tidak email tidak akan terkirim.

Untuk melihat hasil dari program registrasi diatas dan download sourcecode dapat dilihat dilink di bawah:







Demikian tutorial mengenai pembuatan registrasi dengan validasi email menggunakan PHP, diatas merupakan penggalan dari program keseluruhan.
Jika di server fungsi PHP mail() tidak ada dan tida berfungsi, dapat digunakan PHPMailer sebagai alternatif lain untuk mengirim email, berikut referensi tentang mengirim email menggunakan php dengan PHPmailer.

Posting Komentar

0Komentar

Posting Komentar (0)

#buttons=(Ok, Go it!) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Ok, Go it!