SMK Negeri 1 Tanjung Lago Official Site

Address : Jln. Tanjung Api-api Km. 42 Desa Muliasari Kec. Tanjung Lago Kab. Banyuasin Sumatera Selatan | 30960
Phone : +62 811-7209-151 | Email: smkn1tanjunglago@yahoo.com
Detail HALAMAN

Fitur Login

02 Oktober 2024 Administrator Dibaca: 1198 Kali

Membuat 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>&larr; <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

FACEBOOK



Jajak Pendapat

Loading...

Apakah anda menyukai Sekolah ini?

Lihat Hasil