Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2007, 18h50   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 67
Points : 13
Points : 13
Par défaut authentification un peu trop présente

Bonjour,

J'ai réalisé une page d'administration à laquelle l'accès n'est autorisé qu'après authentification. J'ai inséré dans cette page un code qui permet de vérifier si l'utilisateur est bien connecté, et s'il ne l'est pas il est redirigé automatiquement vers le formulaire de connexion. Jusque là tout va très bien.

Le problème est qu'une fois connecté, lorsque l'utilisateur veut naviguer d'une page à l'autre, il est toujours renvoyé sur le formulaire de connexion.
Moi j'aimerais qu'on ne puisse pas acccéder à la page admin et les autres qu'en étant connecté, mais une fois que cela est fait que la navigation se passe naturellement.

Voilà le code qui vérifie si la personne est bien connectée:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
session_start();
include("connexion.php");
/* 
si la variable de session login n'existe pas cela siginifie que le visiteur 
n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
acceder à l'espace membres
*/
if(!isset($_SESSION['login'])) {
  echo '<font color="#FF33FF">Vous n\'êtes pas autorisé à accéder à cette zone; veuillez d\'abord vous identifier.</font>';
  include('login.html');
  exit;
}
 
?>
Pour le reste de la page, elle affiche un tableau avec des données provenant de la base. Comme ces données sont nombreuses, je les ai réparties sur plusieurs pages, et je n'affiche que 30 résultats par page. Le problème se présente lorsqu'on veut naviguer d'une page à l'autre.

Si vous avez besoin de plus de renseignements, je vous les fournirai sans problème!

Merci d'avance pour votre aide...
thecaco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 10h45   #2
Invité régulier
 
Inscription : octobre 2002
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 9
Points : 8
Points : 8
Envoyer un message via ICQ à didjezik
Salut à toi,

A tout hasard, as tu bien placé un session_start() en haut de tes pages ? Hormis la page de connection ?
didjezik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 10h56   #3
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
A tout hasard aussi, tu as quoi dans connexion.php ?
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 12h21   #4
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 140
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 140
Points : 2 885
Points : 2 885
$_SESSION['login'] n'est pas isset ce qui signifie qu'il n'a ni été déclaré ni valorisé.

Le problème se situe dans la page d'action du formulaire de login.
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 13h31   #5
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 67
Points : 13
Points : 13
Bonjour,

Voici le code de la page login:


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
// connexion à la BDD
include("connexion.php");
 $select = mysql_select_db($base);
 //Vérification des variables
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['password'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select password from admin where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
  $data = mysql_fetch_assoc($req);
  if($data['password'] != md5($password)) {
    echo '<font color="#FF33FF">Mauvais login / password. Merci de recommencer</font>';
    include('login.html'); // On inclut le formulaire d'identification
    exit;
  }
  else {
    session_start();
 
 $_SESSION['login'] = $login;
 
     include('admin.php');   
     exit;
    // ici vous pouvez afficher un lien pour renvoyer
    // vers la page d'accueil de votre espace membres  
  }    
}
else {
  echo '<font color="#FF33FF">Vous avez oublié de remplir un champ.</font>';
   include('login.html'); // On inclut le formulaire d'identification
   exit;
}
 
 
?>
Il doit bien y avoir un problème quelque part, mais j'ai beau relire mon code je ne le trouve pas...
thecaco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 14h50   #6
Invité régulier
 
Inscription : octobre 2002
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 9
Points : 8
Points : 8
Envoyer un message via ICQ à didjezik
Hum, qu'on me lynche si je me trompe, mais le session_start() ne devrait il pas être en haut de page, avant tout autre caractères, plutôt qu'imbriqué dans le if ?
didjezik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 16h46   #7
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 67
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 67
Points : 13
Points : 13
Voilà des nouvelles:
lorsque je testais mon code en local ça ne fonctionnait pas, et là je l'ai mis sur le serveur, j'ai refait les mêmes manipulations, et ça fonctionne!
Il doit y avoir quelque chose de différent entre le local et le serveur que je n'ai pas compris...
thecaco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 17h45   #8
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
Citation:
Envoyé par didjezik Voir le message
Hum, qu'on me lynche si je me trompe, mais le session_start() ne devrait il pas être en haut de page, avant tout autre caractères, plutôt qu'imbriqué dans le if ?
Juste une parenthèse pour répondre à didjezik, session_start() peut très bien se palcer ou tu veux dans le code du moment que tu ne génères aucune sortie auparavant.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h59.


 
 
 
 
Partenaires

Hébergement Web