Page 1 sur 1

restriction d'acces a certaine page (php/mysql)

Posté : 13 mai 2008, 17:58
par guigui69
Bonjour à tous,

J'ai dans ma base une partie membre (avec login et mdp en md5), mais je voudrait savoir si c'est possible de faire de la restriction a certain page.

exemple: j'ai des pages mise à jour de prix, inventaire etc... ou je voudrait limiter les accès à certains utilisateurs.

Comment mettre en place une restriction au niveau des pages .?
Est-ce possible ?
Des exemples qui pourrait me guider?

merci pour votre aide

guigui69

Posté : 13 mai 2008, 18:03
par Truc
Salut,

Comment est géré l'accès aux pages qui nécessitent une identification ?

Ta question y trouveras sa réponse :)

Posté : 13 mai 2008, 18:25
par AB
Pour te donner le début de la réponse que t'a soufflée Truc

Ce que tu as fait pour une personne, tu peux le faire pour plusieurs.

Par exemple, si ton accès administrateur est contrôlé par une variable de session, rien ne t'empêche de définir des variables de session supplémentaires ou différentes en fonction de l'authentification :wink:

Donc non, ce n'est pas possible :wink: :D

Posté : 14 mai 2008, 09:03
par guigui69
Merci pour vos réponses.

Voici comment est géré mes authentifications:
<?php session_start(); ?>
<?php
if(!isset($_SESSION['login'])) {
	include('login.php');
	echo $_SESSION['login'];
	echo 'Vous n\'êtes pas autoris´ à acceder à cette zone';
	echo '<br>';
  
  exit;
}
else
{
echo '<div id="auth"> Bienvenue sur l\'espace restreint</div> ';
}
page login.php
function stripgpc($value) {
if(get_magic_quotes_gpc()) $value = stripslashes($value);
return $value;
}

$mdp = isset($_POST['mdp']) ? md5(stripgpc($_POST['mdp'])) : '';
$login = isset($_POST['login']) ? stripgpc($_POST['login']) : '';

if(!empty($mdp) && !empty($login)) 
{
$server="********";
$user="root";
$pass="********";
$db="******";
mysql_connect($server,$user,$pass) or die('erreur de connexion');
mysql_select_db($db) or die ('impossible de se connecter a la base'); 

$selection = sprintf("SELECT COUNT(*) as compte FROM user WHERE mdp_user ='%s' AND login_user ='%s'",
mysql_real_escape_string($mdp),
mysql_real_escape_string($login)); 

$query = mysql_query($selection) or die(mysql_error());
$totalReponse = mysql_fetch_assoc($query);

if ($totalReponse['compte'] == 1 ) 
		{
		$_SESSION['login'] = $login;
        header("Location: acceuil.php"); 
		exit(); 
		}
		else 
		{
		echo '<div id="message">membre non identifié<br>';
		echo 'login ou mot de passe incorrecte ou manquant 2</div>';
		} 
		}
else
	{
 $message = 'login ou mot de passe manquant';
    }   		
}
Comment faire ?
Dans ma table user je doit créer un champ par exemple prix de revient que je met a 1 ou 0 et dans ma page je demande le passage en session de cette variable.

c'est ca?
Quelqu'un aurait un petit exemple ?

Merci pour votre aide

guigiu69

Posté : 14 mai 2008, 10:37
par FredoMkb
Bonjour :)

Bon, j'avoue avant tout que je suis totalement incapable de t'aider techniquement sur ce type de questions, mais je voudrais juste faire une remarque :

Je me suis aperçu qu'il y avait plusieurs manières d'affiner ou préciser des autorisations, la plus évidente est celle qui consiste à donner des droits ou restrictions individuellement à chaque membre d'un site, mais il y a aussi la possibilité de mettre en place des groupes, avec des droits et restrictions spécifiques à chacun, tous les membres d'un groupe partagent dès lors les mêmes autorisations.

Chaque méthode possède ses avantages, et les deux peuvent même cohabiter... mais, personnellement, j'aurais tendance à préférer une méthode de groupe dans un premier temps, qui me semble tout de même plus simple à mettre en place et reste en tout cas plus souple à manipuler pour assurer les éventuelles modifications ultérieures...

Maintenant, comment mettre techniquement en oeuvre tout ça... bein... j'en sais fichtre rien, mais je suis sûr que des développeurs plus expérimentés pourront nous donner quelques pistes ou idées... je l'espère :D

à+ :)

Posté : 14 mai 2008, 10:53
par geqr
Je pense qu'il est essentiel que tu définisses des rangs d'utilisateur pour autoriser ou restreinte certains d'entre eux..

AB t'as donné un début de réponse plus haut...les variables de session..

