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. 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
    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. 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. 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. 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. 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();
              ?>