Diskon 80% terbatas! Masukkan kupon "merdeka" di kelas apa saja

[ASK] Ga bisa redirect padahal user dan pass sudah benar #OOPPHP

ini Untuk file login.php

<?php
  require_once 'core/init.php';

  $errors = array();

  if ( input::get('submit')) {
    //call validation
    $validation = new validation();
    // ngecek
    $validation = $validation->check(array(
      'username' => array( 'required' => true ),
      'password' => array( 'required' => true )
    ));

    //finish
    if( $validation->passed() ){
      if( $user->login_user( input::get('username'), input::get('password') ) )
      {
      session::set('username', input::get('username'));
      header('Location: profile.php');
    }else{
      $errors[] = "login FAIL";
    }
  }
  else{
      $errors = $validation->errors();
    }

  }

  require_once 'template/header.php';
?>

<h2>Login</h2>

<form action="login.php" method="post">
  <label>Username</label>
  <input type="text" name="username"> <br>

  <label>Password</label>
  <input type="password" name="password"> <br>

  <input type="submit" name="submit" value="Login Sekarang">

  <?php if(!empty($errors)){?>
    <div id="errors">
    <?php foreach ($errors as $error){ ?>
      <li> <?php echo $error;?> </li>
    <?php } ?>
</div>
  <?php } ?>

</form>

ini untuk file user.php

<?php

class user{

  private $_db;

  public function __construct(){
    $this->_db = db::getInstance();
  }

  public function register_user($fields = array())
  {
    if( $this->_db->insert('users',$fields) ) return true;
    else return false;
  }
  public function login_user($username , $password)
  {

    $data = $this->_db->get_info('users', 'username', $username);
    if(password_verify($password, $data['password']) )
      return true;
    else return false;
  }

}

 ?>

Ini untuk file database

<?php

class db{

  private static $INSTANCE = null;
  private $mysqli,
          $HOST = 'localhost',
          $USER = 'fadhel',
          $PASS = '',
          $DBNAME = 'cekula';

  public function __construct(){

    $this->mysqli = new mysqli( $this->HOST, $this->USER, $this->PASS, $this->DBNAME );
    if( mysqli_connect_error() ){
      die('GAGAL KONEK MAS BRO');
    }
  }

  //uji koneksi
  public static function getInstance(){
    if( !isset( self::$INSTANCE ) ){
      self::$INSTANCE = new db();
    }

    return self::$INSTANCE;
  }

  public function insert($table,$fields = array())
  {

    //ambil kolom
    $column = implode(",", array_keys($fields));

    //ambil nilai
    $valueArrays = array();
    $i = 0;
    foreach ($fields as $key=>$values) {
      if( is_int($values) ){
      $valueArrays[$i] = $this->escape($values) ;
    }else{
      $valueArrays[$i] = "'" . $this->escape($values) . "'";
      $i++;}
    }

    $values = implode(",", $valueArrays);

    $query = "INSERT INTO $table ($column) VALUES ($values)";

    return $this->run_query($query, 'have problem when you input data');
  }

  public function get_info($table, $column, $value)
  {
    if( !is_int($value) )
        $value = "'" . $value . "'";
        $query = "SELECT * FROM $table WHERE $column = $value";
        $result = $this->mysqli->query($query);

        while($row = $result->fetch_assoc()) {
        return $row;
      }
  }

  public function run_query($query, $msg){
    if($this->mysqli->query($query)) return true;
    else die($msg);
  }

  public function escape($name){
    return $this->mysqli->real_escape_string($name);
  }

}
 ?>

avatar fadhelmurphy
@fadhelmurphy

19 Kontribusi 1 Poin

Diperbarui 8 tahun yang lalu

2 Jawaban:

1. kode tampilkan sebagai kode, bukan gambar 2. disana ada fungsi login_user tapi isi fungsi ini sendiri tidak ditampilkan

