Recuperation d'une variable de session

Résolu
Bonjour,

Je vous explique mon problème qui ne devrait surment pas l'être mais je suis bloquer quand même :D

En faite voilà j'ai créé une page web ou les gens s'inscrive et se log pour entré dessus grace à leur adresse mail et mot de pass. jusque la tout va bien :D.

ensuite sur le site il peuvent selectionner des objets.

dans le liste.php:


<?php echo("Bonjours, ".$_SESSION["mail"]."<br/>") ; ?>
<?php echo("<a href=\"deconnexion.php\">déconnexion</a><br/>") ;?>

<li onclick="javascript:montre('sdesc21');">Un service à fondue &#160;&#160;<a href="http://shop.conradt.be/" alt="Aller sur le site web de Conradt"><img src="style/images/conradt.gif"></a>
<form method="post" action="action.php"><input type="checkbox" name="item" id="item" value="Service a fondu"/><input type="submit" value="Je vous l'offre"/></form>

Tout marche bien sur la page liste.php il afficher bien la variable $_SESSION ect...
le problème c'est que dans action je voudrais pouvoir récupérer le nom de session c'est à dire leur adresse mail et l'enregistrer dans la base de donnée.

dans le action.php:
<?php	
			$mail=$_POST["mail"];
			$item = $_POST["item"];

	//connexion au serveur
	$cnx = mysql_connect("localhost", "root", "");

	//sélection de la base de données
	$db = mysql_select_db("dbmariage");
	//création de la requête SQL
	
	//création de la requête SQL
	$sql = "INSERT INTO dbliste (item,mail) VALUES ('".$item."','".$mail."')";
	
	//exécution de la requête
	$requete = @mysql_query($sql, $cnx) or die($sql."<br>".mysql_error());
	if($requete)
	{		

		echo "merci pour votre cadeau";

	//sinon on retourne à la page de liste.
	}//fin if
	else {
		header("Location: liste.php");
		
	}//fin else

?>


mais je n'arrive pas a appelé la session pour qu'il enregistre l'adresse mail. Sinon il enregistre bien le bon item qd je le choisis.

Merci d'avance pour vos réponse.
Configuration: Windows Vista
Firefox 3.0.10

