Rechercher : dans
Par :

Probleme avec la fonction header() en php

Dernière réponse le 7 mai 2009 à 09:21:28 Everio, le 6 mai 2009 à 14:28:47 
 Signaler ce message aux modérateurs

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.
Configuration: Windows Vista
Firefox 3.0.10

Meilleures réponses pour « Probleme avec la fonction header() en php » dans :
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
PHP - Nettoyer une chaîne de caractères VoirVoici une fonction en PHP qui peut être assez pratique, surtout quand on fait de l'URL Rewriting. Cette fonction permet de transformer les caractères de n'importe quelle chaîne de caractères en chaîne non accentuée, en enlevant les caractères...
PHP - Affichage de texte sur le navigateur VoirLe but de PHP est de permettre la création de pages web dynamiques, ainsi son but premier est de pouvoir envoyer des données au navigateur. Les trois fonctions standards PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces...
PHP - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...

1

P@t@ch0n, le 6 mai 2009 à 15:17:50

Évidemment si tu ne vérifies pas les privilèges sur ta page admin, tout les membres peuvent y accéder.

Répondre à P@t@ch0n

2

Everio, le 6 mai 2009 à 15:38:19

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.

Répondre à Everio

3

P@t@ch0n, le 6 mai 2009 à 19:46:39

$_SESSION['privilege'] sert à quoi à ton avis ?

c'est ton code ou non ?
Là, j'ai un doute.

Répondre à P@t@ch0n

4

 Everio, le 7 mai 2009 à 09:21:28

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.

Répondre à Everio