Bergabunglah bersama ribuan orang lainnya...
Sudah punya akun? Login di sini
Sudah punya akun? Login di sini
Penjelasan:
Pertama kita membutuhkan objek $db
untuk melakukan query, maka kita impor config.php
dengan fungsi require_once[]
.
require_once["config.php"];
Setelah itu, baru kita buat kode untuk menyimpan data ke database.
Sebelumnya, kita cek dulu. Apakah tombol Register sudah ditekan atau belum:
if[isset[$_POST['register']]]{
// ...
}
?>
Selanjutnya melakukan filter dan enkripsi password terhadap data yang diinputkan:
// filter data yang diinputkan
$name = filter_input[INPUT_POST, 'name', FILTER_SANITIZE_STRING];
$username = filter_input[INPUT_POST, 'username', FILTER_SANITIZE_STRING];
// enkripsi password
$password = password_hash[$_POST["password"], PASSWORD_DEFAULT];
$email = filter_input[INPUT_POST, 'email', FILTER_VALIDATE_EMAIL];
Kenapa harus di-filter dan dienkripsi?
Jangan percaya pada apa yang diinputkan user, bisa saja mereka menginputkan username
dan name
seperti ini:
Belum punya akun? Daftar di sini
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 ekekusi querynya.
// 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 assosiatif.
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.
Sebelum membuat kode untuk halaman timeline.php
, kita buat dulu auth.php
.
File auth.php
berfungsi untuk mengecek session, apakah user sudah login atau belum.
Silahkan buka file auth.php
kemudian isi seperti ini:
Pesbuk Timeline
Chủ Đề