Cara Membuat Register, Login dan Logout dengan PDO dan MySQL - Salam sejahtera buat teman-teman sekalian, pada postingan kali ini kita akan mencoba membuat sebuah aplikasi sederhana yaitu Register, Login dan Logout yang sederhana tentunya. Ditutorial sebelumnya Cara Membuat Aplikasi CRUD Sederhana Menggunakan PDO dan Bootstrap merupakan hal yang dasar sebelum melangkah ke bagian ini.
Pada umumnya register digunakan untuk menginputkan data, biasanya data diri untuk dapat mengakses suatu halaman tertentu. Login merupakan sebuah form yang biasanya pintu masuk ke halaman tertentu. Dan logout merupakan suatu fungsi script untuk keluar dari halaman tertentu. Berikut langkah Cara Membuat Register, Login dan Logout dengan PDO dan MySQL :
Hal yang pertama adalah membuat koneksi, yaitu script untuk menghubungkan ke database. Nama file config.php
<?php
session_start(); // Digunakan untuk memulai session
$host = "localhost"; // nama host anda
$user = "root"; // username dari host anda
$pass = ""; //password dari host anda
$db = "crud"; // nama database yang anda miliki
try {
$connect = new PDO("mysql:host={$host};dbname={$db}", $user, $pass);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
Langkah selanjutnya, membuat form dan proses registrasinya, disini nama filenya adalah register.php
<?php
error_reporting(0);
include 'config.php';
if(!isset($_SESSION['username'] )== 0) { /* Halaman ini tidak dapat diakses jika belum ada yang login
header('Location: home.php'); */
}
$username = $_POST['username'];
$email = $_POST['email'];
$password = md5($_POST['password']."ALS52KAO09");
$confirmPassword = md5($_POST['confirmPassword']."ALS52KAO09");
if(isset($username, $email, $password, $confirmPassword)) {
if(strstr($email, "@")) {
if($password == $confirmPassword) {
try {
$sql = "SELECT * FROM users WHERE username = :username OR email = :email";
$stmt = $connect->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
$stmt->execute();
}
catch(PDOException $e) {
echo $e->getMessage();
}
$count = $stmt->rowCount();
if($count == 0) {
try {
$sql = "INSERT INTO users SET username = :username, email = :email, password = :password";
$stmt = $connect->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':password', $password);
$stmt->execute();
}
catch(PDOException $e) {
echo $e->getMessage();
}
if($stmt) {
echo "Selamat Anda berhasil Register, anda dapat Login";
}
}else{
echo "Username dan Email sudah pernah digunakan";
}
}else{
echo "Password tidak sama";
}
}else{
echo "Email Tidak Valid";
}
}
?>
<!-- FORM UNTUK REGISTRASI -->
<form action="" method="post">
<table>
<tr>
<td>Username</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>Confirm Password</td>
<td><input type="password" name="confirmPassword"></td>
</tr>
<tr>
<td>
<input type="submit" name="register" value="Register">
<input type="reset" name="reset" value="Reset">
</td>
</tr>
</table>
</form>
Script diatas dapat penjelasannya di PHP Manual, tetap saya sedikit membahasanya.
Pada baris 15 memiliki fungsi untuk mengecek apakah inputan yang dimasukkan memiliki nilai atau tidak dengan menggunakan fungsi isset().
Baris 16 menggunakan fungsi strstr() yang digunakan untuk mencari karakter '@' pada inputan email. Jika tidak ditemukan, maka proses tidak berjalan ke langkah selanjutnya.
Baris 17 digunakan untuk mengetahui apakah password yang dimasukkan sama dengan password yang diulang, jika tidak maka ada pesan yang diberikan. Dan untuk fungsi script lainnya, anda dapat melihatnya di PHP Manual.
Langkah selanjutnya membuat form login dan prosesnya. Disini nama filenya saya berikan nama index.php
<?php
//error_reporting(0);
include 'config.php';
if(!isset($_SESSION['username'] )== 0) {
header('Location: home.php');
}
if(isset($_POST['login'])) {
$username = $_POST['username'];
$password = md5($_POST['password']."ALS52KAO09");
try {
$sql = "SELECT * FROM users WHERE username = :username AND password = :password";
$stmt = $connect->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
$count = $stmt->rowCount();
if($count == 1) {
$_SESSION['username'] = $username;
header("Location: home.php");
return;
}else{
echo "Anda tidak dapat login";
}
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
?>
<!-- FORM LOGIN -->
<form action="" method="post">
<table>
<tr>
<td>Username</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>
<input type="submit" name="login" value="Login">
<input type="reset" name="reset" value="Reset">
</td>
</tr>
</table>
</form>
<br><a href="register.php">Register</a>
Pada script ini, hampir sama dengan script sebelumnya hanya berbeda dikit saja :D.
Langkah ini adalah dimana jika anda sudah berhasil login, maka anda dapat masuk ke halaman tertentu (Seperti saya katakan sebelumnya) tetapi disini saya hanya menampilkan sebuah pesan saja untuk mempersingkat waktu dan script. Nama file yang saya berikan ialah home.php
<?php
include 'config.php';
if(isset($_SESSION['username'])== 0) { /* Halaman ini tidak dapat diakses jika belum ada yang login */
header('Location: index.php');
}
?>
<h1><p>Selamat Datang <?php echo $_SESSION['username']; ?></p></h1>
<br><a href="logout.php">Logout</a>
Dan langkah yang terakhir adalah membuat script logout(keluar). Nama filenya adalah logout.php
<?php
session_start(); //digunakan untuk memulai session
session_destroy(); //digunakan untuk menghapus session
header('Location: index.php'); //jika berhasil maka akan dialihkan ke halaman index(login)
?>
Nah, cukup sederhana bukan.? Sampai disini dulu ya tutorial Cara Membuat Register, Login dan Logout dengan PDO dan MySQL yang saya berikan, semoga dapat bermanfaat bagi anda dan dapat juga memahaminya. Kalau ada yang kurang jelas dan error, boleh kok komentar dibawah ini. Sekian dan terima kasih.
Update Contact :
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email : Fajarudinsidik@gmail.com
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email: Fajarudinsidik@gmail.com
atau Kirimkan Private messanger melalui email dengan klik tombol order dibawah ini :