Postingan lainnya
Kelas Premium!
Belajar bikin website dari nol sekarang
Gunakan kupon "lebihcepat" untuk diskon 25%!
Tidak bisa Login dengan password terenkripsi
Saya membuat login_aksi untuk login. Tetapi password yang saya buat terenkripsi sehingga selalu gagal login. Tetapi pada saat saya login sebagai admin yang tidak di enkripsi passwordnya berhasil pindah halaman web
<?php
// Koneksi database
$dbHost = "127.0.0.1";
$dbUser = "rifky";
$dbPass = "aku050906";
$dbName = "iuran_sampah_db";
$conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Cek apakah formulir telah disubmit
if (isset($_POST['user']) && isset($_POST['pass'])) {
$input_username = $_POST['user'];
$input_password = $_POST['pass'];
$sql = "SELECT * FROM admin WHERE User_Name = '$input_username' AND Password = '$input_password'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// Login sukses
session_start();
$_SESSION['logged_in'] = true;
header('Location: admin/index.php');
exit();
} else {
// Login gagal
header('Location:login.php');
}
} else{
// Cek apakah formulir telah disubmit
$sql = "SELECT * FROM user WHERE username = '$input_username' AND password = '$input_password'";
$result = $conn->query($sql);
if ($result->num_rows == 1) {
$user_data = $result->fetch_assoc();
$hashed_password = $user_data["password"];
// Verifikasi kata sandi
if (password_verify($input_password, $hashed_password)) {
// Jika sesuai, arahkan ke halaman yang diinginkan
header("Location: Project.php");
exit();
} else {
// Jika password tidak sesuai, tampilkan pesan kesalahan
header("Location: login.php");
}
} else {
// Jika username tidak ditemukan, tampilkan pesan kesalahan
$login_error = "Username tidak ditemukan.";
}
}
?>
//Halaman Registrasi
<?php
// Koneksi database
$dbHost = "127.0.0.1";
$dbUser = "rifky";
$dbPass = "aku050906";
$dbName = "iuran_sampah_db";
$conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Tangkap data dari formulir
$username = $_POST['user'];
$raw_password = $_POST['pass'];
$nik = $_POST['nik'];
$nama = $_POST['nama'];
$tanggal_lahir = $_POST['tgl'];
$jenis_kelamin = $_POST['Jenis_Kelamin'];
$rw = $_POST['rw'];
$rt = $_POST['rt'];
$no_rumah = $_POST['rmh'];
$no_hp = $_POST['no'];
// Mengenkripsi kata sandi
$password = password_hash($raw_password, PASSWORD_BCRYPT);
// Buat query SQL untuk memasukkan data ke tabel user
$query_user = "INSERT INTO user (Warga_NIK, username, password) VALUES ('$nik', '$username', '$password')";
// Eksekusi query untuk memasukkan data username dan password ke tabel user
if (mysqli_query($conn, $query_user)) {
// Dapatkan ID pengguna yang baru saja dimasukkan
$user_id = mysqli_insert_id($conn);
// Buat query SQL untuk memasukkan data lainnya ke tabel warga
$query_warga = "INSERT INTO warga (nik, nama, tanggal_lahir, jenis_kelamin, rw, rt, no_rumah, no_hp)
VALUES ('$nik', '$nama', '$tanggal_lahir', '$jenis_kelamin', '$rw', '$rt', '$no_rumah', '$no_hp')";
// Eksekusi query untuk memasukkan data lainnya ke tabel warga
if (mysqli_query($conn, $query_warga)) {
header('Location: login.php');
} else {
echo "Terjadi kesalahan saat memasukkan data warga: " . mysqli_error($conn);
}
} else {
echo "Terjadi kesalahan saat memasukkan data pengguna: " . mysqli_error($conn);
}
// Tutup koneksi ke database
mysqli_close($conn);
?>
3 Jawaban:
berarti ada yg salah sama enkripsinya, ini enkripsi apa? biasanya enkripsi butuh salt dan lain lain
kalo dari dokumentasi dekripnya gmn? lu harus baca2
Hallo bantu jawab ya, kalo saya cek agan pake fungsi encryption password_hash, default bawaan dari PHP. Untuk validasinya agan JANGAN langsung compare via query mysqlnya seperti ini :
SELECT * FROM user WHERE user = user AND Pass = pass
karena nanti value yang diketik user itu kan sebuah plain text, tapi data password yg udah agan simpan ke db kan dalam bentuk text yang sudah dienkripsi, sehingga ketika kita compare langsung maka tidak akan pernah match dengan data yg ada di database. Solusinya adalah mungkin bisa diubah sebagai berikut:
- Ubah query login-nya dengan menghilangkan kondisi password menjadi seperti ini:
SELECT * FROM user WHERE user = user
- Kalau user nya sudah ditemukan, baru kita compare passwordnya dengan menggunakan fungsi password_verify dari phpnya.
- jadi kurang lebih stepnya gini untuk script loginnya:
$uname = $_POST['uname'];
$pass = $_POST['pass'];
$queryLogin = mysqli_query($conn, "SELECT * FROM users WHERE uname = '$uname' ");
// cek apakah usernya ada
if (mysqli_num_rows($queryLogin) > 0) {
$user = mysqli_fetch_object($queryLogin);
if (password_verify($pass, $user->password) {
// success login
} else {
// validate password gagal
} else {
// validate username gagal
}
Semoga ada gambaran ya, silahkan dicoba.
kayak gini gan
<?php
// Koneksi database
$dbHost = "127.0.0.1";
$dbUser = "rifky";
$dbPass = "aku050906";
$dbName = "iuran_sampah_db";
$conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Cek apakah formulir telah disubmit
if (isset($_POST['user']) && isset($_POST['pass'])) {
$input_username = $_POST['user'];
$input_password = $_POST['pass'];
$sql = "SELECT * FROM admin WHERE User_Name = '$input_username' AND Password = '$input_password'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// Login sukses
session_start();
$_SESSION['logged_in'] = true;
header('Location: admin/index.php');
exit();
} else {
// Login gagal
header('Location:login.php');
}
} else{
// Cek apakah formulir telah disubmit
$sql = "SELECT * FROM user WHERE username = '$input_username' AND password = '$input_password'";
$result = $conn->query($sql);
if ($result->num_rows == 1) {
$user_data = $result->fetch_assoc();
$hashed_password = $user_data["password"];
// Verifikasi kata sandi
if (password_verify($input_password, $hashed_password)) {
// Jika sesuai, arahkan ke halaman yang diinginkan
header("Location: Project.php");
exit();
} else {
// Jika password tidak sesuai, tampilkan pesan kesalahan
header("Location: login.php");
}
} else {
// Jika username tidak ditemukan, tampilkan pesan kesalahan
$login_error = "Username tidak ditemukan.";
}
}
?>
//Halaman Registrasi
<?php
// Koneksi database
$dbHost = "127.0.0.1";
$dbUser = "rifky";
$dbPass = "aku050906";
$dbName = "iuran_sampah_db";
$conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Tangkap data dari formulir
$username = $_POST['user'];
$raw_password = $_POST['pass'];
$nik = $_POST['nik'];
$nama = $_POST['nama'];
$tanggal_lahir = $_POST['tgl'];
$jenis_kelamin = $_POST['Jenis_Kelamin'];
$rw = $_POST['rw'];
$rt = $_POST['rt'];
$no_rumah = $_POST['rmh'];
$no_hp = $_POST['no'];
// Mengenkripsi kata sandi
$password = password_hash($raw_password, PASSWORD_BCRYPT);
// Buat query SQL untuk memasukkan data ke tabel user
$query_user = "INSERT INTO user (Warga_NIK, username, password) VALUES ('$nik', '$username', '$password')";
// Eksekusi query untuk memasukkan data username dan password ke tabel user
if (mysqli_query($conn, $query_user)) {
// Dapatkan ID pengguna yang baru saja dimasukkan
$user_id = mysqli_insert_id($conn);
// Buat query SQL untuk memasukkan data lainnya ke tabel warga
$query_warga = "INSERT INTO warga (nik, nama, tanggal_lahir, jenis_kelamin, rw, rt, no_rumah, no_hp)
VALUES ('$nik', '$nama', '$tanggal_lahir', '$jenis_kelamin', '$rw', '$rt', '$no_rumah', '$no_hp')";
// Eksekusi query untuk memasukkan data lainnya ke tabel warga
if (mysqli_query($conn, $query_warga)) {
header('Location: login.php');
} else {
echo "Terjadi kesalahan saat memasukkan data warga: " . mysqli_error($conn);
}
} else {
echo "Terjadi kesalahan saat memasukkan data pengguna: " . mysqli_error($conn);
}
// Tutup koneksi ke database
mysqli_close($conn);
?>