Page 1 sur 1

Pb $_SESSION :)

Posté : 26 oct. 2011, 13:14
par besoin_daide
Bonjour à tous!

Alors Voila Lorsque le visiteur enttre ses identifiants dans le formlaire(au debut de cette page il y a un session_start()), je recupere es valeurs dans la page cible et dans cette page cible j'ai besoin d'utiliser la variable $_SESSION pour recuperer 3 variables pour les utiliser dans la page de confirmation,mais j'ai un problème:

script de ma page cible du formulaire:
<?php
session_start();

$_SESSION['mail']=$_POST['mail'];
$_SESSION['passwd']=$_POST['passwd'];
$_SESSION['ville']=$_POST['ville'];

$mail = htmlentities($_POST['mail']);
$nom_site = "quelquechose";
$email_admin = "[email protected]";



		
		  
		  // on teste l'existence de nos variables. On teste également si elles ne sont pas vides //
		   if (( empty($_POST['login'])) || (empty($_POST['passwd'])) || (empty($_POST['passwdc'])) || ( empty($_POST['ville'])) || (empty($_POST['mail']))) 

			{
				echo 'Un ou plusieurs champs ne sont pas remplis, <a href="javascript:history.back(1)">Retour au formulaire</a>';
				exit();
 			}
			 elseif ((!empty($_POST['login'])) && (!empty($_POST['passwd'])) && (!empty($_POST['passwdc'])) && (!empty($_POST['ville'])) && (!empty($_POST['mail']))) 

			 {
            $base = mysql_connect ('...') or die('Erreur de connexion '.mysql_error());
		    mysql_select_db('...',$base)  or die('Erreur de selection '.mysql_error()); 
             
             // on recherche si ce login est déjà utilisé par un autre membre
             $sql = 'SELECT count(*) FROM pdf_membre WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
             $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
             $data = mysql_fetch_array($req); 
     
             if ($data[0] > 0)  
         
			 { 
			 
                echo 'Un membre possède déjà ce login ==>  <a href="javascript:history.back(1)">Retour au formulaire</a>'; 
             } 
          }
			//else {
			
			/*if*/if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail)) //Verifie que l'email entrée n'est pas une fausse.
    {
		$chaine = "abcdefghijklmnopqrstuvwxyz0123456789"; 
		$confirm = str_shuffle($chaine); //On créé le code de confirmation
		
		$login = htmlentities($_POST['login']); //On recupère les infos
		$passwd = htmlentities($_POST['passwd']);
		$passwdc = htmlentities($_POST['passwdc']);
		$ville = htmlentities($_POST['ville']);
		
		

		
		/*On Fait la variable contenant le mail de confirmation*/
	
		$message1 = '<html><body>Bonjour ' . $login . ' et bienvenue sur ' .$nom_site. '.</br>'; 
		$message1 .= '</br>';
		$message1 .= 'Vous venez de vous inscrire et nous sommes heureux<br>de pouvoir vous compter aujourd\'hui parmi nos membres.<br>'; 
		$message1 .= 'Voici un rappel de vos identifiants, notez les précieusement : <br>';
		$message1 .= 'Votre Pseudo :' . $login .'.<br>';
		$message1 .= 'Votre Mot de passe:' . $passwd .'.<br><br>';
		$message1 .= 'Votre Mail:' . $mail .'.<br><br>';
		$message1 .= 'Votre Ville:' . $ville .'.<br><br>';									
		$message1 .= 'Si vous souhaitez changer vos informations, rendez-vous dans votre compte pour les mettre à jour.<br>';
		$message1 .= 'Votre Clé d\'activation:<br>';
   		$message1 .= 'www.....fr/confirm.php?login=' . str_replace(' ','%20',$login) . '&confirm=' . $confirm . '<br><br>';
		$message1 .= 'A très bientôt sur le site!<br>L\'équipe de ' .$nom_site. '.<br><a href="www.....fr">' .$nom_site. '</a>';


		
		$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE login='$login' OR mail='$mail'") or die (mysql_error());
		$donnees = mysql_fetch_array($verification)or die (mysql_error());
		

	
		
	


		
			if( $passwd != $passwdc) //On verifie que les 2 pass sont identiques
			{
				echo 'Les mots de passe ne sont pas identiques ==> <a href="javascript:history.back(1)">Retour au formulaire</a>';
			}
			else //Si tout est bon on entre la clé(les données )dans la BDD et on envoye le mail
			{
				
			$login =  mysql_real_escape_string($login); //On protege les infos
	$passwd = mysql_real_escape_string($passwd);
	$passwdc = mysql_real_escape_string($passwdc);
	$ville = mysql_real_escape_string($ville);
	$confirm = mysql_real_escape_string($confirm);
	$mail = mysql_real_escape_string($mail);
	
				//mysql_query("INSERT INTO pdf_membre (id,login,passwd,mail,ville) VALUES ('','$login', '$passwd', '$mail', '$ville')");
				mysql_query("INSERT INTO pdf_membre (confirm) VALUES ('$confirm')");
				echo 'Bravo, vous êtes maintenant inscrit sur ' .$nom_site. '. <br>Vous allez recevoir un e-mail pour activer votre compte. <br><a href="/index.php">Retour à l\'Accueil</a>';
				$entete = "MIME-Version: 1.0\r\n";
				$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
				$entete .= "From: <$email_admin>\r\n";
				$entete .= "Reply-To: $email_admin\r\n";
				mail($mail,'Bienvenue sur ' .$nom_site. ' ' . $login .'.' , $message1, $entete);
			}
		}
		

		else
		{ echo ' L\'adresse email entrée n\'existe pas ==> <a href="javascript:history.back(1)">Retour au formulaire</a>';}
		

		 mysql_close($base);  //On se deconnecte
	




