Postingan lainnya
bagaimana cara panggil data dari table selain nama user dari session yang sedang login di php ?
ini init yang saya load ke semua halaman
<?php
session_start();
require_once "functions/db.php";
require_once "functions/register.php";
require_once "functions/login.php";
?>
ini databasenya
<?php
$host = "127.0.0.1";
$user = "root";
$password = "";
$db = "wherco";
// create connection
$connect = new mysqli($host, $user, $password, $db);
// check connection
if($connect->connect_error) {
die("connection failed : " . $connect->connect_error);
} else {
// echo "Successfully Connected";
}
?>
ini funtion dari login
<?php
//fungsi untuk LOGIN
function cek_data($nama, $pass){
global $connect;
//mencegah injection
$nama = mysqli_real_escape_string($connect, $nama);
$pass = mysqli_real_escape_string($connect, $pass);
$query = "SELECT password FROM pelanggan WHERE username = '$nama'";
$result = mysqli_query($connect, $query);
//hasil dari fecth assoc adalah array
$hash = mysqli_fetch_assoc($result);
if ( password_verify($pass, $hash['password']) ){
return true;
}else{
return false;
}
}
//menguji nama di database
function login_cek_nama($nama){
global $connect;
$nama = mysqli_real_escape_string($connect, $nama);
$query = "SELECT * FROM pelanggan WHERE username = '$nama'";
//setelah kita menghasilkan query, kita mau hitung apakah rowsnya da atau tidak , kalu rowsnya tidak sama dengan 0 makan return true
if ( $result = mysqli_query($connect, $query) ){
if(mysqli_num_rows($result) != 0) return true;
else return false ;
}
}
?>
Ini halaman login
<?php
require_once "core/init.php";
if(isset($_SESSION['user']) ){
$_SESSION['msg'] = 'anda harus logout terlebih dahulu untuk mengakses halaman login';
header('Location: index.php');
}
$error='';
if( isset($_POST['submit']) ){
$nama = $_POST['username'];
$pass = $_POST['password'];
if(!empty(trim($nama)) && !empty(trim($pass)) ){
if(login_cek_nama($nama) ){
if(cek_data($nama, $pass)) {
$_SESSION ['user'] = $nama;// important
header('Location:order.php');
}else{
$error= 'data ada yang salah';
}
}else{
$error= 'namanya belum terdaftar di database';
}
}else{
$error= 'tidak boleh kosong';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<!-- Latest compiled and minified css -->
<link rel="stylesheet" href="view/css/bootstrap.min.css">
<!-- optional theme-->
<link rel="stylesheet" href="view/css/bootstrap-theme.min.css">
<!--my custom css-->
<link rel="stylesheet" href="view/css/style.css">
<!--font-awesome-->
<link rel="stylesheet" href="view/font-awesome/css/font-awesome.min.css">
<!---------------------------------->
<style>
body,
html{
font-family: arial monospace;
background-color :#eee;
}
.container{
display: flex;
align-items: center;
justify-content: center;
}
.page{
height: 300px;
width: 300px;
background: #fff;
margin-top: 70px;
margin-bottom: 70px;
}
.content{
height: 100%;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.logo-register h2{
font-family:Chaparral Pro Light;
font-weight: bold;
font-style:none;
}
.logo-register h5{
font-family: calibri;
color:#808080;
border-bottom:1px solid #eee;
padding-bottom: 5px;
}
.form-group .form-control{
border-radius: 0;
border:1px solid #eee;
padding: 5px;
}
.bawah-submit h5{ font-family: calibri;
color:#808080;}
.punya-akun h5{font-family: calibri;
color:#808080;}
#error{color: rgb(212, 19, 65);
}
</style>
</head>
<body>
<div class="container">
<div class="page">
<div class="content">
<div class="row">
<div class="logo-register">
<h2><a href="index.php">Wherco</a></h2>
<h5>Login untuk melakukan order</h5>
</div>
<?php if($error != ' '){ ?>
<div id="error">
<?php echo $error; ?>
</div> <br>
<?php } ?>
<form class="form-horizontal" action="login.php" method="post">
<div class="form-group">
<input type="text" class="form-control" style="text-transform:lowercase;"
name ="username" placeholder="Nama lengkap" Required autofocus>
</div>
<div class="form-group">
<input type="password" style="text-transform:lowercase;" class="form-
cotrol" name="password" id="exampleInputEmail1" placeholder="Kata
sandi" Required>
</div>
<div class="form-group">
<input type="submit" name="submit"
class="btn btn-info btn-block" value="Login">
</div>
<div class="punya-akun">
<h5>Belum punya akun? <a href="register.php">Daftar</a> </h5>
</div>
<!--<div class="">
<h5> Punya akun? <a href="#">Masuk</a> </h5>
</div>-->
</div>
</div>
</div>
</div
ini funtion untuk register
<?php
function register_user($nama, $email, $alamat, $telp, $pass){
global $connect;
//mencegah sql injection
$nama = mysqli_real_escape_string($connect, $nama);
$email = mysqli_real_escape_string($connect, $email);
$alamat = mysqli_real_escape_string($connect, $alamat);
$telp = mysqli_real_escape_string($connect, $telp);
$pass = mysqli_real_escape_string($connect, $pass);
//ssebelum insert kita haru mmengubah sebelumnya dengana hash
$pass = password_hash($pass, PASSWORD_DEFAULT);
$query = "INSERT INTO pelanggan (username, email, alamat, telp, password) VALUES ('$nama', '$email', '$alamat', '$telp', '$pass')";
if( mysqli_query($connect, $query) ){
return true;
}else{
return false;
}
}
//cek_nama_kembar
function register_cek_nama($nama){
global $connect;
$nama = mysqli_real_escape_string($connect, $nama);
//cek apakah sudah ada belum di dalama table dengan nama yang sama
$query = "SELECT * FROM pelanggan WHERE username ='$nama'";
if( $result = mysqli_query($connect, $query) ){
if(mysqli_num_rows($result) == 0) return true;
else return false;
}
}
?>
ini halaman register
<?php require_once "core/init.php";
$error='';
if( isset($_POST['submit']) ){
$nama = $_POST['username'];
$email = $_POST['email'];
$alamat = $_POST['alamat'];
$telp = $_POST['telp'];
$pass = $_POST['password'];
if(!empty(trim($nama)) && !empty(trim($email)) && !empty(trim($alamat)) && !empty(trim($telp)) && !empty(trim($pass)) ){
if(register_cek_nama($nama, $email) ){
//memasukan database
if(register_user($nama, $email, $alamat, $telp, $pass)) {
$error= 'berhasil daftar register';
}else{
$error= 'gagal register';}
}else{
$error= ' nama sudah ada, tidak bisa daftar ';}
}else{
$error= 'form tidak boleh kosong';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<!-- Latest compiled and minified css -->
<link rel="stylesheet" href="view/css/bootstrap.min.css">
<!-- optional theme-->
<link rel="stylesheet" href="view/css/bootstrap-theme.min.css">
<!--my custom css-->
<link rel="stylesheet" href="view/css/style.css">
<!--font-awesome-->
<link rel="stylesheet" href="view/font-awesome/css/font-awesome.min.css">
<!---------------------------------->
<style>
body{
font-family: arial monospace;
background-color :#eee;
}
.container{
display: flex;
align-items: center;
justify-content: center;}
.page{
padding:5px;
margin-top: 40px;
margin-bottom: 40px;
height: 510px;
width: 400px;
background: #fff;
}
.content{
height: 100%;
padding: 40px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.logo-register h2{
font-family:Chaparral Pro Light;
font-weight: bold;
}
.logo-register h5{
font-family: calibri;
color:#808080;
border-bottom:1px solid #eee;
padding-bottom: 5px;
}
.form-group .form-control{
border-radius: 0;
border:1px solid #eee;
padding: 5px;
}
.bawah-submit h5{ font-family: calibri;
color:#808080;}
.punya-akun h5{font-family: calibri;
color:#808080;}
#error{color: rgb(212, 19, 65);
}
</style>
</head>
<body>
<div class="container">
<div class="page">
<div class="content">
<div class="row">
<div class="logo-register">
<h2><a href="index.php">Wherco</a></h2>
<h5>Buat akun untuk melakukan order</h5>
</div>
<?php
if(isset($_SESSION['msg'])) { ?>
<div id="error">
<?php echo $_SESSION['msg'];
unset($_SESSION['msg']); ?>
</div> <br>
<?php } ?>
<?php if($error != ' '){ ?>
<div id="error">
<?php echo $error; ?>
</div>
<?php } ?>
<form class="form-horizontal" action="register.php" method="post">
<div class="form-group">
<input type="text" class="form-control" style="text-transform:lowercase;" name="username" placeholder="Nama lengkap" Required autofocus>
</div>
<div class="form-group">
<input type="email" class="form-control" name="email" placeholder="Alamat email" Required>
</div>
<div class="form-group">
<textarea class="form-control" rows="3" name="alamat" placeholder="Alamat tinggal" Required autofocus ></textarea>
</div>
<div class="form-group">
<input type="number" class="form-control" name="telp" placeholder="Nomer yang bisa di hubungi" Required>
</div>
<div class="form-group">
<input type="password" style="text-transform:lowercase;" class="form-control" name="password" id="exampleInputEmail1" placeholder="Kata sandi untuk akun order" Required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-info btn-block" value="Daftar">
</div>
<div class="bawah-submit">
<h5> Dengan mendaftar anda menyetujui Ketentuan<br>
dan Kebijakan Privasi kami </h5>
</div>
<div class="punya-akun">
<h5> Punya akun? <a href="login.php">Masuk</a> </h5>
</div>
</div>
</div>
</div>
</div
Ini halaman order
<?php
require_once "core/init.php";
if( !isset($_SESSION['user']) ){
$_SESSION['msg'] = 'anda harus punya akun untuk melakukan order';
header('Location: register.php');
}
?>
<?php
require_once "view/header.php";
?>
<style>
body,
html{
font-family: arial monospace;
padding:0;
}
.bagian-judul-form-1{
}
.bagian-judul-form-2{
color:#808080;
}
.bagian-kiri a{
color:blue;
}
.bagian-kiri{
color:#808080;
margin-bottom: 20px;
padding : 2px;
}
.form-group .form-control{
border-radius:0;
}
.form-control{
border-radius:0;
}
</style>
<div class="tengah">
<div class="container">
<div class="row">
<div class="col-md-3 col-sm-12 col-xs-12">
<div class="bagian-kiri">
<h4><p class="">Kurang yakin? apakah mau lihat <a href="portofolio.php">portofolio</a> kami dahulu? atau bingung bagaimana <a href="order">sistem order </a> kami berjalan? kami siap membantu :) </p></h4>
</div>
</div>
<div class="col-md-offset-3 col-md-6">
<div class="bagian-judul-form-1">
<h3>Form untuk melakukan order</h3>
</div>
<div class="bagian-judul-form-2">
<h5><p class="text-justify">Mohon form ini di isi dengan jelas dan benar,
untuk memudahkan proses verivikasi order
untuk jasa desaign anda.
Terima Kasih.</p></h5>
</div>
</div>
<div class="row">
<div class="col-md-offset-6 col-md-5 col-md-offset-6">
<fieldset disabled>
<div class="form-group">
<input type="nama" class="form-control" id="disabledTextInput" value="<?php
echo $_SESSION['user'];?>" placeholder="Nama">
</div>
<div class="form-group">
<input type="email" class="form-control" id="disabledTextInput" value="<?php
echo $_SESSION['email'];?>" placeholder="Email"> <!----- saat melakukan pemanggilan email , email tidak di kenali ---->
</div>
</fieldset>
<div class="form-group">
<select class="form-control">
<option>none package</option>
<option>Broze</option>
<option>Silver</option>
<option>Gold</option>
</select>
</div>
<div class="form-group">
<textarea class="form-control" rows="3" placeholder="Deskripsikan latar belakang. contoh: penjualan kopi bertema minamal dengan tempat di tengah kota. nama toko -kopi rakyat- " Required autofocus></textarea>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-info btn-block" value="Order">
</div>
</div>
</div>
</div>
</div>
</div>
<?php
require_once "view/footer.php"
?>
disini saya mencoba untuk memanggil data dari session di dalam form. untuk pemanggilan session user saya berhasil tetapi untuk pemanggilan session email saya tidak berhasil, bagaimana caranya agar email dapat di panggil melalui session? saya sangat awam untuk penggunaan function, saya baru belajar tolong bantuannya gan :)
19 Jawaban:
tinggal dibuat query aja biar kepanggil
select * from table where kolom = '$_SESSION['user']'
itu yang jadi pertanyyaan. di mana saya harus taruh query tersebut mas ? saya baru belajar pakek function mohon pencerahan
kalo lihat scriptnya sih agan sepertinya belum mendefinisikan $_SESSION['email']. mestinya di fungsi login agan definisikan dulu $_SESSION['email'] bersamaan dengan $_SESSION['user'].
di fungsi login coba agan tambahkan fungsi ambil_data dengan query seperti ini
function ambil_data($nama){
global $connect;
//mencegah injection
$nama = mysqli_real_escape_string($connect, $nama);
$query = "SELECT * FROM pelanggan WHERE username = '$nama'";
$result = mysqli_query($connect, $query);
if($result)
{
$userData = mysqli_fetch_assoc($result);
}
else
{
$userData = false;
}
return $userData;
}
dengan return object database user tersebut di halaman login agan buat seperti ini
if(login_cek_nama($nama) ){
if(cek_data($nama, $pass)) {
$userData = ambil_data($nama);
$_SESSION ['user'] = $nama;// important
$_SESSION ['email'] = $userData->email;// important
header('Location:order.php');
}else{
$error= 'data ada yang salah';
}
}else{
$error= 'namanya belum terdaftar di database';
}
Alasan kenapa $_SESSION['email'] tidak dapat dipanggil, karena kamu belum membuat session email. Coba tambahkan dibagian ini:
if(login_cek_nama($nama) ){
if(cek_data($nama, $pass)) {
$_SESSION ['user'] = $nama;// important
header('Location:order.php');
}else{
$error= 'data ada yang salah';
}
Menjadi seperti dibawah ini
if(login_cek_nama($nama) ){
if(cek_data($nama, $pass)) {
$_SESSION ['user'] = $nama;// important
$_SESSION ['session'] = $nama;// important
$_SESSION['email'] = $hash['email'];
header('Location:order.php');
}else{
$error= 'data ada yang salah';
}
saya sudah buat seperti ini di paling atas halaman login.php
<?php
require_once "core/init.php";
if(isset($_SESSION['user']) ){
$_SESSION['msg'] = 'anda harus logout terlebih dahulu untuk mengakses halaman login';
header('Location: index.php');
}
$error='';
if( isset($_POST['submit']) ){
$nama = $_POST['username'];
$pass = $_POST['password'];
if(!empty(trim($nama)) && !empty(trim($pass)) ){
if(login_cek_nama($nama) ){
if(cek_data($nama, $pass)) {
$userData = ambil_data($nama);
$_SESSION ['user'] = $nama;
$_SESSION ['email'] = $email;
// important
header('Location:order.php');
}else{
$error= 'data ada yang salah';
}
}else{
$error= 'namanya belum terdaftar di database';
}
}else{
$error= 'tidak boleh kosong';
}
}
?>
dan saya udah buat function ambil_Data di halaman funtion login saya
function ambil_data($nama){
global $connect;
//mencegah injection
$nama = mysqli_real_escape_string($connect, $nama);
$query = "SELECT * FROM pelanggan WHERE username = '$nama'";
$result = mysqli_query($connect, $query);
if($result)
{
$userData = mysqli_fetch_assoc($result);
}
else
{
$userData = false;
}
return $userData;
}
tetapi sya amendapatkan error seperti ini
Warning: mysqli::__construct(): (HY000/2002): No connection could be made because the target machine actively refused it. in C:\xampp\htdocs\latihanphp\Tugas_Akhir\functions\db.php on line 9
connection failed : No connection could be made because the target machine actively refused it.
makasi mas yang udah partisipasi bantu saya, mohon pencerahan
lah yg error disini : db.php Coba tampilkan db.php
ini mas db.phpnya
<?php
$host = "127.0.0.1";
$user = "root";
$password = "";
$db = "wherco";
// create connection
$connect = new mysqli($host, $user, $password, $db);
// check connection
if($connect->connect_error) {
die("connection failed : " . $connect->connect_error);
} else {
// echo "Successfully Connected";
}
?>
Kalo error yang terakhir kayanya dari xampp nya.
kok bisa gara gara xampp om ? xampp saya udah saya update yang terbaru
saya juga sudah lakukan caranya mas @sangmisteri masih beum bisa juga.
if(login_cek_nama($nama) ){
if(cek_data($nama, $pass)) {
$_SESSION ['user'] = $nama;// important
$_SESSION ['session'] = $nama;// important
$_SESSION['email'] = $hash['email'];
header('Location:order.php');
}else{
$error= 'data ada yang salah';
}
sekarang masalah databasenya tidak ada, tetapi saat melakukukan pemanggilan session email tidak terjadi apa apa. cuma blank kosong tidak ada perubahan tidak ada error.
kalau ga ada error berarti $_SESSION['email'] sudah terdefinisi hanya saja valunya kosong. bisa dicoba print session email setelah deklarasi.
$_SESSION['email'] = ....;
print $_SESSION['email'];
kalau benar ada valuenya harusnya saat di panggil di manapun bisa.
tadi cuma gara gara cache web kok, errornya tetep mas ini
Notice: Undefined index: email in C:\xampp\htdocs\latihanphp\Tugas_Akhir\order.php on line 83
Itu teman2 sudah jelaskan semua. Jangan buru2 fokus, perhatikan kodenya baik2. Tambahkan @ pada semua $_SESSION sehingga jadi @$_SESSION. Kalau agan tidak paham kenapa harus ditambah @ silahkan pelajari php dan cari tahu memgenai fungsi isset.
Sebenarnya error agan ini ada 2. Satu di masalah $_SESSION['email] yg belum di buat, sudah dijelaskan di atas dan sudah di buat. Kedua $_SESSION['email'] yg diecho pada halaman order.php makanya muncul notice undefine index email. Lakukan dulu pengecekan. Itu $_Session['user] dan email sudah ada nilai apa belum. Caranya bagaimana? Var_dump atau die dulu variable itu.
// Bagian ini
if(cek_data($nama, $pass)) {
$_SESSION ['user'] = $nama;
// buat jg $_session email
// Cek sudah benar ada datanya atau tidak dengan di die dulu
die($_SESSION['user']);
// Kalau agan lihat tulisan sesuai yg diinginkan berarti tidak ada masalah. Lakukan juga pengecekan pada session email. Semua data harus ada nilainya. Kalau ada yg kosong maka berarti error ada pada proses2 sebelumnya.
header('Location:order.php');
}else{
$error= 'data ada yang salah';
}
mohon maaf mas, saya tidak mengerti cara penyampaiannya. saya baru dalam penggunaan function. barang kali ada yang bisa contohkan cara penempatan kodenya? terima kasih