Page 1 sur 1

limitation acces admin/user

Posté : 09 mars 2005, 16:20
par Vianney
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

Posté : 09 mars 2005, 16:31
par Elie
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 !

Posté : 09 mars 2005, 16:51
par Vianney
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... :/

Posté : 09 mars 2005, 16:57
par Elie
Sert toi de exit; alors :)

Posté : 09 mars 2005, 17:02
par Vianney
lol ca exist ca ?

Posté : 09 mars 2005, 17:03
par Vianney
ah ue ca roule maintenant :)

Posté : 10 mars 2005, 18:54
par Vianney
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);
?>