Wednesday, 22 September 2021

Cara Membuat PHP Session Login dan Logout dengan Mudah

Kalau website Anda membedakan pengunjung yang datang, misalnya member dan non member, membuat PHP login session sangat diperlukan.

Dengan login session PHP, Anda dapat membatasi hak akses pengunjung agar dapat mengakses konten atau menu sesuai role yang dimiliki. 

Lalu, bagaimana cara membuat login dengan PHP menggunakan session? Tidak rumit, kok. Yuk, langsung saja simak panduan lengkapnya!

Tutorial PHP Login Session

Ada beberapa hal yang perlu Anda siapkan lebih dulu sebelum membuat login session PHP, yaitu :

  • Web Server. PHP tidak dapat dijalankan tanpa web server. Nah, jika Anda membuat aplikasi PHP pada komputer lokal (sebelum di hosting), Anda dapat menggunakan aplikasi web server seperti XAMPP.
  • Text Editor. Dibutuhkan untuk menulis kode pemrograman, pada tutorial ini kami menggunakan Visual Studio Code.
  • Web Browser. Digunakan untuk mengakses website, pada tutorial ini kami menggunakan Google Chrome.

Jika ketiga tools diatas sudah disiapkan, Anda dapat langsung mengikuti 9 langkah membuat php login session sebagai berikut :

  1. Menjalankan XAMPP
  2. Membuat Database
  3. Membuat Struktur Project
  4. Menghubungkan Database 
  5. Membuat Halaman Login
  6. Membuat Halaman Register
  7. Membuat Halaman Berhasil Login
  8. Membuat File logout.php
  9. Menambahkan File style.css

Nah, berikut ini penjelasan selengkapnya :

1. Menjalankan XAMPP

XAMPP merupakan aplikasi cross-platform (Windows, Linux, MacOS) yang digunakan untuk membuat web server lokal pada komputer Anda. 

Dengan aplikasi ini, Anda dapat mengembangkan dan melakukan testing website. Namun,  Anda perlu  menginstall XAMPP  dulu pada komputer Anda. 

Nah, jika XAMPP sudah terinstall, langsung saja buka aplikasi, lalu jalankan web server Apache dan MySQL. Caranya, klik tombol Start seperti pada gambar berikut :

Menjalankan XAMPP

2. Membuat Database

Langkah pada tutorial php login session berikutnya adalah membuat database. 

Database diperlukan sebagai tempat penyimpanan data user, seperti username, email, maupun password yang digunakan untuk login.

Untuk membuat database, Anda perlu mengakses localhost/phpmyadmin pada web browser. Tampilannya akan seperti ini :

Tampilan awal phpmyadmin

Pada bagian kiri halaman phpmyadmin, klik New untuk membuat database baru.

Membuat Database Baru

Masukkan nama database yang akan Anda gunakan pada kolom yang tersedia. Di contoh ini, kami menggunakan nama niagahoster_login. Setelah itu, klik tombol Create untuk membuat database.

Memasukkan nama database baru untuk php login session

Walaupun database baru Anda sudah berhasil dibuat, tapi isinya masih kosong. Anda perlu menambahkan tabel users untuk menyimpan data user website. Anda dapat menyalin query SQL di bawah ini pada menu SQL di phpmyadmin:

CREATE TABLE `users` (
  id int(11) NOT NULL AUTO_INCREMENT,
  username varchar(255) NOT NULL,
  email varchar(255) NOT NULL,
  password varchar(255) NOT NULL,
  PRIMARY KEY(id)
);

INSERT INTO `users` (`username`, `email`, `password`) VALUES
('Niagahoster Tutorial', 'nhtutorial@gmail.com', '0139a3c5cf42394be982e766c93f5ed0');

Untuk menjalankan query tersebut, klik tombol Go seperti yang ditunjukkan pada gambar berikut:

Query SQL membuat tabel users

Sekarang, database Anda sudah memiliki tabel users yang berisi atribut data idusernameemail dan password.

Tabel users berhasil dibuat

3. Membuat Struktur Project 

Setelah menyiapkan database, sekarang waktunya untuk menulis kode program php login session. Tapi, sebelumnya siapkan dulu struktur project webnya. 

