Variable de session qui ne s'envoi pas...

Résolu/Fermé
Céline - 5 juin 2008 à 14:12
Barracuda8 Messages postés 107 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 19 décembre 2011 - 5 juin 2008 à 16:12
Bonjour,
Je realise une petite application qui fera partie d'une plus grande.
C'est une page php qui permet à un utilisateur de changer son mot de passe.
Je recupere le login par rapport a la page index et je demande a l'utilisateur de rentrer un nouveau mot de passe dans 2 cases (une pour verification)
Malheureusement je n'arrive pas a envoyer ces 2 variables dans la page de validation :

Page de changement de mot de passe :

<?php	
	$new_mdp=isset($_POST['new_mdp']) ? $_POST['new_mdp'] : ""; 
	$verif_mdp=isset($_POST['verif_mdp']) ? $_POST['verif_mdp'] : ""; 
	
	$_SESSION["new_mdp"]=$new_mdp;
	$_SESSION["verif_mdp"]=$verif_mdp;
	
	if (!empty($new_mdp) && !empty($verif_mdp))
	{
		header("Location:http://localhost/Privacy_Risk/Front/valid_change_pass.php");  
	}
	
	include 'header.php';
?>
<div class="block1">
	<h2>Modify your password</h2>

	<FORM METHOD="POST" ACTION="<?php echo $_SERVER['PHP_SELF']?>">
		<table align='center'>
			<tr>
				<td align='left'>
					Login :
				</td>
				<td>
					<input type="text" name="log" value="<?php echo $_SESSION['log']; ?>" style="background-color: lightgrey" onFocus="javascript: this.blur()">
				</td>
			</tr>
			<tr>
				<td align='left'>
					Password :
				</td>
				<td>
					<input type="password" name="new_mdp">
					
				</td>
			</tr>
			<tr>
				<td align='left'>
					Password confirmation :
				</td>
				<td>
					<input type="password" name="verif_mdp">
					
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input type="submit" class="boite" name="submit" value="Send">
				</td>
			</tr>
		</table>
		
	</FORM>

</div>
<?php
	include 'footer.php';
?>



et la page de verif' :


<?php

	//echo"<meta http-equiv='refresh' content='2;url=http://localhost/Privacy_Risk/Front/authentificate/etape_2.php'>";
		
	echo $_SESSION["new_mdp"];
	echo $_SESSION["verif_mdp"];	
	
	include 'header.php';
	
	
?>
<div class="block1">

<h2>Modifier votre mot de passe</h2>

<?php
	//if ($_SESSION["new_mdp"]==$_SESSION["verif_mdp"])
	//{
	$ins="UPDATE privacy_formulaire SET password='".$_SESSION["new_mdp"]."' verif_password='".$_SESSION["verif_mdp"]."' WHERE login='".$_SESSION['log']."'";	
	$req= mysql_query($ins) or die("Erreur SQL !<br/>".$ins."<br/>".mysql_error()." "); 	
	echo '<p class="valid_ok">The password has been changed.</p>';
	//}
?>

</div>

<?php
	include 'footer.php';
?>



La connexion et le demarrage de la session se fait dans le header...Je sais pas si j'ai étais clair donc si quelqu'un voit ou se trouve le soucis je suis preneuse ...Merci d'avance !

8 réponses

Barracuda8 Messages postés 107 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 19 décembre 2011 65
5 juin 2008 à 14:39
Salut,

Je ne vois pas trop où est l'erreur dans ton script. Mais d'emblée, je peux te dire qu'il te manque un session_start() avant d'utliser les variables sessions:

<?php

session_start();

echo $_SESSION["new_mdp"];
echo $_SESSION["verif_mdp"];

include 'header.php';
?>

Si tu ne conais pas trop les variables sessions, je peux te renvoyer sur ce post:

http://www.commentcamarche.net/forum/affich 6617865 variable session#dernier

