Problème de l'access par défault

Répondre
Lrp
le 14/10/2009 à 14:53
Lrp
Bonjour, a tous

Voici, mon problème:

J'ai un formulaire de contacte avec un Choix "Access"mais tout le monde peut le modifier donc il peut se mettre Admin etc ... après avoir relu les cours je n'est pas trouver et mon deuxième souci c'est que je ne trouve pas comment, pour mettre un access a des page ou seule les admin peuvent il y allait pour peuvent juste voir sur une page public

Cordialement Lrp
LA GLOBULE
le 14/10/2009 à 18:59
LA GLOBULE
Il te faut introduire un système de niveau d'admin : le truc le plus basique, c'est d'ajouter un champ de type int dans ta table d'utilisateurs (plus l'int sera grand, plus grandes seront les permissions).

Ensuite, pour chaque page, il te faut définir un chiffre en dessous duquel un utilisateur ne peut afficher la page.
Ensuite, il te suffit de comparer le chiffre demandé par la page et le chiffre de ton utilisateur : si celui ci est inférieur, l'utilisateur n'a pas accès à la page (tu le rediriges).
Lrp
le 14/10/2009 à 19:30
Lrp
Merci de votre réponse. Esque je pourrais avoir un exemple svp vous plait je vois de quoi vous voulez parler. Faire dans ma table d'utilisateur un champ "Access" puis de type INT exemple: `id` int(11) NOT NULL,. Puis faire sur les page un niveau de permission avec la page u genre (LRP, int 1337, code md 5) et mettre sur la page mais je ne sais pas comment faire et esque ce que je dit plus haut et juste svp !!!

Merci de votre compréhension
et désoler de vous faire prendre votre temps.
LA GLOBULE
le 14/10/2009 à 21:27
LA GLOBULE
Si tu vois de quoi je parle, qu'est ce qui te bloque ?

Sinon, à propos de quel truc nous devons dire si tu dis juste ou non ?
Lrp
le 15/10/2009 à 20:50
Lrp
pour rien désoler ^^. Mais ce qui m bloque c'est la pratique j'arrive pour la table mais pas pour la page faire en sorte que une personne avec le int 12 puis aller sur cette page la et que une personne au int 1337 puis y aller !!!
LA GLOBULE
le 16/10/2009 à 09:50
LA GLOBULE
Bon, a priori, tu as ajouté ce champs dans ta table.
Je pars du principe que tu as mis des numéros à tes membres.

Donc, au moment où ton membre se logue, j'imagine que tu initialises une session.
Au moment de ce login, normalement, tu dois faire une requete SQL pour checker si la personne qui se logue existe bien en base.
Et bien, dans cette requete, selectionne en plus ce fameaux champs.

Si la vérification du login est ok (le membre existe bien), colle la valeur de ce champs en session, par ex. dans $_SESSION['perm'].

Ensuite, sur tes pages de membres, il te suffit de déclarer une constante du genre :

<?php
define('PERM_NEED', 5);
?>


(a toi de mettre la valeur que tu veux sur chaque page)

Et la, ben tu compares PERM_NEED et ta valeur en session :
- si la valeur en session est inférieur : la personne ne pas accéder à la page, tu la rediriges vers l'accueil
- si la valeur en dession est supérieur ou égale, tu affiches la page
Lrp
le 17/10/2009 à 10:17
Lrp
Merci, de votre grande aide !!!^^

Voila ce que j'ai fais :

<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();


}

?>
<?php define ('PERM_NEED', 11); ?>
C'est la page membre.php après s'etre logguer puis :
<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

include 'config.php';

include 'open.php';

define ('PERM_NEED', 11 );

$sql = 'SELECT id FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);

if ($nb == 1) {
$data = mysql_fetch_array($req);

session_start();
$_SESSION['login'] = $_POST['login'];

$_SESSION['id'] = $data['id'];

$_SESSION['perm'];



mysql_free_result($req);
mysql_close();

header('Location: membre.php');
exit();
}
elseif ($nb == 0) {
$erreur = 'Compte non reconnu.';
}
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
mysql_free_result($req);
mysql_close();
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
la page ou il ce loggue index.php
`perm` int(11) NOT NULL,
La ligne que j'ai rajouter pour le INT !!!

mais ca ne marche pas pourquoi ???

Merci de votre compréhension
LA GLOBULE
le 17/10/2009 à 12:02
LA GLOBULE
Moué... tu n'as pas tout compris en fait :)

Sur la page ou le membre se logue, il ne suffit pas de faire :

<?php
$_SESSION['perm'];
?>


Il faut lui donner une valeur à ce $_SESSION['perm'];
Et cette valeur, tu la récupères en base.

Et sur la page membre, apres le define, il faut comparer les valeurs de $_SESSION['perm']; et de NEED_PERM pour savoir si le membre peut ou non accéder à la page : si $_SESSION['perm'] est inférieur à NEED_PERM, tu le rediriges.
Lrp
le 18/10/2009 à 17:12
Lrp
Merci, comment puis-je faire ca s'il vous plait ????
Répondre
LoadingChargement en cours