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 :

Problème avec les $_SESSION


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut Problème avec les $_SESSION
    Bonjour,
    Je tente de créer un espace administration sur un blog que je développe, mais je me retrouve face a un problème avec les sessions.


    J'ai mon formulaire pour entrez le pseudo et me mot de passe dans le 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
    38
    39
    40
    41
    42
    43
    44
    45
    if (! mysql_select_db($database))
    {
    echo "Impossible de sélectionner la base de données !";
    }
     
    // Definition de la fonction auth()
    function auth()
    	{
    	print"<html><body>";
    	print"<form name='form' method='post' action='listNews.php'>";
    	print"<table><tr><td align='center'><font color='#0256AA' size='2' face='Verdana'><b>Login :</font></b>";
    	print"</td></tr><tr><td align='center'><input type='text' name='login' size='15'></td></tr><tr>";
    	print"<td align='center'><font color='#0256AA' size='2' face='Verdana'><b>Password :</font></b></td></tr><tr>";
    	print"<td align='center'><input type='password' name='mot_de_passe' size='15'></td></tr><tr><td align='center'><br>";
    	print"<input type='submit' name='submit' value='Entrez'></td></tr></table></form>";
    	print"</body></html>";
    	exit;
    	}
     
    if( !isset($login) && !isset($mot_de_passe) )
    	{
    	// Ouverture de la fonction auth()
    	auth();
    	}
    else
    	{
    	// Requete SQL
    	$query = "Select count(*) From admin where PSEUDO = '".$login."' and MDP = '".$mot_de_passe."'";
    	$resultat = mysql_query($query);
     
    	if($resultat != 0)
    	{
    		// Ici la page de redirection si l'autentification est réussie
    		print"<script>top.location.replace('authentification.php');</script>";
    		}
    	else
    		{
    		// Ici le message d'alerte si l'autentification n'est pas réussie
    		print"alert('Login ou password invalide.');";
    		// Rappel de la fonction d'identification
    		auth();
    		}
    	}
     
    ?>
    L'authentification a lieu dans authentification.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
    if($_POST["login"] != "" && $_POST["mot_de_passe"] != "")
    {
      $login     = $_POST["login"] ;
      $pass      = $_POST["mot_de_passe"] ;
     
      //connexion au serveur
      $cnx = mysql_connect($host,$pseudo,$password) ;
      //sélection de la base de données
      $db  = mysql_select_db($database) ;
     
      //création de la requête SQL
      $sql = "SELECT * FROM admin WHERE PSEUDO= '".$login."' AND MDP= '".$pass."'"	;
      //exécution de la requête SQL
      $requete = @mysql_query($sql, $cnx) or die($sql."<br>".mysql_error()) ;
      //on récupère le résultat
      $result = mysql_fetch_object($requete) ;
      //si la requête s'est bien passée
      if(is_object($result))
      {
        //enregistrement d'une variable de session, ici le login de l'utilisateur
        $_SESSION["login"] = $login ;	
        header("Location: listNews.php") ;
      }//fin if
      //sinon on retourne à la page d'inscription
      else
      {
        header("Location: connexion.php") ;
      }
    }//fin if
    //sinon on retourne à la page d'inscription
    else
    {
      header("Location: connexion.php") ;
    }//fin si
    et si l'authentification est bonne, l'utilisateur est redirigé vers listNews.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
    <?php
     
    // Variables de votre base à renseigner
    $host = "localhost";
    $pseudo = "root";
    $password = "";
    $database = "test";
     
    $connection = mysql_connect($host,$pseudo,$password) or die ('Erreur Connection'); // Ouverture de la Base
    $select_db  = mysql_select_db($database)or die ('Base inexistante'); 
     
    if(!isset($_SESSION["login"]) || $_SESSION["login"] == "")
    {	
    	echo "Problème de connection";
    	//header("Location: connexion.php") ;
    }//fin if
    else
    {  
      echo("<pre>") ;
      print_r($_SESSION) ;
      echo("</pre>") ;
     
      echo("Votre identifiant de session est ". $_SESSION["login"] ."<br/>") ;
     }
     
     ?>

    Mais lorsque l'on arrive sur cette page, il s'affiche "Problème de connection" je ne comprend vraiment pas pourquoi il ne trouve pas ma variable de session.

    J’espère que vous pourrez m'aidez, Merci d'avance

    PS: Avant tout code pour les trois pages j'ai placé le session_start().

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    déjà je vois ce message nulle part dans ton code...

    pourquoi tu testes la sélection de ta bd dans le 1er script alors que tu es même pas connecté à mysql?

    ensuite oublie l'extension mysql et passes à pdo pour te connecter à mysql avant que la prise en charge de cette extension ne se fasse plus...

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Salam ; tout a fait d'accord avec ericd69 pour le PDO
    http://php.net/manual/fr/ref.pdo-mysql.php

    pour faire simple vaut mieux mettre la mise en forme dans des fichiers css c'est plus clair et simple a maintenir.
    aussi je voie coté sécurité faut pensé a vous protégé contre les injections sql.
    si j'ai bien compris vos codes je crois qu'il y'a des redondance ,alors vaut mieux organisé l’authentification dans un fichier aut.inc.php , la connexion dans un fichier con.inc.php .
    j'arrive pas a trouver $_SESSION_START(). !!!!!!
    je suis débutant mais je crois je laisse l'avis aux plus expérimenté .

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 28
    Par défaut
    Bonjour,

    Peux tu mettre le debug suivant et nous dire ce qu'il te retourne (car là le code est clair et n'a pas l'ai d'être faux à première vue) dans listNews.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(!isset($_SESSION["login"]))
       echo "La session n'existe pas. ";
    else
       echo "La session existe. ";
     
    if(isset($_SESSION["login"]) && $_SESSION["login"] == "")
       echo "La session existe mais est vide.";
    if(!isset($_SESSION['login']))
       echo "L'espoir fait vivre. ";
    else
       echo "Qui ne tente rien n'a rien. ";
    S'il te plait ?

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Par défaut
    J'ai mis le code de debug et il me retourne : "La session n'existe pas. L'espoir fait vivre."

    J'affecte pourtant bien une valeur a ma variable de session et j'ouvre bien mes sessions, je ne comprend pas pourquoi il ne trouve rien =/

    Pour ce qui est des session_start, ils ne sont pas mis dans le code poster mais j'avais précisé que ils sont placé avant le doctype.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    Est-ce que tu as pris en compte que tu as pas session_start() au début du fichier ? A moins que tu l'es pas préciser dans ton post ...

Discussions similaires

  1. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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