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

Langage PHP Discussion :

Pas de session ? alors que je sais me connecter ...


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Pas de session ? alors que je sais me connecter ...
    à toutes et à tous,

    Mise en situation :


    J'ai créé un espace membre. Je me connecte SANS problème à l'espace membre. Les login et mot de pass sont dans une base SQL (requete voir fichier connexion.php)

    Dans le fichier index.php (deuxieme code) j'inclus mon fichier (debut du code) de connexion.php si le formulaire a été remplis.

    Mon problème :

    La commande suivante est executée vue que la réponse de la base sql est 1 (partie du fichier connexion.php)

    if ($data[0] == 1) {
    session_start();
    $_SESSION['login'] = $_POST['login'];

    header("Location: phpinfo.php");
    exit;

    Ensuite une fois rediriger vers la page phpinfo.php le code suivant est executé et je me fait rediriger vers index.php alors que le code cidessu à été executé

    session_start() ;
    // on vérifie si l'utilisateur est identifié
    if ( !isset( $_SESSION['login'] )) {
    // la variable de session n’existe pas,
    // donc l'utilisateur n'est pas authentifié
    // On redirige sur la page permettant de s’authentifier
    header('Location: index.php') ;
    // on arrête l'exécution
    exit() ;
    }
    La question :

    Quel est le problème ?


    =======Les différents scripts============

    fichier "connexion.php"
    Code : 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
    <?php
    // on teste si le visiteur a soumis le formulaire de connexion
    	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
     
            $base = mysql_connect('xxxx', 'root', 'xxxx'); 
            mysql_select_db ('phpbb', $base);
     
            // on teste si une entr&eacute;e de la base contient ce couple login / pass
            $sql = 'SELECT count(*) FROM phpbb_users  WHERE username ="'.addslashes($_POST['login']).'" AND user_password ="'.md5(addslashes($_POST['pass'])).'"';
            $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
            $data = mysql_fetch_array($req);
     
            mysql_free_result($req);
            mysql_close();
     
            // si on obtient une r&eacute;ponse, alors l'utilisateur est un membre
            if ($data[0] == 1) {
    			session_start();
    			$_SESSION['login'] = $_POST['login'];
     
    			header("Location: phpinfo.php"); 
                exit;
            }
            // si on ne trouve aucune r&eacute;ponse, le visiteru s'est tromp&eacute; soit dans son login, soit dans son mot de passe
            elseif ($data[0] == 0) {
                $erreur = '<b><font color="#FF0000">Compte non reconnu.</font></b>';
            }
            // sinon, alors la, il y a un gros probl&egrave;me :)
            else {
                $erreur = '<b><font color="#FF0000">Prob&egrave;me dans la base de donn&eacute;es : plusieurs membres ont les m&ecirc;mes identifiants de connexion.</font></b>';
            }
        }
        else {
            $erreur = '<b><font color="#FF0000">Au moins un des champs est vide.</font></b>';
        }
     
    ?>
    fichier "index.php"
    Code : 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
    <?php
     
    // on teste si le visiteur a soumis le formulaire de connexion
     
    if(isset($_POST['submit_connexion']) && ($_POST['submit_connexion'] == 'connexion'))
    {
    	include('script/connexion.php');
    }
     
    // on teste si le visiteur a soumis le formulaire d'inscription
     
    if (isset($_POST['inscription']) && ($_POST['inscription'] == 'Inscription')) 
    {
    	include('script/inscription.php');
    }
    ?>
    <html>
    <head>
    	<title>Accuille</title>
    	<link rel="stylesheet" type="text/css" href="styles.css">
     
    </head>
    <body bgcolor=#FFFFFF leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 background="images/main_bg.jpg">
     
     
    <br>
    <!--------------------->
    <!-- Tableau de haut -->
    <!--------------------->
    <table width="90%" height="80" border="3" align="center" bgcolor="#DEDEDE" background="images/tabhaut.jpg"> 
    	<tr>
      		<td>
    		</td>
    	</tr>
    </table>
    <br>
    <table width="90%" height="85%" align="center" id="2-1234">
    	<tr>
    		<td width="250" height="100%"  valign="top">
    			<!------------------------->
    			<!-- Tableau de droite 1 -->
    			<!------------------------->
    			<?php include("include/liens.php"); ?>
     
    			<table height="5" width="250">
    				<tr>
    					<td>
    					</td>
    				</tr>
    			</table>
    			<?php include("include/google-shearch.php"); ?> 
    		</td>
     
    		<td width="20" height="100%"></td>
     
    		<!------------------------->
    		<!-- Tableau de gauche 1 -->
    		<!------------------------->
    		<td width="100%" height="100%" valign="top">
     
    			<table  width="100%" height="100%" border="3" bgcolor="#DEDEDE">
    				<tr>
    					<td valign="top">
    					 	<div align="center">
    					 		<a href="http://fredericbalon.be/sms.php"><img src="http://fredericbalon.be/smsfree2.jpg"/></a>
    						</div><br>
    						extranet<br>
    					</td>
    				</tr>
    			</table>
     
    		</td>
     
    		<td width="20" height="100%">
    		</td>
     
    		<td width="250" height="100%" valign="top">
    		<!------------------------->
    		<!-- Tableau de gauche 2 -->
    		<!------------------------->	
    			<table width="250" height="50" border="3" bgcolor="#DEDEDE" align="center">
    					<tr>
    						<td align="center" valign="middle">
    							<form method="post" action="index.php">
    								  <?php include(dirname(__FILE__).'/include/connexion_form.php'); ?> 
    							</form>
    						</td>
    					</tr>
    			 </table>
    fichier "phpinfo.php"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php 
    session_start() ; 
    // on vérifie si l'utilisateur est identifié 
    if ( !isset( $_SESSION['login'] )) { 
    	// la variable de session n’existe pas, 
    	// donc l'utilisateur n'est pas authentifié 
    	// On redirige sur la page permettant de s’authentifier 
    	header('Location: index.php') ; 
    	// on arrête l'exécution 
    	exit() ; 
    }
     
    phpinfo();
     
    ?>

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    est-ce que tu peux t'arranger pour obtenir via la fonction session_id() l'id de session en cours, juste après tes appels à session_start() ? (je sais, ca va faire de l'ouput, donc tes headers ne marcheront plus directement, à toi de t'arranger pour )
    on pourra déjà voir si les id de session sont différents en passant de ta page connexion à ta page phpinfo (ce qui semblerait etre le cas, d'où le fait que tu perdes ta session en cours de route).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Merci pour ta réponse mais j'ai trouvé mon erreur.

    J' ai appris qu'il ne falait pas de code html avant la commande session_start();.
    Dans le fichier index.php, il y avait deux passage à la ligne avant le "inlude('connexion.php')" et donc considéré comme du code html.

    Tout fonctionne à merveille maintenant !!!

    Sujet résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/03/2012, 15h36
  2. MySQL ne renvoie pas d'erreur alors que la chaine est fausse
    Par repié dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 07/11/2007, 12h18
  3. Réponses: 7
    Dernier message: 30/12/2006, 17h13
  4. Réponses: 10
    Dernier message: 31/08/2006, 14h57

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