Probleme avec la fonction header() en php

Résolu/Fermé
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009 - 6 mai 2009 à 14:28
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009 - 7 mai 2009 à 09:21
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 :
<?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:

4 réponses

P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
6 mai 2009 à 15:17
Évidemment si tu ne vérifies pas les privilèges sur ta page admin, tout les membres peuvent y accéder.
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
6 mai 2009 à 15:38
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.
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
6 mai 2009 à 19:46
$_SESSION['privilege'] sert à quoi à ton avis ?

c'est ton code ou non ?
Là, j'ai un doute.
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
7 mai 2009 à 09:21
Ah oui, j'avais déjà fait ceci hier mais j'avais écrit une petite erreur a coté donc ça ne marchais pas.
Pour le code, j'ai utilisé un tutoriel pour le faire, étant donné que c'est la première fois que j'utilise les sessions, donc le code n'est pas entièrement a moi.

Merci de ton aide.
0