Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
[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);
}
}
?>
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.
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);
}
}
?>