IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Probleme de session, d'affichage selon session et de déconnexion


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut Probleme de session, d'affichage selon session et de déconnexion
    Bonsoir! J'ai un problème... Je vais essayer d'être le plus précis possible mais ça ne va pas être dur, si quelqu'un est prêt à m'aider plus en détail je suis disponible sur MSN, ICQ ou Skype à la demande.

    J'ai une page index.php dans laquelle apparaissent plusieurs liens dont:
    - Se connecter -> mène vers un module de connexion
    - Inscription -> mène vers un module d'inscription

    Ces deux liens n'apparaissent plus quand l'utilisateur est connecté et sont remplacés par les suivants:
    - Administration -> mène vers l'interface d'administration de l'utilisateur connecté
    - Déconnexion -> mène vers une page de déconnexion

    Pour ce faire je mets avant le head de la page index.php le include suivant:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include ('session2.php');
    include ('ea.php');

    session2.php contient ceci:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_start();
    if($_SESSION['acces'] != "yes")
    	{header("location:./index.php");}

    ea.php contient les infos de connexion à la base de données.

    Le script d'affichage des liens est le suivant:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ($_SESSION['acces'] != 'yes')
    {
    echo "<a href='enregistrement2.php' target='_parent'>Se connecter</a><br><br>
    <a href='inscription.php' target='Menu'>Inscription</a>";
    }
    else
    {
    echo "<a href='admin.php'>Administration</a><br><br>
    <a href='./logout.php>Déconnexion</a>";
    }

    Le script de connexion connexion2.php est:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    require_once('./ea.php'); ?>
    <?php
    session_start(); // début de session
     
    if (isset($_POST['login'])){
    $nom = $_POST['login'];
    $motdepasse = md5($_POST['motdepasse']);
     
    $verif_query=sprintf("SELECT * FROM regfideles WHERE fidele='$nom' AND motdepasse='$motdepasse'"); // requête sur la base administrateurs
    $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
    $row_verif = mysql_fetch_array($verif);
    $utilisateur = mysql_num_rows($verif);
     
    if ($utilisateur > 0) {	
    	    	// déclaration des variables de session
    		$_SESSION['fidele'] = $row_verif['fidele']; 
    		$_SESSION['motdepasse'] = $row_verif['motdepasse'];
     
    		header("Location:./accueilfidele.php"); // redirection si OK
    		}
    		else {
    		header("Location:./index.php?erreur=nom"); // redirection si utilisateur non reconnu
    		}
    		}
     
    // Gestion de la  déconnexion
    if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un contexte de déconnexion
    	$prenom = $_SESSION['fidele']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
    	session_unset("authentification");
    	header("Location:./index.php?erreur=delog&nom=$prenom");
    }

    Contenant le formulaire suivant:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action='enregistrement2.php' method='post'>
    <input name='login' type='text'><br>
    <input name='motdepasse' type='password'>
    <input type='submit' value='Go!' style='width:30;'></form>
    <a href='motdepasse.php' target='Menu'>Mot de passe oublié?</a>

    Qui utilise le script enregistrement2.php suivant:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    session_start();
    include('ea.php');
     
    $connection = mysql_connect($host,$user,$password) or die("connexion impossible au serveur");
    $db = mysql_select_db($database,$connection) or die("la base de donnée n'a pas pu être ouverte");
     
    $nom = $_POST['login'];
    $motdepasse = md5($_POST['motdepasse']);
     
    $requete = "SELECT * FROM regfideles WHERE fidele='$nom' AND motdepasse='$motdepasse'";
    $result = mysql_query($requete) or die(mysql_error());
    $num=mysql_num_rows($result);
    if ($num>0 AND $_POST['login']!="")
    	{$_SESSION=mysql_fetch_assoc($result);
    	$_SESSION['acces'] = "yes";	
    	{header("location:accueilfidele.php");}
    	exit();}
     
    {header("location:index.php");}
    exit();

    Le script de déconnexion logout.php est:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_start();
    session_destroy();
    unset($_SESSION);


    Les problèmes sont multiples, où alors je n'y comprends rien...

    Déjà, peut-on faire comme j'ai fait? à savoir que une fois connecté l'affichage de la page d'index change.

    Ensuite, je suis obligé actuellement d'enlever le include(session) après m'être connecté pour que l'affichage correct apparaisse. Je sais que ça n'est pas normal mais pourquoi donc?

    Enfin, quand on se déconnecte alors mon navigateur me dit que ça n'est pas bon quand on clique sur "Retour" une fois la déconnexion réalisée.

    Vous pouvez vous créer un compte pour tester, c'est encore la version alpha du site.

    Merci d'avance pour votre aide!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut
    Ah ben oui mais si vous voulez tester il vous faut l'adresse!

    http://www.le317.fr/registres/index.php

  3. #3
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Citation Envoyé par MrGroar Voir le message
    Déjà, peut-on faire comme j'ai fait? à savoir que une fois connecté l'affichage de la page d'index change.
    Oui, bien sur

    sinon, j'essaye d'aller sur ton site, mais j'ai juste une page blanche et la barre de progression du chargement qui avance tout doucement... mais rien qui permette de tester !

  4. #4
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Et je sais pourquoi :

    {header("location:index.php");}

    sur le index.php, c'est une très mauvaise idée !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut
    Là ça devrait être mieux, mais j'ai enlevé le include(session) de la page index.php.

    Sinon j'ai édité le premier post car j'ai fait une bourde dans mon explication au niveau du script de connexion.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut
    Bon, j'ai vu que j'avais fait plein d'erreurs bêtes... J'en ai rectifié quelques unes mais je pense qu'il y en a encore de bien embêtantes...

    On peut dorénavant se connecter et se déconnecter sans problème, voici les scripts:

    Le formulaire de connexion connexionfid.php:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <?php require_once('./ea.php'); ?>
    <?php
    session_start(); // début de session
     
    if (isset($_POST['fidele'])){
    $fidele = addslashes(ucfirst(strtolower($_POST['fidele'])));
    $motdepasse = addslashes(md5($_POST['motdepasse']));
     
    $verif_query=sprintf("SELECT * FROM regfideles WHERE fidele='$fidele' AND motdepasse='$motdepasse'"); // requête sur la base administrateurs
    $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
    $row_verif = mysql_fetch_assoc($verif);
    $utilisateur = mysql_num_rows($verif);
     
    if ($utilisateur) {	
    	    session_register("authentification");	
    		// déclaration des variables de session
    		$_SESSION['perms'] = $row_verif['perms'];
    		$_SESSION['fidele'] = $row_verif['fidele']; 
    		$_SESSION['motdepasse'] = $row_verif['motdepasse'];
    		$_SESSION['admin'] = $row_verif['admin'];
     
     
    		header("Location:./index.php"); // redirection si OK
    		}
    		else {
    		header("Location:./index.php?erreur=fidele"); // redirection si utilisateur non reconnu
    		}
    		}
     
    // Gestion de la  déconnexion
    if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un contexte de déconnexion
    	$prenom = $_SESSION['fidele']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
    	session_unset("authentification");
    	header("Location:./index.php?erreur=delog&nom=$prenom");
    }
    ?>
     
     
    <html>
    <head>
    <title>Registres</title>
    <meta http-equiv="Content-Language" content="fr">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <style type="text/css">
    body {color:black;}
    body,td,th {font-family: Garamond; font-size: 14px;	font-weight: bold;}
    a:link {text-decoration: none; font-size: 14px; font-style: normal; color: #996600;}
    a:visited {text-decoration: none; font-size: 14px; font-style: normal; color: #996600;}
    a:hover {text-decoration: none; font-size: 14px;	font-style: italic;	color: #000000;}
    a:active {text-decoration: none; font-size: 14px; font-style: normal; color: #663333;}
    a { font-size: 14px; font-weight: bold;}
    .texte {font-size: 14px; font-weight: bold; font-family: Garamond; text-align: center; line-height: normal;	vertical-align: middle;}
     </style>
     
     <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="640" height="500" align="center" valign="middle"><form action='enregistrement.php' method='post'>
    														<input name='fidele' type='text'><br>
    														<input name='motdepasse' type='password'>
    														<input type='submit' value='Go!' style='width:30;'></form>
    														<a href='motdepasse.php' target='Menu'>Mot de passe oublié?</a></td>
      </tr>
    </table>
    </body>

    Qui renvoie au script de vérification enregistrement.php:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php 
    session_start();
     
    require ("./ea.php");
     
    $fidele2 = $_POST['fidele'];
    $motdepasse2 = md5($_POST['motdepasse']);
     
    $requete = "SELECT * FROM regfideles WHERE fidele='$fidele2' AND motdepasse='$motdepasse2'";
    $result = mysql_query($requete) or die(mysql_error());
     
    $data = mysql_fetch_assoc($result);
     
    $num=mysql_num_rows($result);
     
    if ($num>0 AND $_POST['fidele']!="")
    	{
    		$_SESSION=mysql_fetch_assoc($result);
    		$_SESSION['acces'] = 'yes';	
    		if ($data['admin'] = 'tout')
    			{
    				$_SESSION['admin'] = 'tout';
    			}
    			{
    				header("location:index.php");
    			}
    		exit();
    	}
     
    {
    	header("location:index.php");
    }
     
    exit();
     
    ?>

    Sur la page d'index, on voit un lien "se connecter" quand on est pas connecté.
    Sinon apparait la phrase "Vous êtes connecté" et les liens "Profil" et "Déconnexion".

    Tout ceci fonctionne, sauf que j'aimerais que quand un membre connecté est administrateur (valeur "tout" pour le champ "admin") alors apparaisse un lien "Administration" en plus du reste. Voici ce que j'ai fait donc dans la page index.php:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    <?php
    session_start();
     
    require ("./ea.php");
    ?>
    <html>
    <head>
    <title>Registres</title>
    <meta http-equiv="Content-Language" content="fr">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     
    </head>
     
    <body bgcolor="#000000">
    <div style="width:1280px;" id="conteneur">
     
    <table width="1280" height="900" border="0" cellspacing="0" cellpadding="0" background="img/fond.jpg" style="background-repeat:no-repeat" align="center">
     
      <tr width="1280">  
        <td width="240" height="600" align="center">&nbsp;</td>	
        <td width="800" height="600">	
    		<table width="800" height="600" border="0" cellpadding="0" cellspacing="0">
    			<tr><td width="160">
    					<table width="160" height="600" border="0" cellpadding="0" cellspacing="0">
    						<tr><td width="160" height="100" background="./img/titre.jpg" style="background-repeat:no-repeat">&nbsp;</td></tr>		
    						<tr><td width="160" height="380" background="./img/menu.jpg" style="background-repeat:no-repeat">
    								<table width="160" height="105" border="0" cellspacing="0" cellpadding="0">
    									<tr>
    										<td align="center" valign="middle">
     
    											<?php 
    											if($_SESSION['acces'] != 'yes')
    												{
    												echo "<a href='connexionfid.php'>Se connecter</a>";
    												}
    											else
    												{
    													if($_SESSION['admin'] != 'tout')
    														{
    															echo "&nbsp;";
    														}
    													else
    														{
    															echo "<a href='indexadmin.php'>Administration</a><br><br>";
    														}
     
    													echo "Vous êtes connecté!<br><a href='profil.php' target='Menu'>Votre Profil</a><br>
    													<a href='logout.php'>Déconnexion</a>";
    												}
    											?></td>
    									</tr>
    								</table>
    								<table width="160" height="165" border="0" cellpadding="0" cellspacing="0">
    									<tr><td height="24" align="center"><a href="clerge.php" target="Menu">Clergé</a></td></tr>
    									<tr><td align="center"><a href="fideles.php" target="Menu">Fidèles</a></td></tr>
    									<tr><td align="center"><a href="registres.php" target="Menu">Registres</a></td></tr>
    									<tr><td align="center"><a href="paroisses2.php" target="Menu">Paroisses</a></td></tr>
    									<tr><td align="center"><a href="monasteres.php" target="Menu">Monastères</a></td></tr>
    									<tr><td align="center"><a href="bibliotheque.php" target="Menu">Bibliothèques</a></td></tr>
    									<tr><td align="center"><a href="./carte/index2.php" target="_parent">Carte</a></td></tr>
    									<tr><td height="17" align="center"><a href="congregations.php" target="Menu">Congrégations</a></td></tr></table>
    								<table width="160" height="110" border="0" cellspacing="0" cellpadding="0">
    									<tr><td align="center"><a href="http://feeds.feedburner.com/~r/LeParcheminAristotlicien/~6/6"><img src="http://feeds.feedburner.com/LeParcheminAristotlicien.6.gif" alt="Le Parchemin Aristotélicien" style="border:0"></a></td></tr></table></td></tr>
    						<tr><td height="120"><img src="./img/menu-lien-ep.jpg" usemap="#forum" border="0" alt="Forum de l'Eglise Aristotélicienne">
    												<map name="forum"><area shape="rect" coords="65,65,150,95" href="http://rome.royaumesrenaissants.com/index.php" target="_blank" alt="" >
    																	<area shape="rect" coords="5,95,70,113" href="http://www.le317.fr/index.php" target="_parent" alt="" ></map></img></td></tr></table></td>
    				<td width="640">
    					<table width="640" height="600" border="0" cellpadding="0" cellspacing="0">
    						<tr><td colspan="3" width="640" height="60" background="./img/Fond-bandeau.jpg" align="center">&nbsp;</td></tr>
    						<tr><td colspan="3" height="500" background="./img/cell-00.jpg">
    								<table width="640" height="500" border="0" cellpadding="0" cellspacing="0">
    									<tr><td><iframe name="Menu" id="Menu" width="640px" height="500px" border="0" frameborder="no" marginheight="0" marginwidth="0" scrolling="no" alt=""></iframe></td></tr></table></td></tr>
    						<tr background="./img/infos.jpg" style="background-repeat:no-repeat">
    							<td width="20">&nbsp;</td>
    							<td width="570" height="40"><marquee loop="100">J'espère que vous vous la coulez douce devant votre écran à regarder mon travail! Et celui de nombreux collaborateurs tels que JuliusV, Jikapan, Orgerix et Choderlos pour les scripts mais aussi Aaron et Celsius Online pour les graphismes! Merci à eux de m'aider et de consacrer du temps à un aussi misérable codeur que moi... Signé MrGroar, l'écossais repenti.</marquee></td>
    	  <td width="50">&nbsp;</td></tr></table></td></tr></table></td>	
        <td width="240" height="600"><table width="100%" border="0" cellpadding="0" cellspacing="0">
    								<tr height="80"><td>&nbsp;</td></tr>
    								<tr height="520"><td align="center" valign="top">
    								&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://rome.royaumesrenaissants.com/viewtopic.php?p=4585#4585" target="_blank"><img src="img/dogme.gif" border="0"></a><br><br>
    								&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://rome.royaumesrenaissants.com/viewtopic.php?t=34" target="_blank"><img src="img/droit.gif" border="0"></a><br><br>
    								&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://rome.royaumesrenaissants.com/viewtopic.php?t=215" target="_blank"><img src="img/reseau.gif" border="0"></a></td></tr></table>
    								</td></tr>
     
      <tr width="1280">
      	<td width="240" height="300">&nbsp;</td>
    	<td width="800"><table width="100%" border="0" cellpadding="0" cellspacing="0">	
    							<tr height="80"><td colspan="3">&nbsp;</td></tr>
    							<tr height="200"><td align="center" width="260"><a href="http://site.voila.fr/fufanu/rr/livre_des_vertus.pdf" target="_blank"><img src="img/livrevertus.gif" border="0"></a></td>
    								<td width="280">&nbsp;</td>
    								<td width="260">&nbsp;</td></tr></table></td>
    	<td width="240" align="center" valign="middle">
    		<font style="font-weight:normal; font-size:12px">Site Officiel du jeu<br>"Les Royaumes Renaissants":<br>
    			<a href="http://www.lesroyaumes.com" title="jeu en ligne gratuit et multijoueur" target="_blank"><img src="http://www.lesroyaumes.com/images/BoutonRR1.gif" border="0"></a><br><br>
    		Graphismes:<br><a href="http://www.celsius-online.com/" target="_blank"><font style="font-weight:normal; font-size:12px">Celsius Online</font></a>, 
    					<a href="http://www.lesroyaumes.com/FichePersonnage.php?login=MrGroar" target="_blank"><font style="font-weight:normal; font-size:12px">MrGroar</font></a>, 
    					<a href="http://www.lesroyaumes.com/FichePersonnage.php?login=Aaron" target="_blank"><font style="font-weight:normal; font-size:12px">Aaron</font></a><br>
    		Scripts:<br><a href="http://www.lesroyaumes.com/FichePersonnage.php?login=Choderlos" target="_blank"><font style="font-weight:normal; font-size:12px">Choderlos</font></a>,
    					<a href="http://www.lesroyaumes.com/FichePersonnage.php?login=JuliusV" target="_blank"><font style="font-weight:normal; font-size:12px">JuliusV</font></a>,
    					<a href="http://www.lesroyaumes.com/FichePersonnage.php?login=Jikapan" target="_blank"><font style="font-weight:normal; font-size:12px">Jikapan</font></a>, 
    					<a href="http://www.lesroyaumes.com/FichePersonnage.php?login=MrGroar" target="_blank"><font style="font-weight:normal; font-size:12px">MrGroar</font></a><br>
    		Base de Données:<br><a href="http://www.lesroyaumes.com/FichePersonnage.php?login=MrGroar" target="_blank"><font style="font-weight:normal; font-size:12px">MrGroar</font></a></font></td></tr></table>
    </div>
    </body>
    </html>

    Auriez-vous une idée de l'endroit qui cloche?

    PS: le fichier ea.php contient les infos de connexion à la base.

Discussions similaires

  1. Probleme background-color et affichage selon naviguateur
    Par jeremdu54 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 19/08/2012, 01h57
  2. probleme de transmision d'attribut de session
    Par GlamIS dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 19/07/2007, 17h29
  3. probleme de redirection a expiration de session
    Par zorba49 dans le forum ASP
    Réponses: 5
    Dernier message: 30/03/2006, 11h37
  4. Réponses: 16
    Dernier message: 02/12/2005, 10h39
  5. Probleme de redirection apres fermeture de session
    Par soufienne dans le forum ASP
    Réponses: 3
    Dernier message: 08/04/2004, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo