Setelah berhasil membuat sistem login dan logout, langkah berikutnya adalah memberikan kemampuan kepada pengguna untuk mengubah informasi akun mereka sendiri. Fitur Edit Profil memungkinkan pengguna memperbarui data seperti nama lengkap, username, email, maupun informasi lainnya yang tersimpan di database.
Pada tutorial ini, kita akan membuat halaman edit_profile.php yang menampilkan data pengguna yang sedang login, kemudian menyimpan perubahan tersebut ke database menggunakan Prepared Statement agar lebih aman.
Prasyarat
Sebelum mengikuti tutorial ini, pastikan Anda sudah memiliki:
- Sistem login menggunakan PHP dan MySQL.
- File config.php yang berisi koneksi database dan
session_start(). - Halaman dashboard.php.
- Tabel users yang berisi data pengguna.
Contoh struktur tabel users:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100),
username VARCHAR(50),
email VARCHAR(100),
password VARCHAR(255),
role VARCHAR(20)
);
Membuat Halaman Edit Profil
Buat file baru dengan nama edit_profile.php, kemudian masukkan kode berikut.
<?php
require_once 'config.php';
if (!isset($_SESSION['login'])) {
header("Location: login.php");
exit;
}
$username = $_SESSION['username'];
$query = $koneksi->prepare("SELECT * FROM users WHERE username = ?");
$query->bind_param("s", $username);
$query->execute();
$user = $query->get_result()->fetch_assoc();
?>
<!DOCTYPE html>
<html>
<head>
<title>Edit Profil</title>
<style>
body{
font-family:Arial;
background:#f5f5f5;
}
.box{
width:400px;
margin:40px auto;
background:#fff;
padding:20px;
border-radius:8px;
box-shadow:0 0 10px rgba(0,0,0,.1);
}
input{
width:100%;
padding:10px;
margin-bottom:15px;
}
button{
padding:10px 20px;
}
</style>
</head>
<body>
<div class="box">
<h2>Edit Profil</h2>
<form action="proses_edit_profile.php" method="post">
<input type="text"
name="nama"
value="<?= htmlspecialchars($user['nama']); ?>"
required>
<input type="text"
name="username"
value="<?= htmlspecialchars($user['username']); ?>"
required>
<input type="email"
name="email"
value="<?= htmlspecialchars($user['email']); ?>"
required>
<button type="submit">
Simpan Perubahan
</button>
</form>
</div>
</body>
</html>
Kode tersebut akan mengambil data pengguna berdasarkan username yang tersimpan pada session, kemudian menampilkan data tersebut ke dalam form sehingga dapat diubah.
Membuat Proses Edit Profil
Selanjutnya buat file proses_edit_profile.php.
<?php
require_once 'config.php';
if (!isset($_SESSION['login'])) {
header("Location: login.php");
exit;
}
$nama = trim($_POST['nama']);
$username = trim($_POST['username']);
$email = trim($_POST['email']);
$username_lama = $_SESSION['username'];
$query = $koneksi->prepare("
UPDATE users
SET
nama=?,
username=?,
email=?
WHERE username=?
");
$query->bind_param(
"ssss",
$nama,
$username,
$email,
$username_lama
);
if($query->execute()){
$_SESSION['username']=$username;
header("Location: dashboard.php?success=Profil berhasil diperbarui");
}else{
header("Location: edit_profile.php?error=Gagal memperbarui profil");
}
Script di atas akan memperbarui data pengguna berdasarkan username yang sedang login. Jika proses berhasil, session username juga diperbarui agar tetap sinkron dengan data terbaru.
Menambahkan Menu Edit Profil
Agar pengguna dapat mengakses halaman edit profil, tambahkan tautan berikut pada dashboard.php.
<p>
<a href="edit_profile.php">Edit Profil</a>
</p>
<p>
<a href="logout.php">Logout</a>
</p>
Setelah login, pengguna dapat memilih menu Edit Profil, mengubah data yang diinginkan, lalu menyimpannya kembali ke database.
Cara Kerja Edit Profil
Alur proses edit profil adalah sebagai berikut:
- Pengguna login ke sistem.
- Session menyimpan identitas pengguna.
- Halaman edit_profile.php mengambil data berdasarkan session.
- Form menampilkan data yang tersimpan di database.
- Pengguna mengubah informasi profil.
- Data dikirim ke proses_edit_profile.php.
- Database diperbarui.
- Session diperbarui apabila username berubah.
- Pengguna kembali ke dashboard.
Dengan alur tersebut, setiap pengguna hanya dapat mengubah data miliknya sendiri.
Tips Keamanan
Beberapa hal berikut sangat disarankan sebelum fitur ini digunakan pada aplikasi produksi:
- Validasi format email sebelum menyimpan data.
- Pastikan username baru belum digunakan oleh pengguna lain.
- Gunakan
htmlspecialchars()saat menampilkan data untuk mencegah serangan Cross Site Scripting (XSS). - Gunakan Prepared Statement seperti contoh di atas agar terhindar dari SQL Injection.
- Tambahkan validasi panjang karakter untuk nama dan username.
Kesimpulan
Fitur Edit Profil merupakan salah satu bagian penting dalam sistem manajemen pengguna. Dengan fitur ini, pengguna dapat memperbarui informasi akun mereka tanpa harus meminta bantuan administrator.
Pada tutorial ini Anda telah mempelajari cara mengambil data pengguna berdasarkan session, menampilkannya ke dalam form, memperbarui data menggunakan Prepared Statement, serta menyinkronkan session setelah proses penyimpanan berhasil.
Pada artikel berikutnya, kita akan membahas cara membuat fitur Ubah Password menggunakan password_hash() dan password_verify() agar sistem login menjadi lebih aman dan sesuai dengan standar keamanan PHP modern.


Belum ada komentar