Registrasi dan verifikasi melalui email dengan PHP

Pernah mendaftar sebagai anggota di suaatu situs? Dimana situs tersebut mengirimkan link berupa kode acak ke email anda, isi pesannya biasanya ‘Apabila ingin mengaktifkan akun anda, silahkan klik link di bawah ini’. Itulah yang disebut dengan verifikasi alamat email yang sangat berguna untuuk mengetahui apakah email yang diinputkan pendaftar adalah email-emailan (email palsu) atau email beneran. kalau link tersebut di klik, maka pendaftar baru di nyatakan sah sebagai anggota di situs tersebut.

1. Download PHP Mailer yang akan kita gunakan sebagai alat bantu kirim email

2. Buat tabel users untuk menyimpan data users 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>
Tutorial email verifikasi
Tutorial email verifikasi
6. Buat file mail.php, file ini akan di aktifkan ketika user mendaftar di halaman register.php. Ganti username email dan password email yang akan kamu gunakan sebagai email pengirim.
<?phpuse 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';

Setelah users melakukan pendaftaran, system akan mengirim aktivasi ke email. user sendiri tidak dapat login sebelum melakukan aktivasi dari email yang telah dikirim oleh system.

1. Buat file activation.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" align="center">  <br>    <?php         include "koneksi.php";         $token=$_GET['t'];         $sql_cek=mysqli_query($koneksi,"SELECT * FROM users WHERE token='".$token."' and aktif='0'");         $jml_data=mysqli_num_rows($sql_cek);         if ($jml_data>0) {             //update data users aktif             mysqli_query($koneksi,"UPDATE users SET aktif='1' WHERE token='".$token."' and aktif='0'");             echo '<div class="alert alert-success">                        Akun anda sudah aktif, silahkan <a href="login.php">Login</a>                        </div>';         }else{                    //data tidak di temukan                     echo '<div class="alert alert-warning">                        Invalid Token!                        </div>';                   }    ?></div></body></html>
2. Buat file index.php untuk mengarahkan users yang telah berhasil login
<!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><?php  session_start();  if (empty($_SESSION['login'])) {    header("Location:login.php");  }?><nav class="navbar navbar-inverse">  <div class="container-fluid">    <div class="navbar-header">      <a class="navbar-brand" href="#">MariBelajarCoding</a>    </div>    <ul class="nav navbar-nav">      <li class="active"><a href="#">Home</a></li>         </ul>     <ul class="nav navbar-nav navbar-right">      <li><a href="logout.php"><span class="glyphicon glyphicon-log-out"></span> Sign Out</a></li>    </ul>  </div></nav>  <div class="container">  <h3>Selamat Datang, <?=$_SESSION['nama']?></h3> </div></body></html>

Source Code : http://email-verifikasi.zip

Demo : https://syncrome.biz.id/email-verifikasi

selanjutnya nanti kita akan menambahkan link lupa password.

Baca Juga : Cara Kirim Email di localhost dengan PHP

Tidak ada komentar:

Silahkan berkomentar yang sesuai dengan topik, Mohon Maaf komentar dengan nama komentator dan isi komentar yang berbau P*RN*GRAFI, OB*T, H*CK, J*DI, Perkataan Kasar dan komentar yang mengandung link aktif, Tidak akan ditampilkan!

Diberdayakan oleh Blogger.