Fitur Login
02 Oktober 2024 Administrator Dibaca: 1198 KaliMembuat Fitur Login di PHP
Silakan buka file login.php lalu isi—ketik! jangan copas—dengan kode berikut:
<?php
require_once("config.php");
if(isset($_POST['login'])){
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
$sql = "SELECT * FROM users WHERE username=:username OR email=:email";
$stmt = $db->prepare($sql);
// bind parameter ke query
$params = array(
":username" => $username,
":email" => $username
);
$stmt->execute($params);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
// jika user terdaftar
if($user){
// verifikasi password
if(password_verify($password, $user["password"])){
// buat Session
session_start();
$_SESSION["user"] = $user;
// login sukses, alihkan ke halaman timeline
header("Location: timeline.php");
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Login Pesbuk</title>
<link rel="stylesheet" href="css/bootstrap.min.css" />
</head>
<body class="bg-light">
<div class="container mt-5">
<div class="row">
<div class="col-md-6">
<p>← <a href="index.php">Home</a>
<h4>Masuk ke Pesbuk</h4>
<p>Belum punya akun? <a href="register.php">Daftar di sini</a></p>
<form action="" method="POST">
<div class="form-group">
<label for="username">Username</label>
<input class="form-control" type="text" name="username" placeholder="Username atau email" />
</div>
<div class="form-group">
<label for="password">Password</label>
<input class="form-control" type="password" name="password" placeholder="Password" />
</div>
<input type="submit" class="btn btn-success btn-block" name="login" value="Masuk" />
</form>
</div>
<div class="col-md-6">
<!-- isi dengan sesuatu di sini -->
</div>
</div>
</div>
</body>
</html>
Penjelasan:
Algoritmanya hampir sama seperti register.
Pertama kita mengimpor file config.php:
require_once("config.php");
Setelah itu, kita cek apakah tombol login sudah ditekan atau belum:
if(isset($_POST['login'])){
// ...
}
Lalu melakukan filter:
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
Selanjutnya melakukan query:
$sql = "SELECT * FROM users WHERE username=:username OR email=:email";
$stmt = $db->prepare($sql);
Pada query, kita menggunakan logika OR agar user bisa login dengan email dan username .
Selanjutnya bind parameter dan eksekusi query-nya.
// bind parameter ke query
$params = array(
":username" => $username,
":email" => $username
);
$stmt->execute($params);
Setelah query dieksekusi, kita ambil hasilnya dengan fungsi fetch().
$user = $stmt->fetch(PDO::FETCH_ASSOC);
Artinya, kita akan mengambil hasil query sebagai array asosiatif.
Fungsi fetch() akan menghasilkan null kalau tidak ada data, maka kita bisa membuat kondisi seperti ini:
// jika user terdaftar
if($user){
//...
}
Selanjutnya, kita lakukan verifikasi password yang diinputkan oleh user dengan password yang ada di database.
if(password_verify($password, $user["password"])){
//...
}
Fungsi password_verify() akan menghasilkan nilai true kalau password yang diinputkan sama dengan yang di database.
Langkah terakhir adalah membuat session dan mengalihkannya ke halaman timeline.php.
// buat Session
session_start();
$_SESSION["user"] = $user;
// login sukses, alihkan ke halaman timeline
header("Location: timeline.php");
Variabel $_SESSION adalah variabel super global yang bisa dibaca dari semua file PHP, karena diingat oleh server.
Untuk dapat menggunakan variabel $_SESSION kita harus memanggil fungsi session_start() terlebih dahulu.
$_SESSION["user"] = $user; artinya kita menyimpan data user ke dalam session.
Ini yang akan kita manfaatkan untuk mengecek apakah user sudah login atau belum.
Masukkan Komentar Anda
Jajak Pendapat