Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Membre régulier Avatar de transact
    Homme Profil pro
    Inscrit en
    décembre 2008
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : décembre 2008
    Messages : 317
    Points : 83
    Points
    83

    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.

  2. #2
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro Jérôme Réaux
    Webdesigner
    Inscrit en
    août 2008
    Messages
    5 357
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme Réaux
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : août 2008
    Messages : 5 357
    Points : 10 398
    Points
    10 398

    Par défaut

    Bonjour,
    <?php session_start(); doit être tout en haut, sans espaces ni ligne vide ni quoi que ce soit d'autre avant.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire arrivent aisément."
    Nicolas Boileau-Despréaux (1636-1711).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  3. #3
    Membre régulier Avatar de transact
    Homme Profil pro
    Inscrit en
    décembre 2008
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : décembre 2008
    Messages : 317
    Points : 83
    Points
    83

    Par défaut

    Rien n'y fait la variable de session n'est pas récupérée.

  4. #4
    Membre régulier Avatar de transact
    Homme Profil pro
    Inscrit en
    décembre 2008
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : décembre 2008
    Messages : 317
    Points : 83
    Points
    83

    Par défaut

    [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')

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •