Probleme avec la fonction header() en php
Résolu
Everio
Messages postés
44
Statut
Membre
-
Everio Messages postés 44 Statut Membre -
Everio Messages postés 44 Statut Membre -
Bonjour,
Je souhaite créer 2 type de comptes pour le site que je créer qui sont différencié par l'attribut id_privilege dans la BD (0 pour membre et 1 pour admin). J'arrive bien a me connecter avec les 2 types de comptes qui me redirige bien vers leurs pages respectives (a savoir membre.php et administration.php). Ces deux pages sont bien sécurisées quand je ne suis pas connecté avec un compte. Seulement quand je me connecte avec un compte (par exemple un compte membre), j'arrive donc sur ma page membre.php, mais si dans la barre d'adresse, je tape ../administration.php, j'arrive sur la page d'administration.
Je vous montre le code de ma page index.php :
Tout ceci est bien entendu avant le code HTML. Dans le code HTML, j'ai un <form> pour se connecter.
Ensuite voici ce qu'il y au debut des pages administration.php et membre.php :
Merci d'avance de votre aide.
Je souhaite créer 2 type de comptes pour le site que je créer qui sont différencié par l'attribut id_privilege dans la BD (0 pour membre et 1 pour admin). J'arrive bien a me connecter avec les 2 types de comptes qui me redirige bien vers leurs pages respectives (a savoir membre.php et administration.php). Ces deux pages sont bien sécurisées quand je ne suis pas connecté avec un compte. Seulement quand je me connecte avec un compte (par exemple un compte membre), j'arrive donc sur ma page membre.php, mais si dans la barre d'adresse, je tape ../administration.php, j'arrive sur la page d'administration.
Je vous montre le code de ma page index.php :
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('lcinformatique', $base);
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM Compte WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass="'.mysql_escape_string($_POST['pass']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
//header('Location: membre.php');
$sql = 'SELECT id_privilege FROM Compte WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass="'.mysql_escape_string($_POST['pass']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$privilege = mysql_fetch_array($req);
$_SESSION['privilege'] = $privilege[0];
if($privilege[0] == 0) header('Location: membre.php');
else if($privilege[0] == 1) header('Location: administration.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
mysql_free_result($req);
mysql_close();
}
?>
Tout ceci est bien entendu avant le code HTML. Dans le code HTML, j'ai un <form> pour se connecter.
Ensuite voici ce qu'il y au debut des pages administration.php et membre.php :
<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>
Merci d'avance de votre aide.
A voir également:
- Probleme avec la fonction header() en php
- Fonction si et - Guide
- Easy php - Télécharger - Divers Web & Internet
- Fonction miroir - Guide
- Expert php pinterest - Télécharger - Langages
- Fonction moyenne excel - Guide
4 réponses
Évidemment si tu ne vérifies pas les privilèges sur ta page admin, tout les membres peuvent y accéder.
Je doit mettre une variable ($_SESSION['login']) dans la page index et vérifier sa valeur sur les pages admin et membre ? Ou alors récupérer sur ma page admin et membre la valeur de id_privilege que je vais chercher sur la BD en fonction de ($_SESSION['login']) ?
Merci de ton aide, je suis encore débutant en php et je bloque souvent sur des trucs a priori simple.
Merci de ton aide, je suis encore débutant en php et je bloque souvent sur des trucs a priori simple.