Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/10/2012, 16h10   #1
transact
Membre régulier
 
Avatar de transact
 
Homme
Inscription : décembre 2008
Messages : 275
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 275
Points : 76
Points : 76
Par défaut Variable de session non récupérée suite à une redirection

Bonjour à toutes et à tous,

Lorsque je mets la ligne suivante :
Code :
header('Location: http://localhost/zone_producteur.php');
La variable de session $_SESSION['id'] n'est pas récupérée et j'ai le message d'erreur suivant.
Code :
Notice: Undefined variable: _SESSION in C:\Users\sogia\Desktop\www\wineBusiness\zone_producteur.php on line 57
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
 
<?php
	session_start(); // on veut récupérer l'identifiant de connexion
	error_reporting(E_ALL); ini_set('display_errors', 1);	
	echo "<pre>" . PHP_EOL;
	/** function permettant de transférer la photo envoyée depuis le navigateur du client sur le serveur.
		Il faut vérifier que le fichier est bien sur le serveur et qu'il ne dépasse pas la taille max. */
 
			// création des variables permettant d'envoyer la photo sur le serveur
		$photo_blob = '';
		$photo_taille = 0; // on initialise la taille de la photo
		$photo_type = '';
		$photo_nom = '';
		$taille_max = 300000; // taille maximale de la photo
 
		// nous effectuons un test sur l'envoi du fichier avec la variable superglobale $_FILES
		// Attention : $_FILES[][] est un tableau et non une fonction 		
		//mkdir('fichiers', 0777, true); // création d'un répertoire où seront stockées les photos											
		$uploads_dir = 'fichiers'; // affectation du répertoire crée 
		$photo_nom = $_FILES["photo"]["name"]; // le nom du fichier qui sera uploadé
 
		// si la variable de session SESSION['id'] est initialisé 
		if(isset($_SESSION['id'])) {
			$id = $_SESSION['id'];
			$photo_nom = $id.'_'.$photo_nom; // on place l'identifiant du producteur devant le nom du fichier	
			//	si toutes les variables envoyées ne sont pas vides et ont été initialisées
			if(!empty($_FILES) && isset($_FILES) && isset($_POST) && !empty($_POST)){
				$photo_desc = $_POST['photo_desc'];
				// alors on déplace sur le serveur le fichier uploadé 
				$resultat = move_uploaded_file($_FILES['photo']['tmp_name'], "$uploads_dir/$photo_nom");
				// on vérifie que le fichier a bien été uploadé et déplacé sur le serveur avant de l'envoyer en base
				if(!$resultat) {
					echo 'Problème de transfert de la photo';	
				} else {
					// la photo a bien été reçue, on réaffecte la valeur de la taille de la photo
					$photo_taille = $_FILES['photo']['size'];
					// on vérifie la taille de la photo
					if($photo_taille > $taille_max) {
						echo 'La photo est trop volumineuse !';
					} 
					// on affecte le type de la photo
					$photo_type = $_FILES['photo']['type'];	
					// on utilise la fonction file_get_contents() permettant de passer le contenu du fichier
					// directement dans une variable
					$photo_blob = file_get_contents ("$uploads_dir/$photo_nom");
					$photo_blob = addslashes($photo_blob); // on échappe le contenu binaire du fichier
 
					// on inclus le script de connexion à la base de données
					include_once 'includes/inc_connexion.php'; 
					$conn=opendb_conn(); // on se connecte à la Base de données
 
					/** partie traitant l'insertion des photos dans la table des photos **/
					// création de la requête 
					$req = 
					"insert into photos(photo_id,photo_nom,photo_taille,photo_type,photo_desc,photo_blob,idproducteur) 
						values('',:photo_nom,:photo_taille,:photo_type,:photo_desc,:photo_blob,:idproducteur)";
 
					// on prépare le traitement de la requête
					$stm=$conn->prepare($req);
					// Tentative d'insertion en base d'une photo en utilisant le mode transactionnel
					// bloc try ... catch()
					try {
						$conn->beginTransaction();
						// on associe les marqueurs nommés avec les variables crées plus haut
						$stm->bindParam(':photo_nom', $photo_nom, PDO::PARAM_STR);
						$stm->bindParam(':photo_taille', $photo_taille, PDO::PARAM_STR);
						$stm->bindParam(':photo_type', $photo_type, PDO::PARAM_STR);
						$stm->bindParam(':photo_desc', $photo_desc, PDO::PARAM_STR);
						$stm->bindParam(':photo_blob', $photo_blob, PDO::PARAM_STR);
						$stm->bindParam(':idproducteur', $id, PDO::PARAM_INT);
						// exécution de la requête
						$stm->execute();			
						// on commit
						$conn->commit();
						//echo 'Transfert effectué';
						header('Location: http://localhost/zone_producteur.php');																						
					} catch(PDOException $e) {
						// on rollback si cela se passe mal
						$conn->rollback();
						// on affiche un message d'erreur
						print '</br>';
						print "Erreur lors de l'insertion en base !: " . $e->getMessage() . "</br>";
					} // fin bloc try ... catch()								
					//echo 'Transfert réussi !'; 
				} // fin if(!$resultat) ... else
			} else {
				echo 'Tous les champs ne sont pas parvenus';
			} // fin if(!empty()) ... else								
		} // fin if(isset($_SESSION['id']))
 
		print '<pre>';	
		print_r($_FILES);
		print_r($_POST); // pour le débogage
		print_r($_SESSION);
		print '</pre>';
 
?>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<!-- div permettant d'afficher le textarea présent dans le formulaire -->
				<div id="modifierTexte"></div> <!-- cette div est utilisée dans le fichier modifierZoneTexte.js -->
				<div id="ajoutPhotos"></div> <!-- div pour ajout des photos après envoi au serveur -->
				<!-- formulaire pour ajout des photos dans la zone producteur -->				
				<form name="form4" id="formPhotosAjout" enctype="multipart/form-data" action="ajout_publierPhotos.php" method="post" style="display:none">
					<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
					<h5><img class="ico_categorie" src="img/ico_epingle.png" title="Ajouter vos photos" />Publier les photos de votre vignoble</h5>
					<input type="file" name="photo" id="photo" size=50 accept="image/*" autofocus="autofocus" height="100px" width="130px" />	<br/>
					<input type="text" name="photo_desc" size=50 placeholder="e.g : Une cave vinicole du Domaine de Pierrefeu" required="required" /><p />		
					<input type="submit" name="submit" id="submit" value="Publier" style="font-size: 14px;border:solid 1px #375D81;color:#760001;" />
				</form><!-- formPhotosAjout -->
Merci d'avance,
Transact.
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 17h08   #2
jreaux62
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 3 657
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 46
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 3 657
Points : 7 538
Points : 7 538
Envoyer un message via Skype™ à jreaux62
Bonjour,
<?php session_start(); doit être tout en haut, sans espaces ni ligne vide ni quoi que ce soit d'autre avant.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
"Quand le sage montre la lune, le sot regarde le doigt."
Confucius, Homme d'Etat et philosophe chinois (551-479 av. J.-C).
Site perso Mes tutos DVP
Gestion-Affichage de Nouvelles Affichage en tableau HTML Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 17h19   #3
transact
Membre régulier
 
Avatar de transact
 
Homme
Inscription : décembre 2008
Messages : 275
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 275
Points : 76
Points : 76
Rien n'y fait la variable de session n'est pas récupérée.
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 17h55   #4
transact
Membre régulier
 
Avatar de transact
 
Homme
Inscription : décembre 2008
Messages : 275
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2008
Messages : 275
Points : 76
Points : 76
[résolu]
En fait il faut passer la variable de session $_SESSION['id'] en GET

Code :
header('refresh:2;url=http://localhost/zone_producteur.php?id='.$id)
au lieu de
Code :
header('Location : http://localhost/zone_producteur.php')
transact est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h35.


 
 
 
 
Partenaires

Hébergement Web