Postingan lainnya
eror ketika include init.php kedalam header.php
saya sedang mengikuti vidio cara buat login dan register dgn php. buat username baru gk ada masalah, buat login gk ada masalah.
pass saya mau masukin kode <?php include('init.php'); ?> ke file header.php muncul eror.
======================================== Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\belajar\login\init.php on line 2
Fatal error: Cannot redeclare register_user() (previously declared in C:\xampp\htdocs\belajar\login\user.php:3) in C:\xampp\htdocs\belajar\login\user.php on line 20
========================================
biar gk eror lagi gimana?
isi init.php
<?php
session_start();
include('db.php');
include('user.php');
?>
5 Jawaban:
isi db.php
<pre> <?php
$link = mysqli_connect('localhost','root','','latihan') or die(mysqli_error());
?> </pre>
isi user.php (function register,login,cek user apakah ada di database)
<pre> <?php
function register_user($nama , $password){ global $link;
//untuk menjegah sql injection
$nama = mysqli_real_escape_string($link , $nama);
$password = mysqli_real_escape_string($link , $password);
//untuk meng-hash password menjadi huruf2 unik
$password = password_hash($password , PASSWORD_DEFAULT);
$query = "INSERT INTO pengguna (username , password) VALUES ('$nama' , '$password')";
if ( mysqli_query($link, $query) ) {
return true;
}else{
return false;
}
} // menguji duplikat username function register_cek_nama($nama){ global $link; $nama = mysqli_real_escape_string($link , $nama);
$query = mysqli_query($link , "SELECT * FROM pengguna WHERE username='$nama'");
if (mysqli_num_rows($query) == 0) {
return true;
}else{
return false;
}
}
//menguji username ada didatabase function login_cek_nama($nama){ global $link; $nama = mysqli_real_escape_string($link , $nama);
$query = mysqli_query($link , "SELECT * FROM pengguna WHERE username='$nama'");
if (mysqli_num_rows($query) != 0) {
return true;
}else{
return false;
}
}
// fungsi login function cek_data($nama , $password){ global $link;
//untuk menjegah sql injection
$nama = mysqli_real_escape_string($link , $nama);
$password = mysqli_real_escape_string($link , $password);
//mengambil password dari database
$query = mysqli_query($link, "SELECT password FROM pengguna WHERE username='$nama'");
// $query = "SELECT password FROM pengguna WHERE username='$nama'";
// $result = mysqli_query($link ,$query);
$hash = mysqli_fetch_assoc($query)['password'];
if ( password_verify($password , $hash) ) {
return true;
}else{
return false;
}
}
?> </pre>
yg ke 1 coba copy juga file header.php kalau di header.php ada session_start(), hapus session_start() di init.php
yg ke 2 coba pake include_once <pre> include_once('db.php'); include_once('user.php'); </pre>
masih ada error atau tidak, kalau ada error sama kah?
Jawaban Terpilih
Halo.
Ignoring session itu hanya notice saja, artinya ada session lain yg sudah berjalan maka session tg ini diskip/ diignore.
Sedagkan fatal erornya karena ada dua fungsi yang sama, nama fugsinya register_user(), hapus saja salah satunya atau ganti nama fugsinya menjadi yang lain agar tidak sama.
udah di ikutin ke 1 & ke 2,
tinggal eror ini yg masih ada
Fatal error: Cannot redeclare register_user() (previously declared in C:\xampp\htdocs\belajar\login\user.php:3) in C:\xampp\htdocs\belajar\login\user.php on line 20
======== struktur file saya header sama footer dipisah jadi tinggal di include.
<pre> <?php
include('init.php');
include('header.php');
if ( !isset($_SESSION['user'])) { header('Location:login.php'); } ?> <h1>Halaman Home <?php echo $_SESSION['user']; ?></h1>
<?php if ( cek_status($_SESSION['user']) ) { echo "halo admin"; } ?> <?php include('footer.php') ?> </pre>
apa gara2 include init.php 2x (di header.php & home.php) maka terjadi eror?