Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/06/2011, 13h55   #1
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
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 :
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 :
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 :
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
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h02   #2
Membre habitué
 
Inscription : décembre 2007
Messages : 181
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 181
Points : 140
Points : 140
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 :
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.
roduce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h02   #3
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Les pages utilisant les sessions doivent commencer par session_start();
__________________
Membre de StackOverflow, je suis un fervant 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 mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet 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...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h07   #4
Membre habitué
 
Inscription : décembre 2007
Messages : 181
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 181
Points : 140
Points : 140
Oui aussi, tellement évident que j'y avais pas pensé, mais le reste de mon post est valable !
roduce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h29   #5
Candidat au titre de Membre du Club
 
Étudiant
Inscription : mars 2009
Messages : 102
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2009
Messages : 102
Points : 14
Points : 14
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 !
roy-mustang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h36   #6
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
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 :
Citation:
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 :
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 :
$_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 :
1
2
3
if(isset($_SESSION['adresse_mail'])){
    $mail=formulaires($_SESSION['adresse_mail']);
}
Bref, vous voyez le principe, il faut l'appliquer "partout".
__________________
Membre de StackOverflow, je suis un fervant 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 mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet 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...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h36   #7
Membre habitué
 
Inscription : décembre 2007
Messages : 181
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 181
Points : 140
Points : 140
mets ceci au début de ton code:
Code :
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";
roduce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h53   #8
Futur Membre du Club
 
Homme Ahmed
Ingénieur systèmes et réseaux
Inscription : octobre 2007
Messages : 16
Détails du profil
Informations personnelles :
Nom : Homme Ahmed
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
Bonjour,

C'est pas juste ce code :

Code :
1
2
 
$_SESSION['session'] = "$session";
Vous devez faire :

Code :
1
2
 
$_SESSION['session'] = $session;
ahmedious est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 16/06/2011, 15h01   #9
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Ahmed, les 2 fonctionnent.
La première force juste en string. La 2ème garde le type de $session.
__________________
Membre de StackOverflow, je suis un fervant 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 mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet 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...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h09.


 
 
 
 
Partenaires

Hébergement Web