Registrasi dan Verifikasi Melalui Email dengan PHP Part 1 - Mari Belajar Coding

22 Februari 2019

Registrasi dan Verifikasi Melalui Email dengan PHP Part 1


Registrasi dan Verifikasi Melalui Email dengan PHP

Pernahkah teman-teman mendaftar sebuah website dan diharuskan untuk verifikasi email sebelum melakukan login ke website tersebut? Nah, pada kesempatan ini kita akan belajar bagaimana cara membuat registriasi dan verifikasi email dengan PHPMailer sebagai library send email. 

Registrasi dan Verifikasi Email dengan PHP

1. Download library PHPMailer yang akan kita gunakan sebagai alat bantu kirim email. Silahkan baca disini cara download dan install PHPMailer.

2. Buat tabel user untuk menyimpan data user yang telah terdaftar.
CREATE TABLE `users` (
`id_users` int(11) NOT NULL,
`username` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`password` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`nama` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`email` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`no_hp` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`token` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`aktif` enum('1','0') COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

ALTER TABLE `users`
ADD PRIMARY KEY (`id_users`);
COMMIT;
ALTER TABLE `users`
MODIFY `id_users` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

3. Buat file koneksi.php untuk menghubungkan aplikasi dengan database.

<?php
    $koneksi = mysqli_connect("localhost","root","","pendaftaran");
     
    if (mysqli_connect_errno()){
        echo "Koneksi database gagal : " . mysqli_connect_error();
    }
?>

4. Buat file login.php.

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Mari Belajar Coding</title>
  <meta name="author" content="https://www.maribelajarcoding.com/">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
  <br>
  <div class="row">
    <div class="col-md-4"></div>
    <div class="col-md-4">
      <div class="panel panel-default">
          <div class="panel-heading" align="center">Login</div>
          <div class="panel-body">
            <?php
              session_start();
              //jika sudah login maka akan dialihkan ke home
               if (!empty($_SESSION['login'])) {
                    header("Location:index.php");
                  }                  
               include "koneksi.php";
              if (isset($_POST['login'])) {
                  $Username=$_POST['Username'];
                  $Password=$_POST['Password'];
                  //cek user terdaftar dan aktif
                   $sql_cek=mysqli_query($koneksi,"SELECT * FROM users WHERE username='".$Username."' AND password='".$Password."' AND aktif='1'") or die(mysqli_error($koneksi));
                   $r_cek=mysqli_fetch_array($sql_cek);
                   $jml_data=mysqli_num_rows($sql_cek);
                   if ($jml_data>0) {
                    //buat session login dan redirect ke halaman utama
                    $_SESSION['login']=md5($r_cek['username']);
                    $_SESSION['username']=$r_cek['username'];
                    $_SESSION['nama']=$r_cek['nama'];
                     header("Location:index.php");
                   }else{
                    //data tidak di temukan
                     echo '<div class="alert alert-warning">
                         Username dan Password anda salah!
                        </div>';
                   }
                }

            ?>
            <form class="form-horizontal" method="POST">
              <div class="form-group">
                <label class="control-label col-sm-3" for="Username">Username:</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" id="Username" name="Username">
                </div>
              </div>
              <div class="form-group">
                <label class="control-label col-sm-3" for="Password">Password:</label>
                <div class="col-sm-9">          
                  <input type="password" class="form-control" id="Password" name="Password">
                </div>
              </div>
              <div class="form-group">        
                <div class="col-sm-offset-3 col-sm-9">
                  <button type="submit" name="login" class="btn btn-primary btn-block">Login</button>
                </div>
              </div>
            </form>
            Tidak punya akun? <a href="register.php">Register</a>
          </div>
        </div>      
    </div>
  </div>
</div>
</body>
</html>


5. Buat file register.php

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Mari Belajar Coding</title>
  <meta name="author" content="https://www.maribelajarcoding.com/">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
  <br>
  <div class="row">
    <div class="col-md-3"></div>
    <div class="col-md-6">
      <div class="panel panel-default">
          <div class="panel-heading" align="center">Daftar</div>
          <div class="panel-body">
            <?php
              include "koneksi.php";
              if (isset($_POST['daftar'])) {
                  //ambil data dari form   
                  $Username=$_POST['Username'];
                  $Password=$_POST['Password'];
                  $Nama=$_POST['Nama'];
                  $Email=$_POST['Email'];
                  $Telepon=$_POST['Telepon'];
                  //buat token
                  $token=hash('sha256', md5(date('Y-m-d'))) ;
                  //cek user terdaftar
                  $sql_cek=mysqli_query($koneksi,"SELECT * FROM users WHERE email='".$Email."'");
                  $r_cek=mysqli_num_rows($sql_cek);
                  if ($r_cek>0) {
                    echo '<div class="alert alert-warning">
                            Email anda sudah pernah terdaftar!
                          </div>';
                  }else{
                    //jika data kosong maka insert ke tabel;
                    //aktif =0 user belum aktif
                    $insert=mysqli_query($koneksi,"INSERT INTO users(username,password,nama,email,no_hp,token,aktif) VALUES('".$Username."','".$Password."','".$Nama."','".$Email."','".$Telepon."','".$token."','0')");
                    //include kirim email
                    include("mail.php");

                    if ($insert) {
                        echo '<div class="alert alert-success">
                            Pendaftaran anda berhasil, silahkan cek email anda untuk aktifasi. 
                            <a href="login.php">Login</a>
                          </div>';
                    }

                  }                  
              }

            ?>
            <form class="form-horizontal" method="POST">
              <div class="form-group">
                <label class="control-label col-sm-3" for="Username">Username:</label>
                <div class="col-sm-9">
                  <input type="text" class="form-control" id="Username" name="Username">
                </div>
              </div>
              <div class="form-group">
                <label class="control-label col-sm-3" for="Password">Password:</label>
                <div class="col-sm-9">          
                  <input type="password" class="form-control" id="Password" name="Password">
                </div>
              </div>
              <div class="form-group">
                <label class="control-label col-sm-3" for="Nama">Nama:</label>
                <div class="col-sm-9">          
                  <input type="text" class="form-control" id="Nama" name="Nama">
                </div>
              </div>
              <div class="form-group">
                <label class="control-label col-sm-3" for="Email">Email:</label>
                <div class="col-sm-9">          
                  <input type="text" class="form-control" id="Email" name="Email">
                </div>
              </div>
              <div class="form-group">
                <label class="control-label col-sm-3" for="Telepon">Telepon:</label>
                <div class="col-sm-9">          
                  <input type="text" class="form-control" id="Telepon" name="Telepon">
                </div>
              </div>
              <div class="form-group">        
                <div class="col-sm-offset-3 col-sm-9">
                  <button type="submit" name="daftar" class="btn btn-primary btn-block">Daftar</button>
                </div>
              </div>
            </form>
           
          </div>
        </div>      
    </div>
  </div>
</div>
</body>
</html>


Registrasi dan Verifikasi Melalui Email dengan PHP

6. Buat file mail.php, file ini akan diaktifkan ketika user mendaftar di halaman register.php. Ganti username email dan pasword email yang akan kamu gunakan sebagai email pengirim.

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require "vendor/autoload.php";
$mail = new PHPMailer(true);
$mail->SMTPDebug = 0;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
//ganti dengan email dan password yang akan di gunakan sebagai email pengirim
$mail->Username = 'Emailpengirim@gmail.com';
$mail->Password = 'passwordPengirim';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
//ganti dengan email yg akan di gunakan sebagai email pengirim
$mail->setFrom('Emailpengirim@gmail.com', 'Nama Pengirim');
$mail->addAddress($_POST['Email'], $_POST['Nama']);
$mail->isHTML(true);
$mail->Subject = "Aktivasi pendaftaran Member";
$mail->Body = "Selemat, anda berhasil membuat akun. Untuk mengaktifkan akun anda silahkan klik link dibawah ini.
 <a href='http://localhost/activation.php?t=".$token."'>http://localhost/activation.php?t=".$token."</a>  ";
$mail->send();
echo 'Message has been sent';


Tutorial registrasi dan verifikasi email dengan PHP Part 1 sampai disini. Untuk selanjutnya pada part 2 kita akan melanjutkan cara aktivasi user yang telah terdaftar.
Registrasi dan Verifikasi Melalui Email dengan PHP Part 2



Related Search:
  • Registrasi dan aktivasi melalui email dengan php
  • Registrasi dan verifikasi melalui email dengan php

Related Posts

Load comments