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);
?>

avatar AKUKAMU
@AKUKAMU

1 Kontribusi 0 Poin

Diperbarui 5 bulan yang lalu

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

avatar fakhriprayatnaputra
@fakhriprayatnaputra

6 Kontribusi 1 Poin

Dipost 5 bulan yang lalu

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.

avatar ahanafi
@ahanafi

815 Kontribusi 552 Poin

Dipost 5 bulan yang lalu

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);
?>
avatar adamajalah27
@adamajalah27

119 Kontribusi 40 Poin

Dipost 5 bulan yang lalu

Login untuk ikut Jawaban