limitation acces admin/user

Eléphant du PHP | 161 Messages

09 mars 2005, 16:20

salut tlm,
j'ai une vieille couille dont je vient de me rendre compte...

j'ai fait un system de login/mdp avec les sessions.
Lorsqu'une personne se logue, j'interoge ma base sql. si le login et mdp sont bons je met les variables name,firstname,login et privilege dans la session.

Le truc que je voulais c'est limiter l'acces a certaines pages en fonction de privilege (admin ou user)
donc j'inclue dans mes pages ou jveux limiter l'acces :
//////////////inc.checkadmin.php//////////////////////////
 
<?php
  if(isset($_SESSION['privilege']) && $_SESSION['privilege'] == 'admin') {
  } //si ta les privileges admin tu executes le code
  else { //sinon t redirigé sur la page d'erreur
  header("Location: index.php?p=_error3");
  }
?>
quand jveux aller sur la page administration impec ca me redirige les loulous qui sont pas admin.
Par contre, j'ai un fichier del.php qui me permet de supprimer des news qui marche avec un passage par variable.

Alors jme suis dit j'inclue aussi le fichier inc.checkadmin.php en début du fichier del.php et ca va rouler. comme ceci :
/////////////////////////del.php/////////////////////////////////
<?php
include("inc.checkadmin.php");
include("connect.php"); //sql parameter
$datePost=$_GET['datepost']; //get id of the person you want to delete from the DB 

// select default database
mysql_select_db($db_name,$cnx);
mysql_query("delete from newstable where datePost='$datePost'") or die('SQL Error !'.mysql_error());
// close mysql
mysql_close();

// redirection
header("Location: index.php?p=_news1");
?>
mais voila si qq1 lance une commande dans l'url du type
del.php?datepost=XXXX XX XX
et que ca correspond bien a la date d'une news posté poom poom poom jlai bien profond ca enleve la news...

Je pense que malgres le header("Location :...") il lis quand mm le code apres la condition. non ?
et donc j'ai chercher des fonctions pouvant stopper le code. style break; mais apparement break; c juste pr stopper une boucle ://

donc jsais pas trop comment m'en sortir avec ca

Mammouth du PHP | 1339 Messages

09 mars 2005, 16:31

Je te conseil de transformer ta page inc.checkadmin.php en une fonction PHP qui si elle est retourner false ca redirige sinon effectivement ca affiche la page !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 161 Messages

09 mars 2005, 16:51

jviens de tenter

<?php
if(!isset($_SESSION['privilege']) || $_SESSION['privilege'] != 'admin') {
header("Location: index.php?p=_error3");
}
else {
}
?>

mais jpeux tjs virer des loulous sans etre admin et sans mm etre loguer... :/

Mammouth du PHP | 1339 Messages

09 mars 2005, 16:57

Sert toi de exit; alors :)
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 161 Messages

09 mars 2005, 17:02

lol ca exist ca ?

Eléphant du PHP | 161 Messages

09 mars 2005, 17:03

ah ue ca roule maintenant :)

Eléphant du PHP | 161 Messages

10 mars 2005, 18:54

ah bas oue c ce qu'il conseil sur la doc officiel en +
http://fr.php.net/header

et putin ca c bon a savoir aussi quon peut faire ca
<?php
header("Location: http://" . $_SERVER['HTTP_HOST']
. dirname($_SERVER['PHP_SELF'])
. "/" . $relative_url);
?>