?>
<html>
<body>

<!-- On affiche la reponse de tout le code du dessus -->
</body>
</html>


Script de la page de confirmation:
<?php
session_start();

$_SESSION['mail']=$mail;
$_SESSION['passwd']=$passwd;
$_SESSION['ville']=$ville;


//on verifie si les variables ne sont pas vides
if (!isset($_GET['login']))//si le login  n'existe pas...
{
 echo 'erreur: pas de login fourni';
 exit();
}
if ( !isset($_GET['confirm']) )
{
 echo 'erreur: pas de code de confirmation';
 exit();
} 

$base = mysql_connect ('...') or die('Erreur de connexion '.mysql_error());
mysql_select_db('...',$base)  or die('Erreur de selection '.mysql_error()); 

// Récupération des variables nécessaires à l'activation
$login = $_GET['login'];
$cle = $_GET['confirm'];
$reponse = mysql_query ("SELECT actif FROM pdf_membre "); //On recupère les infos à partir du pseudo $reponse = mysql_query ("SELECT * FROM pdf_membre WHERE login='$login'");//
$donnees = mysql_fetch_array ($reponse);
$actif = $donnees['actif'];

$reponse1 = mysql_query ("SELECT confirm FROM pdf_membre "); //On recupère les infos à partir du pseudo $reponse = mysql_query ("SELECT * FROM pdf_membre WHERE login='$login'");//
$donnees = mysql_fetch_array ($reponse1);
$clebdd = $donnees['confirm'];


//Faut utiliser une variable session pour "appeler les variables ville mail et lautre"pour pouvoir les stocker
	
// Récupération de la clé correspondant au $login dans la base de données

/*$stmt = $base->prepare("SELECT confirm,actif FROM pdf_membre WHERE login like :login ");

if($stmt->execute(array(':login' => $login)) && $row = $stmt->fetch())
  {
    $clebdd = $row['confirm'];	// Récupération de la clé
    $actif = $row['actif']; // $actif contiendra alors 0 ou 1
  }
*/

//$sql = 'SELECT confirm,actif FROM pdf_membre WHERE login like %$login%'; 
$result = mysql_query("SELECT `confirm`,`actif` FROM `pdf_membre` WHERE `login` like '%$login%'") or exit(mysql_error());
$row= mysql_fetch_assoc($result);

if($result && $row)
{
      $clebdd = $row['confirm']; // Récupération de la clé 
      $actif = $row['actif'];  // $actif contiendra alors 0 ou 1 
     
}		
		
// On teste la valeur de la variable $actif récupéré dans la BDD
if($actif == '1') // Si le compte est déjà actif on prévient
  {
     echo "Votre compte est déjà actif !";
  }
else // Si ce n'est pas le cas on passe aux comparaisons
  {
     if($cle == $clebdd) // On compare nos deux clés	
       {
          // Si elles correspondent on active le compte !	
 mysql_query("UPDATE pdf_membre SET actif = 1 where login like '$login'");
	mysql_query("INSERT INTO pdf_membre (id,login,passwd,mail,ville) VALUES ('','$login', '$passwd', '$mail', '$ville')") or exit(mysql_error());         
	 echo "Votre compte a bien été activé !";

      

       }
     else // Si les deux clés sont différentes on provoque une erreur...
       {
          echo "Erreur ! Votre compte ne peut être activé...";
       }
  }
  mysql_close($base);
  ?>

<html>
<body>

</body>
</html>


et voici le message d'erreur quand je clic sur le lien d'activation recu dans le mail:

Notice: Undefined variable: mail in /homez.466/animejap/www/confirm.php on line 4

Notice: Undefined variable: passwd in /homez.466/animejap/www/confirm.php on line 5

Notice: Undefined variable: ville in /homez.466/animejap/www/confirm.php on line 6
Erreur ! Votre compte ne peut être activé...

Re: Pb $_SESSION :)

Posté : 26 oct. 2011, 13:53
par xTG
Eh bien oui, d'où proviennent ces variables ? Si elles sont déjà en session tu ne fais que les écraser par des variables n'existant pas.
Que cherches-tu à faire avec ces trois lignes ci-dessous dans ta page de confirmation ?
$_SESSION['mail']=$mail;
$_SESSION['passwd']=$passwd;
$_SESSION['ville']=$ville;

Re: Pb $_SESSION :)

Posté : 26 oct. 2011, 14:03
par besoin_daide
hé bien pour faire un insert into ma table pour entrer les données du visiteur dans ma bdd j'ai besoin de reuperer les valeurs entrées par le visiteur lors de son inscription,mais je ne peux pas uiliser $_POST etant donné que confirm.php n'est pas la page cible de pdf_inscription2.php,j'ai pu récupérer le login et la clé grace à $_GET mais pour les autres le seul moyen est d'utiliser $_SESSION.
j'ai donc créer $_SESSION['ville']... et les ai appelé: $ville...juste pour faciliter la notation mais apparemment tu me dis que ca ecrase je sais pas quoi,en fait comprend pas très bien comment utiliser $_SESSION

Re: Pb $_SESSION :)

Posté : 26 oct. 2011, 14:09
par moogli
au final ça ne serait sur la même chose que tu nous ballade la php-debutant/php-pdo-mysql-t260930.html ?

parce que bon cela serait beaucoup plus clair (sans parler d'un titre plus indicatif ;) ).


@+