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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : restriction d'acces a certaine page (php/mysql)

par guigui69 » 20 mai 2008, 15:02

Un grand merci je vais étudier ça.


Merci a vous tous.

guigui69

par AB » 14 mai 2008, 20:28

...
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>';
        } 

par Truc » 14 mai 2008, 15:18

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

par geqr » 14 mai 2008, 14:57

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...

par Hywan » 14 mai 2008, 14:37

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.

par geqr » 14 mai 2008, 10:53

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..

par FredoMkb » 14 mai 2008, 10:37

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

à+ :)

par guigui69 » 14 mai 2008, 09:03

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

par AB » 13 mai 2008, 18:25

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

par Truc » 13 mai 2008, 18:03

Salut,

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

Ta question y trouveras sa réponse :)

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

par guigui69 » 13 mai 2008, 17:58

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