Pertama-tama, Anda harus membuat folder khusus untuk menyimpan project web. Namun, folder tersebut harus ditempatkan di dalam folder htdocs yang merupakan folder home dari web server. Folder htdocs berada pada path C:\xampp\htdocs

Membuat folder untuk menyimpan project web php login session

Pada contoh ini, kami membuat folder dengan nama niagahoster_login. Di dalam folder ini, Anda bisa membuat folder baru bernama images sebagai tempat untuk menyimpan asset gambar yang akan digunakan pada website.

Membuat struktur project web

Selanjutnya, buat file baru dengan ekstensi .php dan .css seperti pada gambar di atas. Penjelasan lebih detail mengenai file-file tersebut akan disampaikan di langkah berikutnya.

4. Menghubungkan Database (config.php)

Untuk membuat login session PHP, Anda perlu menghubungkan database yang baru dibuat dengan website. Caranya, isilah file config.php yang telah dibuat pada langkah sebelumnya dengan kode untuk membuat koneksi ke database sebagai berikut :

<?php 

$server = "localhost";
$user = "root";
$pass = "";
$database = "niagahoster_login";

$conn = mysqli_connect($server, $user, $pass, $database);

if (!$conn) {
    die("<script>alert('Gagal tersambung dengan database.')</script>");
}

?>

Ubah baris kode  $database = "niagahoster_login"; dengan nama database yang telah Anda buat. Jika nama yang dituliskan salah, maka koneksi dengan database tidak dapat terhubung.

Gagal tersambung dengan database php login session

5. Membuat Halaman Login (index.php)

Pada tutorial php session login ini, index.php berisi kode yang digunakan untuk halaman login. Jika Anda perhatikan, dalam file ini terdapat 2 bagian. 

Bagian pertama adalah kode PHP yang digunakan untuk validasi email dan password untuk login. Sedangkan, bagian kedua merupakan kode HTML halaman login yang terdiri dari link file CSS dan kerangka form login.

<?php 

include 'config.php';

error_reporting(0);

session_start();

if (isset($_SESSION['username'])) {
    header("Location: berhasil_login.php");
}

if (isset($_POST['submit'])) {
	$email = $_POST['email'];
	$password = md5($_POST['password']);

	$sql = "SELECT * FROM users WHERE email='$email' AND password='$password'";
	$result = mysqli_query($conn, $sql);
	if ($result->num_rows > 0) {
		$row = mysqli_fetch_assoc($result);
		$_SESSION['username'] = $row['username'];
		header("Location: berhasil_login.php");
	} else {
		echo "<script>alert('Email atau password Anda salah. Silahkan coba lagi!')</script>";
	}
}

?>

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">

	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">

	<link rel="stylesheet" type="text/css" href="style.css">

	<title>Niagahoster Tutorial</title>
</head>
<body>
	<div class="alert alert-warning" role="alert">
		<?php echo $_SESSION['error']?>
	</div>

	<div class="container">
		<form action="" method="POST" class="login-email">
			<p class="login-text" style="font-size: 2rem; font-weight: 800;">Login</p>
			<div class="input-group">
				<input type="email" placeholder="Email" name="email" value="<?php echo $email; ?>" required>
			</div>
			<div class="input-group">
				<input type="password" placeholder="Password" name="password" value="<?php echo $_POST['password']; ?>" required>
			</div>
			<div class="input-group">
				<button name="submit" class="btn">Login</button>
			</div>
			<p class="login-register-text">Anda belum punya akun? <a href="register.php">Register</a></p>
		</form>
	</div>
</body>
</html>

Nantinya, kode di atas akan memiliki tampilan seperti gambar di bawah ini jika sudah ditambahkan kode pada file style.css.

6. Membuat Halaman Register (register.php)

Pada halaman ini, Anda akan membuat form registrasi. Halaman ini dibuat karena untuk melakukan login, Anda memerlukan data user yang tersimpan di database. 

Sama seperti halaman login, halaman register juga terdiri dari 2 bagian, kode PHP dan HTML. 

Bagian PHP berisi kode untuk menambahkan data user yang dimasukkan pada kolom registrasi, yaitu : usernameemail dan password

