selalu error apabila login

Pas masuk ke function nya selalu masuk ke bagian else nya, dan nge-return false mulu

cuplikan kode function

 function cek_data($nis, $pass){
  global $link;

  // kalo ada mysql injection
  $pass = mysqli_real_escape_string($link, $pass);
  $nis  = mysqli_real_escape_string($link, $nis);

  $query  = "SELECT Password FROM users WHERE NIS = '$nis'";
  $result = mysqli_query($link, $query);
  $hash   = mysqli_fetch_assoc($result)["Password"];

  if ( password_verify ($pass, $hash) ){
    die('berhasil');
  }else{
    die('eror');
  }
}

ini tempat function nya dipake

   if( !empty(trim($nis)) && !empty(trim($pass)) ){

      if( login_cek_nama($nis) ){
        // mengecek data
        if( cek_data($nis, $pass) ){
          $_SESSION["user"] = $nis;
          header('Location: index.php');
        }else{
          echo 'data ada yang salah ';
        }
      }else{
        echo 'namanya belum terdaftar';
      }
  }else{
    echo 'tidak boleh kosong';
  }
}

selalu nge-return "data ada yang salah", Nah salahnya dimana?

avatar Gaaf08
@Gaaf08

14 Kontribusi 0 Poin

Diperbarui 6 tahun yang lalu

4 Jawaban:

coba seperti ini, Kak. rubah query select-nya seperti dibawah ini, Kak.

 function cek_data($nis, $pass){
  global $link;

  // kalo ada mysql injection
  $pass = mysqli_real_escape_string($link, $pass);
  $nis  = mysqli_real_escape_string($link, $nis);

  $query  = "SELECT * FROM users WHERE NIS = '$nis' AND Password = '$pass'";
  $result = mysqli_query($link, $query);
  $hash   = mysqli_fetch_assoc($result);

  if ( password_verify ($pass, $hash) ){
    die('berhasil');
  }else{
    die('eror');
  }
}
avatar gugunguntoro
@gugunguntoro

250 Kontribusi 10 Poin

Dipost 6 tahun yang lalu

Gak ada yang salah sih, kyknya itu nama tablenya atau kolomnya mungkin salah,

**saran : biasain kalo nama kolom konsisten atau variable apapun, itu Password "P" nya kapital tapi giliran NIS kapital semua

avatar naufalhfzhn
@naufalhfzhn

172 Kontribusi 59 Poin

Dipost 6 tahun yang lalu

Pada waktu register passwordnya di disimpan pakai password_hash() ga? password_verify() cuma bisa digunakan untuk pengecekan password yang di hash menggunakan password_hash() aja, selain itu pasti return false.

Coba di tampilkan kode saat registrasi juga, biar lebih jelas.

avatar rachmatsasongko
@rachmatsasongko

410 Kontribusi 426 Poin

Dipost 6 tahun yang lalu

@rachmatsasongko

 function register_user($nis, $nama, $pass){
  // untuk mencari variabel link di script lain
  global $link;

  $nama = mysqli_real_escape_string($link, $nama);
  $pass = mysqli_real_escape_string($link, $pass);
  $nis  = mysqli_real_escape_string($link, $nis);

  $pass  = password_hash($pass, PASSWORD_DEFAULT);
  $query = "INSERT INTO users (NIS, Nama, Password ) VALUES ('$nis', '$nama', '$pass')";

  if( mysqli_query($link, $query) ){
    return true;
  }else {
    return false;
  }
}

waktu di print_r var $hash nya juga hasilnya udah passsword yang udah di hash,

@naufalhfzhn gak ngeh gan kalo NIS pake huruf kecil :D

@bumiharum kalo gitu kan harus milih lagi data yang mau dipilih nya gan

avatar Gaaf08
@Gaaf08

14 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban