Banjarnegara, Jawa Tengah, Indonesia.
Tutorial Membuat Form Login dan Register dengan PHP dan MySQL

Membuat Form Login dan Register dengan PHP dan MySQL – Halo berjumpa kembali bersama saya yang pada kesempatan kali ini kita akan membuat fasilitas login, register, serta dilengkapi dengan fitur remember me atau ingat saya dan logout menggunakan PHP dan MySQL.
Fitur tersebut sering kita jumpai pada aplikasi yang memerlukan autentikasi untuk masuk ke sistem baik itu sistem user dan sistem untuk administrator. Tentu keduanya memiliki fitur yang berbeda. Lalu, bagaimana cara membuat form login dan register dengan PHP dan MySQL? Langsung saja simak langkah-langkah berikut.
Cara Membuat Form Login dan Register
Dalam tutorial cara membuat form login dan register dengan PHP dan MySQL database, kita akan mencoba membuat studi kasus halaman pendaftaran mahasiswa. Silahkan Anda buat terlebih dahulu database baru dengan nama kampus lalu buat table dengan nama mahasiswa dengan struktur seperti berikut.
CREATE TABLE `mahasiswa` (
`id` int(10) NOT NULL,
`email` varchar(30) NOT NULL,
`password` varchar(256) NOT NULL,
`nama_lengkap` varchar(30) NOT NULL,
`nim` varchar(16) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;Setelah bahan untuk membuat form login dan register dengan PHP dan MySQL telah dibuat atau dilengkapi, berikutnya silahkan ikuti langkah-langkah membuat form login dan register dengan PHP dan MySQL.
Membuat Database
Untuk membuat koneksi database, agar lebih sederhana kita menggunakan MySQLi dengan teknik MySQLi OOP. Silahkan buat file baru dengan nama connect.php, lalu copy dan pastekan kode PHP berikut ke dalamnya dan save.
<?php
session_start();
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'kampus';
$connect = new mysqli($db_host, $db_user, $db_pass, $db_name);
if($connect->errno) {
echo $connect->error;
exit;
}
?>Pastikan isi detail database Anda hanya di baris ke 7 hingga baris ke 10. Khusus untuk variable $db_pass bersifat opsional. Defaultnya dikosongi jika masih menggunakan XAMPP atau Laragon.
Membuat Halaman Index
Langkah berikutnya adalah membuat halaman index yang berfungsi sebagai halaman yang pertama kali diakses setelah proses login berhasil. Silahkan buat file baru dengan nama index.php, lalu copy dan pastekan kode berikut ke dalamnya dan save.
<?php
require_once 'connect.php';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo (isset($_SESSION['is_login']) || isset($_COOKIE['_logged']) ? 'Beranda | '.$_SESSION['is_login'] : 'Beranda'); ?></title>
</head>
<body>
<p>
<?php
echo (isset($_SESSION['is_login']) || isset($_COOKIE['_logged']) ? 'Hi, '.$_SESSION['is_login'].' - <a href="logout.php">KELUAR >></a>' : 'Silahkan <a href="login.php">LOGIN</a> | <a href="register.php">REGISTER</a>');
?>
</p>
</body>
</html>Jika pengguna mengakses halaman index dalam keadaan belum login maka akan tampil menu Silahkan LOGIN | REGISTER dan jika sudah login akan muncul menu seperti Hi, Afid Arifin – KELUAR >>.
Membuat Halaman Login
Langkah berikutnya adalah membuat halaman login sederhana. Silahkan buat file baru dengan nama login.php, lalu copy dan pastekan kode PHP berikut ke dalamnya dan save.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login - AFIDARIFIN.COM</title>
</head>
<body>
<?php
require_once 'connect.php'; // koneksi ke database.
/**
* Cegah akses ke halaman login saat sedang login.
*/
if(isset($_SESSION['is_login']) || isset($_COOKIE['_logged'])) {
header('location: /');
}
if(isset($_POST['submit'])) {
/**
* Mendapatkan data dari formulir login.
* Data: Email, Kata Sandi, dan Ingat Saya.
*/
$email = strip_tags($_POST['email']);
$password = strip_tags($_POST['password']);
$remember = (!empty($_POST['remember_me']) ? $_POST['remember_me'] : '');
if(empty($email) || empty($password)) {
/**
* Cek apakah formulir telah terisi data.
*/
echo '<b>Warning!</b> Silahkan isi semua data yang diperlukan.';
} elseif(count((array) $connect->query('SELECT email FROM mahasiswa WHERE email = "'.$email.'"')->fetch_array()) == 0) {
/**
* Cek jika email tidak terdaftar.
*/
echo '<b>Warning!</b> Email tidak terdaftar.';
} else {
/**
* Mengecek data mahasiswa.
*/
$mahasiswa = $connect->query('SELECT password, nama_lengkap FROM mahasiswa')->fetch_assoc();
if(password_verify($password, $mahasiswa['password'])) {
$_SESSION['is_login'] = $mahasiswa['nama_lengkap'];
/**
* Cek apakah tombol remember me diklik.
*/
if($remember) {
if(!isset($_COOKIE['is_logged'])) {
/**
* Atur cookie selama 1 hari.
* Rumus: 60 * 60 * 24 = 1 hari.
*/
setcookie('_logged', substr(md5($email), 0, 10), time() + (60 * 60 * 24), '/');
}
}
header('location: /'); // Alihkan ke halaman index.
} else {
echo '<b>Warning!</b> Kata sandi salah.';
}
}
}
?>
<form method="POST">
<input type="email" name="email" value="" autocomplete="off" placeholder="Email" required>
<br/>
<input type="password" name="password" value="" autocomplete="off" placeholder="Kata sandi" required>
<br/>
<input type="checkbox" name="remember_me"> Ingat Saya
<br/>
<input type="submit" name="submit" value="Login">
</form>
</body>
</html>Penjelasan mengenai proses login yang terjadi telah saya beri komentar di dalam kode PHP-nya. Halaman login masih sangat sederhana dan belum dilengkapi dengan validasi yang memadai karena tujuan kita hanya belajar.
Membuat Halaman Logout
Cara membuat fitur logout dengan PHP terbilang cukup sederhana. Silahkan buat file baru dengan nama logout.php, lalu copy dan pastekan kode berikut ke dalamnya dan save.
<?php
require_once 'connect.php';
if(isset($_SESSION['is_login']) || isset($_COOKIE['_logged'])) {
if(session_destroy()) {
setcookie('_logged', null, -(60 * 60 * 24), '/');
header('location: /');
exit;
}
} else {
header('location: /');
}
?>Kode diatas telah saya buatkan secara khusus untuk menghapus sesi atau cookie yang sedang aktif. Kemudian, jika berhasil maka dialihkan ke halaman index.
Membuat Halaman Register
Terakhir, kita membuat halaman untuk memproses pendaftaran akun. Silahkan buat file baru dengan nama register.php, lalu copy dan pastekan kode PHP berikut ke dalamnya dan save.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Register - AFIDARIFIN.COM</title>
</head>
<body>
<?php
require_once 'connect.php'; // Koneksi ke database
/**
* Cegah akses ke halaman login saat sedang login.
*/
if(isset($_SESSION['is_login']) || isset($_COOKIE['_logged'])) {
header('location: /');
}
if(isset($_POST['submit'])) {
/**
* Mendapatkan data dari formulir pendaftaran.
* Data: Email, Kata Sandi, Nama Lengkap, dan NIM.
*/
$email = strip_tags($_POST['email']);
$password = strip_tags($_POST['password']);
$name = strip_tags($_POST['name']);
$nim = strip_tags($_POST['nim']);
if(empty($email) || empty($password) || empty($name) || empty($nim)) {
/**
* Cek apakah formulir telah terisi data.
*/
echo '<b>Warning!</b> Silahkan isi data yang diperlukan.';
} elseif(count((array) $connect->query('SELECT email FROM mahasiswa WHERE email = "'.$email.'" OR nim = "'.$nim.'"')->fetch_array()) > 1) {
/**
* Cek jika email atau NIM telah terdaftar.
*/
echo '<b>Warning!</b> Email atau NIM telah terdaftar.';
} else {
/**
* Memasukkan data ke database.
*/
$insert = $connect->query('INSERT INTO `mahasiswa`(`email`, `password`, `nama_lengkap`, `nim`) VALUES("'.$email.'", "'.password_hash($password, PASSWORD_BCRYPT).'", "'.$name.'", "'.$nim.'")');
if($insert) {
echo 'Pendaftaran berhasil!';
} else {
echo 'Pendaftaran gagal!';
}
}
}
?>
<form method="POST">
<input type="text" name="email" value="" autocomplete="off" placeholder="Email">
<br/>
<input type="password" name="password" value="" autocomplete="off" placeholder="Kata sandi">
<br/>
<input type="text" name="name" value="" autocomplete="off" placeholder="Nama lengkap">
<br/>
<input type="text" name="nim" value="" autocomplete="off" placeholder="NIM">
<br/>
<input type="submit" name="submit" value="Register">
</form>
</body>
</html>Sama seperti membuat halaman login dengan PHP sebelumnya, penjelasan mengenai alur dari proses pendaftar telah saya beri komentar di dalam kode PHP-nya.
Penutup
Silahkan Anda praktekkan langkah demi langkah cara membuat form login dan register dengan PHP MySQL dilengkapi dengan fitur remember me dan logout yang telah saya siapkan di atas. Bagi yang ingin mengunduh source code lengkapnya, bisa Anda download di sini.
Jika masih bingung mengenai cara membuat form login dan register dengan PHP MySQL dan ingin ditanyakan, jangan sungkan untuk ditanyakan di kolom komentar yang tersedia. Sekian dan semoga bermanfaat.