kemungkinan salah ada banyak banget, coba di 'debug' pelan-pelan, debug ini proses kita nyari kesalahan. Pake metode die/var_dump/echo untuk melihat isi datanya. Ngga perlu terlalu jauh, coba cari fungsi login_user atau di get_info nya, coba di var_dump() data-datanya disana apakah emang udah keluar atau apa yang sejauh ini keluar, jadi bisa dideteksi salahnya dimana.

avatar hilmanski
@hilmanski

2713 Kontribusi 2145 Poin

Dipost 8 tahun yang lalu

ini Untuk file login.php

<?php
  require_once 'core/init.php';

  $errors = array();

  if ( input::get('submit')) {
    //call validation
    $validation = new validation();
    // ngecek
    $validation = $validation->check(array(
      'username' => array( 'required' => true ),
      'password' => array( 'required' => true )
    ));

    //finish
    if( $validation->passed() ){
      if( $user->login_user( input::get('username'), input::get('password') ) )
      {
      session::set('username', input::get('username'));
      header('Location: profile.php');
    }else{
      $errors[] = "login FAIL";
    }
  }
  else{
      $errors = $validation->errors();
    }

  }

  require_once 'template/header.php';
?>

<h2>Login</h2>

<form action="login.php" method="post">
  <label>Username</label>
  <input type="text" name="username"> <br>

  <label>Password</label>
  <input type="password" name="password"> <br>

  <input type="submit" name="submit" value="Login Sekarang">

  <?php if(!empty($errors)){?>
    <div id="errors">
    <?php foreach ($errors as $error){ ?>
      <li> <?php echo $error;?> </li>
    <?php } ?>
</div>
  <?php } ?>

</form>

ini untuk file user.php

<?php

class user{

  private $_db;

  public function __construct(){
    $this->_db = db::getInstance();
  }

  public function register_user($fields = array())
  {
    if( $this->_db->insert('users',$fields) ) return true;
    else return false;
  }
  public function login_user($username , $password)
  {

    $data = $this->_db->get_info('users', 'username', $username);
    if(password_verify($password, $data['password']) )
      return true;
    else return false;
  }

}

 ?>

Ini untuk file database

<?php

class db{

  private static $INSTANCE = null;
  private $mysqli,
          $HOST = 'localhost',
          $USER = 'fadhel',
          $PASS = '',
          $DBNAME = 'cekula';

  public function __construct(){

    $this->mysqli = new mysqli( $this->HOST, $this->USER, $this->PASS, $this->DBNAME );
    if( mysqli_connect_error() ){
      die('GAGAL KONEK MAS BRO');
    }
  }

  //uji koneksi
  public static function getInstance(){
    if( !isset( self::$INSTANCE ) ){
      self::$INSTANCE = new db();
    }

    return self::$INSTANCE;
  }

  public function insert($table,$fields = array())
  {

    //ambil kolom
    $column = implode(",", array_keys($fields));

    //ambil nilai
    $valueArrays = array();
    $i = 0;
    foreach ($fields as $key=>$values) {
      if( is_int($values) ){
      $valueArrays[$i] = $this->escape($values) ;
    }else{
      $valueArrays[$i] = "'" . $this->escape($values) . "'";
      $i++;}
    }

    $values = implode(",", $valueArrays);

    $query = "INSERT INTO $table ($column) VALUES ($values)";

    return $this->run_query($query, 'have problem when you input data');
  }

  public function get_info($table, $column, $value)
  {
    if( !is_int($value) )
        $value = "'" . $value . "'";
        $query = "SELECT * FROM $table WHERE $column = $value";
        $result = $this->mysqli->query($query);

        while($row = $result->fetch_assoc()) {
        return $row;
      }
  }

  public function run_query($query, $msg){
    if($this->mysqli->query($query)) return true;
    else die($msg);
  }

  public function escape($name){
    return $this->mysqli->real_escape_string($name);
  }

}
 ?>

avatar fadhelmurphy
@fadhelmurphy

19 Kontribusi 1 Poin

Dipost 8 tahun yang lalu

Login untuk ikut Jawaban