Untuk jaminan keamanan, password yang dimasukkan akan langsung dienkripsi pada database sehingga admin sekalipun tidak dapat mengetahui password Anda.

Bagian HTML berisi kode untuk membuat struktur halaman dan form registrasi. Agar lebih jelas, silahkan salin kode di bawah ini pada file register.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
 
include 'config.php';
 
error_reporting(0);
 
session_start();
 
if (isset($_SESSION['username'])) {
    header("Location: index.php");
}
 
if (isset($_POST['submit'])) {
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = md5($_POST['password']);
    $cpassword = md5($_POST['cpassword']);
 
    if ($password == $cpassword) {
        $sql = "SELECT * FROM users WHERE email='$email'";
        $result = mysqli_query($conn, $sql);
        if (!$result->num_rows > 0) {
            $sql = "INSERT INTO users (username, email, password)
                    VALUES ('$username', '$email', '$password')";
            $result = mysqli_query($conn, $sql);
            if ($result) {
                echo "<script>alert('Selamat, registrasi berhasil!')</script>";
                $username = "";
                $email = "";
                $_POST['password'] = "";
                $_POST['cpassword'] = "";
            } else {
                echo "<script>alert('Woops! Terjadi kesalahan.')</script>";
            }
        } else {
            echo "<script>alert('Woops! Email Sudah Terdaftar.')</script>";
        }
         
    } else {
        echo "<script>alert('Password Tidak Sesuai')</script>";
    }
}
 
?>
 
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
 
    <link rel="stylesheet" type="text/css" href="style.css">
 
    <title>Niagahoster Register</title>
</head>
<body>
    <div class="container">
        <form action="" method="POST" class="login-email">
            <p class="login-text" style="font-size: 2rem; font-weight: 800;">Register</p>
            <div class="input-group">
                <input type="text" placeholder="Username" name="username" value="<?php echo $username; ?>" required>
            </div>
            <div class="input-group">
                <input type="email" placeholder="Email" name="email" value="<?php echo $email; ?>" required>
            </div>
            <div class="input-group">
                <input type="password" placeholder="Password" name="password" value="<?php echo $_POST['password']; ?>" required>
            </div>
            <div class="input-group">
                <input type="password" placeholder="Confirm Password" name="cpassword" value="<?php echo $_POST['cpassword']; ?>" required>
            </div>
            <div class="input-group">
                <button name="submit" class="btn">Register</button>
            </div>
            <p class="login-register-text">Anda sudah punya akun? <a href="index.php">Login </a></p>
        </form>
    </div>
</body>
</html>

Script PHP akan berjalan ketika tombol Register di klik. Setelah penambahan file CSS, nantinya halaman login akan seperti gambar berikut ini :

Tampilan halaman register untuk php login session

7. Membuat Halaman berhasil_login.php

Untuk mengecek apakah php login session sudah berhasil dibuat, kami membuat lagi sebuah halaman baru dengan nama berhasil_login.php

Jika Anda dapat mengakses halaman ini setelah melakukan login, artinya php session login berhasil dibuat.

Pada halaman ini, kami hanya menampilkan ucapan selamat datang dan tombol untuk melakukan logout. Berikut kode lengkapnya :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
 
session_start();
 
if (!isset($_SESSION['username'])) {
    header("Location: index.php");
}
 
?>
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
    <link rel="stylesheet" type="text/css" href="style.css">
    <title>Berhasil Login</title>
</head>
<body>
    <div class="container-logout">
        <form action="" method="POST" class="login-email">
            <?php echo "<h1>Selamat Datang, " . $_SESSION['username'] ."!". "</h1>"; ?>
             
            <div class="input-group">
            <a href="logout.php" class="btn">Logout</a>
            </div>
        </form>
    </div>
</body>
</html>

 

8. Membuat File logout.php

Ketika tombol Logout di klik, script logout.php akan dijalankan. Script ini berfungsi untuk menghapus session. session_destroy() menandakan bahwa session telah berakhir dan Anda akan diarahkan ke halaman index.php (halaman login).

1
2
3
4
5
6
7
8
<?php
 
session_start();
session_destroy();
 
header("Location: index.php");
 
?>

