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 la récupération d'une variable session


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Points : 47
    Points
    47
    Par défaut problème avec la récupération d'une variable session
    j'ai un problème avec la récupération d'une variable session , je ne parviens pas à le faire
    voici le script ou j'affecte des valeurs à mes variables
    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
    <?php 
    include('connect.php'); 
    $mail =formulaires($_POST['mailconnexion']);
    $mdp =formulaires($_POST['mdp']);
     
     
    $mdp=md5($mdp);	//Codage du mdp
     
    if(!$mail)
    	{
    	header('Location:../index.php?erreur=mail');
    	}
    if(!$mdp)
    	{
    	header('Location:../index.php?erreur=passe');
    	}
    $reponse_cores=mysql_query("SELECT * FROM client WHERE adresse_mail='$mail'") or die ('Erreur : '.mysql_error());
    $count_cores=mysql_num_rows($reponse_cores);
    if($count_cores == 0 )
    	{
    	header('Location:../index.php?erreur=connexion');		//on vérifie la correspondance
    	}
     
    else
    	{
    	for ($ligne=0;$ligne<30;$ligne++)		//Création d'un identifiant aléatoire
    		{
    		@$session.=substr('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN',(rand()%(strlen('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN'))),1);
    		}
     
    	mysql_query("UPDATE client SET session='$session' WHERE adresse_mail='$mail'") or die ('Erreur : '.mysql_error());
    	$_SESSION['session'] = "$session";		//création de la session
    	$_SESSION['adresse_mail']=$mail;
    	header('Location:../index.php');			//redirection vers l'index
    	}
    ?>
    et voici la page index ou c'est sensé s'afficher, sachant que quand j'ai testé l'affichage dans la page créatrice de ces valeurs, il se produit juste.
    voici le script
    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
    <?php
    include("dynamiques/connect.php");
    $session=formulaires($_SESSION['session']);
    $mail=formulaires($_SESSION['adresse_mail']);
    /*if(!@$_SESSION['session'])
    	{
    	header('Location:index.php');
    	return false;
    	}*/
     
    $verif=mysql_query("SELECT * FROM client WHERE session='$session'") or die ('Erreur : '.mysql_error());	//on vérifie si il existe une entrée avec cet identifiant
     echo "<tr>";
    	         echo "<td align=\"center\"><font color=\"#147ba6\" size=\"5\">Bonjour ".$mail." </font></ td>";
    	         echo "</tr>";
     
     
     ?>
    voici l'erreur qu'il affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Notice: Undefined index: adresse_mail in C:\.... on line 418
    Bonjour
    donc comme vous voyez il ne reconnait pas ma variable et affiche seulement le "bonjour"
    merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Points : 178
    Points
    178
    Par défaut
    Alors ton erreur est une erreur du à un niveau d'affichage d'erreur strict. Bref : l'info est une notice.
    Comprendre par là:
    te es dans un cas ou ta variable erreur est renseignée.
    donc tu peux descendre d'un le niveau d'erreur d'affichage.
    ou préceder la récupération de tes variables $_session par, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset($_SESSION[adresse_mail])){
    //todo : traitement
    else
    echo "La variable de session mail est vide";
    ça peut être un bon départ.

  3. #3
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Les pages utilisant les sessions doivent commencer par session_start();
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Points : 178
    Points
    178
    Par défaut
    Oui aussi, tellement évident que j'y avais pas pensé, mais le reste de mon post est valable !

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    108
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 108
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par Shikiryu Voir le message
    Les pages utilisant les sessions doivent commencer par session_start();
    elle est déjà utilisé dans un morceau de code tout en haut au début de la page es ce que je doit la mettre encore une fois ?
    @roduce j'ai pas compris désolé pouvez vous développez !

  6. #6
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Citation Envoyé par roy-mustang Voir le message
    elle est déjà utilisé dans un morceau de code tout en haut au début de la page es ce que je doit la mettre encore une fois ?
    @roduce j'ai pas compris désolé pouvez vous développez !
    De peur de me répéter :
    Les pages utilisant les sessions doivent commencer par session_start();
    Une fois par page suffit donc mais dans chaque page.

    Si j'analyse votre code normalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $mail =formulaires($_POST['mailconnexion']);
    ...
    if(!$mail){
    	header('Location:../index.php?erreur=mail');
    }
    Si le mail n'existe pas, on n'affecte pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['adresse_mail']=$mail;
    et donc dans index, $_SESSION['adresse_mail'] n'existe pas !

    Pour palier à ce problème, la réponse de roduce est la bonne : vérifier l'existence de la variable avant d'essayer de l'utiliser.
    Dans index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_SESSION['adresse_mail'])){
        $mail=formulaires($_SESSION['adresse_mail']);
    }
    Bref, vous voyez le principe, il faut l'appliquer "partout".
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Points : 178
    Points
    178
    Par défaut
    mets ceci au début de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    include("dynamiques/connect.php");
    if(isset($_SESSION['adresse_mail']))
    $session=formulaires($_SESSION['session']);
    if(isset($_SESSION['adresse_mail']))
    $mail=formulaires($_SESSION['adresse_mail']);
    else
    echo "Problème avec la variable de session adresse_mail";

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    C'est pas juste ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION['session'] = "$session";
    Vous devez faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION['session'] = $session;

  9. #9
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Ahmed, les 2 fonctionnent.
    La première force juste en string. La 2ème garde le type de $session.
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

Discussions similaires

  1. Problème avec la valeur d'une variable globale
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/06/2013, 12h26
  2. Problème avec le paramètrage d'une variable dans un lien pour un panier
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/09/2011, 13h07
  3. [MySQL] Problème avec la récupération d'une variable dans un lien pour un panier
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 23/06/2011, 13h58
  4. Réponses: 5
    Dernier message: 17/09/2010, 14h33
  5. Réponses: 2
    Dernier message: 16/11/2007, 18h38

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