hak akses

Robert James M · Feb 5, 2013
mas misalkan aku punya login seperti biasa, lalu di proses seperti ini
<?php
session_start(); 
include 'koneksi.php';

$userid = $_POST['user']; 
$psw 	= $_POST['password']; 
$op 	= $_GET['op']; 

if($op=="in"){ 
$cek = mysql_query("select user.nama,user.password,aksi.url from tipe_user_aksi,aksi,user 
where user.user='$userid' and password='$psw' and user.id=tipe_user_aksi.id_user and aksi.id = tipe_user_aksi.id_aksi"); 

if(mysql_num_rows($cek)==1){//jika berhasil akan bernilai 1 
$c = mysql_fetch_array($cek); 
$a=$c['url']; 
header("location:".$a); 
}else{ 
die("password salah <a href=\"javascript:history.back()\">kembali</a>"); 
} 

}else if($op=="out"){ 
unset($_SESSION['user']); 
header("location:login_a.php"); 
} 
?> 

nah semua user misalnya masuk ke home.php,yang isinya :

1. index.php
2. form.php

andai ada 2 user, USER A bisa mengakses semuanya tapi USER B hanya bisa mengakses index.php. lalu untuk mencegah agar USER B tidak bisa mengakses form.php itu bagaimana?

untuk susunan databasenya

aksi

1.id
2.url

tipe_user_aksi

1.id
2.id_user
3.id_aksi

user

1.id
2.nama
3.password

terima kasih
Silahkan login untuk menjawab!
0
Loading...
Ellyx Christian · Feb 6, 2013 · 0 Suka · 0 Tidak Suka
contoh datanya seperti apa?
0
Loading...
Robert James M · Feb 6, 2013 · 0 Suka · 0 Tidak Suka
data apa maksudnya?
0
Loading...
Ellyx Christian · Feb 7, 2013 · 0 Suka · 0 Tidak Suka
contoh data dari masing masing table
0
Loading...
Robert James M · Feb 7, 2013 · 0 Suka · 0 Tidak Suka
untuk aksi misalnya ya mas:

id = 1, url= index.php
id = 2, url= form.php
id = 3, url= register.php

untuk user

id = 1, nama= budi, password = 123
id = 2, nama= ani, password = 456

untuk tipe_user_aksi

id = 1, id_user= 1, id_aksi= 1
id = 2, id_user= 1, id_aksi= 2
id = 3, id_user= 1, id_aksi= 3
id = 4, id_user= 2, id_aksi= 1
id = 5, id_user= 2, id_aksi= 2

kira-kira seperti itu mas, mohon bantuannya
0
Loading...
Ellyx Christian · Feb 9, 2013 · 0 Suka · 0 Tidak Suka
coba seperti tambahkan kode di bawah diawal masing masing file:
<?php
session_start();
$url = ltrim($_SERVER['PHP_SELF'], '/');
$dataurl = mysql_fetch_array(mysql_query("select * from aksi where url='".$url."'"));
$akses = mysql_query("select * from tipe_user_aksi where id_aksi='".$dataurl['id']."' and id_user='".$_SESSION['user']."'");
if(mysql_num_rows($akses) <= 0){
echo 'Forbidden';
exit;
}
kemudian ubah kode login kamu jadi:
<?php
session_start(); 
include 'koneksi.php';
 
$userid = mysql_real_escape_string($_POST['user']); 
$psw 	= mysql_real_escape_string($_POST['password']); 
$op 	= $_GET['op']; 
 
if($op=="in"){ 
$cek = mysql_query("select * from user where user.user='$userid' and password='$psw'"); 
if(mysql_num_rows($cek)==1){//jika berhasil akan bernilai 1 
$c = mysql_fetch_array($cek); 
$_SESSION['user'] = $c['id'];
header("location: admin.php"); // atau ke halaman lain, sesuikan
}else{ 
die("password salah <a href=\"javascript:history.back()\">kembali</a>"); 
} 
 
}else if($op=="out"){ 
unset($_SESSION['user']); 
header("location:login_a.php"); 
} 
?> 
0
Loading...
Robert James M · Feb 9, 2013 · 0 Suka · 0 Tidak Suka
mas sudah diubah seperti ini
<?php
session_start(); 
include 'koneksi.php';
 
$userid = mysql_real_escape_string($_POST['user']); 
$psw 	= mysql_real_escape_string($_POST['password']); 
$op 	= $_GET['op']; 
 
if($op=="in"){ 
$cek = mysql_query("select * from user where user.user='$userid' and password='$psw'"); 
if(mysql_num_rows($cek)==1){//jika berhasil akan bernilai 1 
$c = mysql_fetch_array($cek); 
$_SESSION['user'] = $c['id'];
header("location: home_admin.php"); // atau ke halaman lain, sesuikan
}else{ 
die("password salah <a href=\"javascript:history.back()\">kembali</a>"); 
} 
 
}else if($op=="out"){ 
unset($_SESSION['user']); 
header("location:login_a.php"); 
} 
?> 

terus diatasnya tiap file mau home utama atau yang lain sudah ditaro ini diatasnya
<?php
session_start();
$url = ltrim($_SERVER['PHP_SELF'], '/');
$dataurl = mysql_fetch_array(mysql_query("select * from aksi where url='".$url."'"));
$akses = mysql_query("select * from tipe_user_aksi where id_aksi='".$dataurl['id']."' and id_user='".$_SESSION['user']."'");
if(mysql_num_rows($akses) <= 0){
echo 'Forbidden';
exit;
}
?>

muncul error

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\dhl\home_admin.php on line 4

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\dhl\home_admin.php on line 6
Forbidden

tapi kalo di kode ini ditambah jadi gini
<?php
session_start();
include 'koneksi.php';
$url = ltrim($_SERVER['PHP_SELF'], '/');
$dataurl = mysql_fetch_array(mysql_query("select * from aksi where url='".$url."'"));
$akses = mysql_query("select * from tipe_user_aksi where id_aksi='".$dataurl['id']."' and id_user='".$_SESSION['user']."'");
if(mysql_num_rows($akses) <= 0){
echo 'Forbidden';
exit;
}
?>

langsung forbidden
0
Loading...
Ellyx Christian · Feb 11, 2013 · 0 Suka · 0 Tidak Suka
coba kamu debug seperti ini:
<?php
session_start();
include 'koneksi.php';
$url = ltrim($_SERVER['PHP_SELF'], '/');
die($url); //untuk debug
$dataurl = mysql_fetch_array(mysql_query("select * from aksi where url='".$url."'"));
$akses = mysql_query("select * from tipe_user_aksi where id_aksi='".$dataurl['id']."' and id_user='".$_SESSION['user']."'");
if(mysql_num_rows($akses) <= 0){
echo 'Forbidden';
exit;
}
?>
kemudian cocokan url-nya dengan data yang ada didatabase.
0
Loading...
Robert James M · Feb 11, 2013 · 0 Suka · 0 Tidak Suka
dijalanin malah keluar "login_2/waw/ayo.php" ga masuk ke halamannya mas
0
Loading...
Ellyx Christian · Feb 21, 2013 · 0 Suka · 0 Tidak Suka
coba kamu di file koneksi.php tambahkan seperti:

define('BASE_URL', '/login_2/'); //kalau kamu akses webnya seperti: http://localhost/login_2/

atau

define('BASE_URL', '/login_2/waw/'); //kalau kamu akses webnya seperti: http://localhost/login_2/waw/

kemudian ubah kode untuk bagian awal file menjadi:
<?php
session_start();
include 'koneksi.php';
$arrayCurrentPath = explode('?',$_SERVER['REQUEST_URI']);
$url = substr($arrayCurrentPath[0], strlen(BASE_URL));
$dataurl = mysql_fetch_array(mysql_query("select * from aksi where url='".$url."'"));
$akses = mysql_query("select * from tipe_user_aksi where id_aksi='".$dataurl['id']."' and id_user='".$_SESSION['user']."'");
if(mysql_num_rows($akses) <= 0){
echo 'Forbidden';
exit;
}
?>