Tu peux utiliser un champ dans ta table qui te permet de définir le rang de l'utilisateur, suffit ensuite d'ajouter une vérification du rang au début des pages à restreindre..

Posté : 14 mai 2008, 14:37
par Hywan
Hey :),

Au lieu d'utiliser le terme « rang », j'utiliserais plutôt le terme « groupe ». Mais bon l'idée est là. Il faut que chaque membre appartienne à un groupe et que tu donnes des droits pour chaque groupe. Enfin, en fonction de ces droits, ils ont accès à telle ou telle partie du site :).

Inspiration possible pour un système plus poussé : la gestion des droits sous Unix et les gestions des droits étendus via ACL.

Posté : 14 mai 2008, 14:57
par geqr
En effet, groupe est plus approprié que rang. :oops:

Et pour un système moins ellaboré ou tout du moins, moins complexe, les forums phpBB sont un pas si mauvais exemple...

Posté : 14 mai 2008, 15:18
par Truc
rang, groupe, famille, clan, secte... du pareil au même... l'idée est là.

Donc je finalise mon idée de départ puisque tout le monde souffle la réponse...
Si tu arrives a restreindre certaines pages à certains utilisateurs alors de la même manière tu peux restreindre ces mêmes utilisateurs à certaines pages.
Si (NON identifié)
Ciao
Sinon
Si (j'appartient au clan des voilakesapu)
affichage des voilakesapu
sinon
affichage des autres

Posté : 14 mai 2008, 20:28
par AB
...
Comment faire ?
Dans ma table user je doit créer un champ par exemple prix de revient que je met a 1 ou 0 et dans ma page je demande le passage en session de cette variable.

c'est ca?
Quelqu'un aurait un petit exemple ?

Merci pour votre aide

guigiu69
Cela peut-être une solution.

A mon avis ton pb est que tu regarde la page d'authentification pour avoir une idée, alors que tu trouveras la solution en regardant le script de restriction qui permet d'avoir accès aux pages administrateur.
Il faut partir du résultat pour trouver la solution - dans le même ordre d'idée, la signature de mere-teresa : Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours !

Pour en revenir à ton pb, le code actuel de restriction d'accès aux pages administrateur doit être quelque chose comme
if(!isset($_SESSION['login'])) die('Vous devez être authentifié pour avoir accès à cette partie du site');
Avec ce code tu ne vérifie que l'existence de la session login - que tu génère dans ton script d'authentification dès que l'utilisateur est dans ta table "user". Donc en l'état, difficile de faire du tri parmi les user. Maintenant si par exemple tu affecte une valeur à $_SESSION['login'], le tri devient possible.

Sur le principe, pour les pages admin accessibles à tous les utilisateurs authentifiés tu peux faire
if(!isset($_SESSION['login'])) die('Vous devez être authentifié pour avoir accès à cette partie du site');
Pour les pages de modification des prix, en supposant que tu affecte la valeur 1 aux utilisateurs autorisés
if(!isset($_SESSION['login'])) die('Vous devez être authentifié pour avoir accès à cette partie du site');
if(isset($_SESSION['login']) && $_SESSION['login'] != 1) die('Vous n\'avez pas les autorisations nécessaires pour accéder à cette partie du site');
Tu peux également avoir des pages communes à tous les utilisateurs authentifiés
 if(!isset($_SESSION['login'])) die('Vous devez être authentifié pour avoir accès à cette partie du site');
et n'autoriser certaines fonctionnalités à l'intérieur de ces pages que pour certains utilisateurs
if($_SESSION['login'] == 1)
{//script
}
else echo 'vous n\'avez pas les droits pour utiliser ces fonctionnalités';
Comme tu l'a dit plus haut, tu peux modifier ta table user en rajoutant un champ par exemple 'autorisation' pour définir les droits. Faudra donc modifier ta requête en conséquence pour pouvoir lire ce champ.
$selection = sprintf("SELECT autorisation FROM user WHERE mdp_user ='%s' AND login_user ='%s'",
mysql_real_escape_string($mdp),
mysql_real_escape_string($login)); 

$query = mysql_query($selection) or die(mysql_error());
$total_reponse = mysql_num_rows($query);
$reponse = mysql_fetch_assoc($query);

if ($total_reponse == 1) 
        {
        $_SESSION['login'] = $reponse['autorisation'];
        header("Location: acceuil.php"); 
        exit(); 
        }
        else 
        {
        echo '<div id="message">membre non identifié<br>';
        echo 'login ou mot de passe incorrecte ou manquant 2</div>';
        } 

Posté : 20 mai 2008, 15:02
par guigui69
Un grand merci je vais étudier ça.


Merci a vous tous.

guigui69