Bonne journée,
Barracuda.
0
Oups j'ai oublié de preciser qu'il se situais dans le header, je connais un peu les variables de sessions, pour avoir travailler sur une autre partie de mon appli...mais là je seche completement... Mais merci d'etre passé !
0
Barracuda8 Messages postés 107 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 19 décembre 2011 65
5 juin 2008 à 15:40
Re - salut!

En relisant ton code, je remarque que ton include du header se trouve après l'utilisation de tes variables sessions.

Je vais essayer de reprendre sur tes deux fichiers:

Le premier,

<?php

include 'header.php';

$new_mdp=isset($_POST['new_mdp']) ? $_POST['new_mdp'] : "";
$verif_mdp=isset($_POST['verif_mdp']) ? $_POST['verif_mdp'] : "";

$_SESSION["new_mdp"]=$new_mdp;
$_SESSION["verif_mdp"]=$verif_mdp;

if (!empty($new_mdp) && !empty($verif_mdp))
{
header("Location:http://localhost/Privacy_Risk/Front/valid_change_pass.php");
}


?>

Le second,

<?php

include 'header.php';

echo $_SESSION["new_mdp"];
echo $_SESSION["verif_mdp"];




?>

A noter: si tu fais ton session_start() dans le header.php, alors tu dois l'inclure avant d'utiliser tes variables sessions.

Si ca peut t'aider...
Bonne journée,
Barracuda.
0
C'est pas possible que je mette le header avant parce que j'ai plusieurs trucs qui me bloque l'utilisation du header(Location....) ensuite.

Mon header :

<?php
	session_start(); 
	
	include 'conf.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3/org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8"></meta>
	
	<title>PrivacyRisk</title>
	
	<link rel=stylesheet href="css/template.css" type="text/css">
</head>
<body>

<div id="header"><h1>PrivacyRisk</h1></div>

<div id="content">



Dans mon conf, il y a la connection a la base de données!
0
Barracuda8 Messages postés 107 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 19 décembre 2011 65
5 juin 2008 à 15:56
Ok, je comprend.

Si tu délocalises ton session_start du header.php et que tu le places directement avant l'utilisation de tes variables sessions, obtiens-tu de meilleurs résultats?

Si oui, tu pourrais essayer de le laisser dans le header.php pour ne pas compromettre d'autres fichiers et de recopier juste le session_start(); avant l'utilisation des variables dans les deux autres fichiers.

Dans ce cas, tu ferais appel deux fois à la fonction sessions_start() dans un même fichier. Ce n'est pas très propre mais je ne pense pas non plus que mettre un session_start() dans un header.php soit toujours la meilleur idée...

Cordialement,
Barracuda
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ben ben j'ai une erreur :

Erreur SQL !
UPDATE privacy_formulaire SET password='111' verif_password='111' WHERE login='plout@hotmail.fr'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'verif_password='111' WHERE login='plout@hotmail.fr'' at line 1

D'habitude il me fais ca quand une de mes variables est vide, en l'occurence il me dit qu'il y a quelque chose dans toutes...ca peut provenir de quoi a part d'une variable vide ?
0
Barracuda8 Messages postés 107 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 19 décembre 2011 65
5 juin 2008 à 16:03
Ok!

A la lecture de ta requête, je suppose que cette fois, les varaibles sessions sont bien passées, c'est déjà ca!

Je vois aussi une erreur dans ta requête, il manque une virgule:

UPDATE privacy_formulaire SET password='111', verif_password='111' WHERE login='plout@hotmail.fr' ;

Un point-virgule à la fin c'est pas mal aussi.

Courage!
0
Ah oui c'est ca ! Merci beaucoup !!Par contre je sais pas pourquoi du coup il a voulu m'envoyer les données mais bon ca marche en tout cas !

Encore merci et bonne journée !
0
Barracuda8 Messages postés 107 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 19 décembre 2011 65
5 juin 2008 à 16:12
De rien!
Par contre, je ne comprend pas de quelles données tu parles en disant "il a voulu m'envoyer les données".
Si tu parles du Update, tu ne fais pas de contrôle avant de le lancer (tout est commenté) donc c'est normal qu'il passe dedans.
0