9. Menambahkan File style.css

Untuk memperindah tampilan web, Anda perlu menambahkan file CSS. File style.css ini dipanggil pada script HTML halaman login, halaman register serta halaman berhasil login.

Sebelumnya, siapkan gambar yang akan Anda gunakan untuk background, ya. Lalu, ganti nama file background-image yang terdapat pada selektor body. Berikut ini kode lengkapnya :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
 
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Poppins', sans-serif;
}
 
body {
    width: 100%;
    min-height: 100vh;
    background-image: linear-gradient(rgba(0,0,0,.5), rgba(0,0,0,.5)), url(images/bg5.jpg);
    background-position: center;
    background-size: cover;
    display: flex;
    justify-content: center;
    align-items: center;
}
 
.container {
    width: 400px;
    min-height: 400px;
    background: #FFF;
    border-radius: 5px;
    box-shadow: 0 0 5px rgba(0,0,0,.3);
    padding: 40px 30px;
}
 
.container .login-text {
    color: #111;
    font-weight: 500;
    font-size: 1.1rem;
    text-align: center;
    margin-bottom: 20px;
    display: block;
    text-transform: capitalize;
}
 
.container .login-email .input-group {
    width: 100%;
    height: 50px;
    margin-bottom: 25px;
}
 
.container .login-email .input-group input {
    width: 100%;
    height: 100%;
    border: 2px solid #e7e7e7;
    padding: 15px 20px;
    font-size: 1rem;
    border-radius: 30px;
    background: transparent;
    outline: none;
    transition: .3s;
}
 
.container .login-email .input-group input:focus, .container .login-email .input-group input:valid {
    border-color: #a29bfe;
}
 
.container .login-email .input-group .btn {
    display: block;
    width: 100%;
    padding: 15px 20px;
    text-align: center;
    border: none;
    background: #a29bfe;
    outline: none;
    border-radius: 30px;
    font-size: 1.2rem;
    color: #FFF;
    cursor: pointer;
    transition: .3s;
}
 
.container .login-email .input-group .btn:hover {
    transform: translateY(-5px);
    background: #6c5ce7;
}
 
.login-register-text {
    color: #111;
    font-weight: 600;
}
 
.login-register-text a {
    text-decoration: none;
    color: #6c5ce7;
}
 
.container-logout {
    width: 500px;
    min-height: 200px;
    background: #FFF;
    border-radius: 5px;
    box-shadow: 0 0 5px rgba(0,0,0,.3);
    padding: 40px 30px;
}
 
.container-logout .login-email .input-group .btn {
    display: block;
    width: 100%;
    padding: 15px 20px;
    text-align: center;
    border: none;
    background: #a29bfe;
    outline: none;
    border-radius: 30px;
    font-size: 1.2rem;
    color: #FFF;
    cursor: pointer;
    transition: .3s;
    margin-top: 20px;
}
 
.container-logout .login-email .input-group .btn:hover {
    transform: translateY(-5px);
    background: #6c5ce7;
}
 
@media (max-width: 430px) {
    .container {
        width: 300px;
    }
}

Nah, sekarang coba cek lagi website Anda. Apakah sudah terlihat lebih indah?

Kesimpulan

Itulah tutorial membuat PHP login session untuk website. Bagaimana, sudah berjalan dengan baik, bukan?

Jika tidak berjalan, coba perhatikan lagi apakah folder project yang Anda buat sudah tersimpan dalam folder C:\xampp\htdocs?

Anda juga bisa menyesuaikan tampilan websitenya dengan mengubah file CSS dan mengedit kode HTML-nya. Kalau belum ada perubahan, lakukan refresh atau cobalah menggunakan web browser lain.

Yang perlu diingat, setiap mengakses website, Anda juga harus menjalankan service web server Apache dan MySQL di XAMPP terlebih dulu, ya. Kecuali, jika website Anda sudah diupload ke hosting. Sebab, hosting sudah memiliki web server sendiri.

No comments:

Post a Comment

wisata pulau jawa terbaik

wisata pulau jawa terbaik Indonesia memanglah populer dengan kekayaan rekreasi serta pesona alamnya yang sungguh molek. lebih lagi hal rekr...