IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Variable de session non récupérée suite à une redirection


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    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 : 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.

  2. #2
    Invité
    Invité(e)
    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.

  3. #3
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Rien n'y fait la variable de session n'est pas récupérée.

  4. #4
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('refresh:2;url=http://localhost/zone_producteur.php?id='.$id)
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location : http://localhost/zone_producteur.php')

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

Discussions similaires

  1. Variables de la session non récupéré
    Par Auriga1 dans le forum Langage
    Réponses: 3
    Dernier message: 16/03/2011, 16h38
  2. variables de session non conservées d'une page à l'autre
    Par titemimine dans le forum Langage
    Réponses: 10
    Dernier message: 04/06/2010, 16h29
  3. Variable de session non rafraîchie
    Par Akela dans le forum Langage
    Réponses: 6
    Dernier message: 17/10/2007, 15h44
  4. Réponses: 2
    Dernier message: 24/10/2006, 22h12
  5. Réponses: 4
    Dernier message: 19/04/2006, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo