Bonjour à toutes et à tous,

Lorsque je mets la ligne suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
Notice: Undefined variable: _SESSION in C:\Users\sogia\Desktop\www\wineBusiness\zone_producteur.php on line 57
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.