9 réponses

  1. Une variable de session est défini par $_SESSION['variable'].
    Pour le mail ça sera donc par exemple: $_SESSION['mail'].
    Pour appelé et utiliser les variables de session il faut le code suivant en tout début de page avant toute chose:
    <?php
    session_start();
    ?>
    1. bon j'ai essayer ca

      <?php	
      session_start();
      			$_SESSION["mail"]=$mail;
      			$mail=$_POST["mail"];
      			$item = $_POST["item"];
      
      	//connexion au serveur
      	$cnx = mysql_connect("localhost", "root", "");
      
      	//sélection de la base de données
      	$db = mysql_select_db("dbmariage");
      	//création de la requête SQL
      	
      	//création de la requête SQL
      	$sql = "INSERT INTO dbliste (item,mail) VALUES ('".$item."','".$mail."')";
      	
      	//exécution de la requête
      	$requete = @mysql_query($sql, $cnx) or die($sql."<br>".mysql_error());
      	if($requete)
      	{		
      
      		echo "merci pour votre cadeau";
      
      	//sinon on retourne à la page d'inscription
      	}//fin if
      	else {
      		header("Location: liste.php");
      		
      	}//fin else
      
      ?>
      

      mais il me mais tjrs une erreur

      Notice: Undefined variable: mail in C:\wamp\www\liste cadeau\action.php on line 3

      Notice: Undefined index: mail in C:\wamp\www\liste cadeau\action.php on line 4
      1. Ben en même temps tu donnes à $_SESSION['mail'] la valeur de $mail qui n'est pas défini.

        $_SESSION["mail"]=$mail;
        $mail=$_POST["mail"];

        Là, y'a une incohérence.
        1. ouai je susi con :D j'ai juste rajouter

          <?php	
          session_start();
          if(!isset($_SESSION["mail"]) || $_SESSION["mail"] == "")
          {	
            header("Location: index.php") ;
          }//fin if
          else
          {
          
          			$item = $_POST["item"];
          
          	//connexion au serveur
          	$cnx = mysql_connect("localhost", "root", "");
          
          	//sélection de la base de données
          	$db = mysql_select_db("dbmariage");
          	//création de la requête SQL
          	
          	//création de la requête SQL
          	$sql = "INSERT INTO dbliste (item,mail) VALUES ('".$item."','".$_SESSION["mail"]."')";
          	
          	//exécution de la requête
          	$requete = @mysql_query($sql, $cnx) or die($sql."<br>".mysql_error());
          	if($requete)
          	{		
          
          		echo "merci pour votre cadeau";
          
          	//sinon on retourne à la page d'inscription
          	}//fin if
          	else {
          		header("Location: liste.php");
          		
          	}//fin else */
          }
          ?>
          
          maintenant ca marche :)
          
          merci
          
          1. Faut juste que tu mettes :

            $mail=$_SESSION["mail"];
            $item = $_POST["item"];


            car la variable $_SESSION["mail"] est déjà défini sur ta page liste.php, enfin si tu l'as bien défini.
            1. ben enfaite sur ma page liste j'ai

              <?php
              session_start() ;
              
              if(!isset($_SESSION["mail"]) || $_SESSION["mail"] == "")
              {	
                header("Location: index.php") ;
              }//fin if
              else
              {
              ?>
              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
              <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
              	<head>
              		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
              		<link href="style/style.css" rel="stylesheet" type="text/css"/>
              		<title>Liste de mariage de Laurent HELLIN et Aurore CORMAN</title>
              	</head>
              	<script type="text/javascript">
              
              <!--
              
              window.onload=montre;
              
              function montre(id) {
              
              var d = document.getElementById(id);
              
              	for (var i = 1; i<=200; i++) {
              
              		if (document.getElementById('sdesc'+i)) {document.getElementById('sdesc'+i).style.display='none';}
              
              	}
              
              if (d) {d.style.display='block';}
              
              }
              
              //-->
              
              </script>
              
              	<body>
              		<div id="page">
              		<div id="header">
              		<h1>Notre liste de mariage</h1>
              		</div>
              		<div id="content">
              			<?php echo("Bonjours, ".$_SESSION["mail"]."<br/>") ; ?>
              			<?php echo("<a href=\"deconnexion.php\">déconnexion</a><br/>") ;?>
              


              mais qd je me log dans verif.php j'ai

               <?php
              if($_POST["mail"] != "" && $_POST["mdp"] != "")
              {
                  $mail  = $_POST['mail'] ;
                  $mdp   = $_POST['mdp'];
              
               
              	//connexion au serveur
              	$cnx =mysql_connect("localhost", "root", "") or die ("Pb connexion a la base ".mysql_error());
              	//sélection de la base de données
              	$db = mysql_select_db("dbmariage") or die ("Pb selection base ".mysql_error());
              	
                     //création de la requête SQL
              	$sql = "SELECT * FROM dbinvit WHERE mail = '$mail' AND mdp = '$mdp'"; 
                     //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
              	//var_dump($result);
              	
               if(is_object($result))
                  {
                  //début de la sessions
              		session_start() ;
              			//enregistrement d'une variable de session, ici le mail de l'utilisateur
              			$_SESSION["mail"]=$mail;
              	
              			header("Location: liste.php");
              			
              	}//fin du if
              	 //sinon on retourne à la page de login
              	 else
              	 {
              		header("Location: index.php");
              		
              	  }//fin else
              	}//fin if
              	/*Sinon on retourne au login*/
              	else
              	{
              		header("Location: index.php");
              		
              	}//fin else
              ?>
              


              sinon j'ai essayer comme tu dis il me met une erreur

              Parse error: parse error in C:\wamp\www\liste cadeau\action.php on line 4