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 :

Partie de $_SESSION qui disparaît [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Partie de $_SESSION qui disparaît
    Bonjour ,

    J'ai un soucis avec PHP. J'ai un formulaire, quand on valide ce formulaire, on est redirigé vers une page qui s'occupe du traitement.

    S'il y a des erreurs, toutes les données sont enregistrées en session pour pouvoir auto compléter le formulaire.

    Il y a un champ fichier dans le formulaire, si on met un fichier, ça bloque pendant le traitement au niveau de move_uploaded_file qui renvoie false.

    Si l'on revoie une nouvelle fois le formulaire, une partie des variables de session sont perdues, mais pas la partie qui contient le contenu du formulaire. (J'espère que c'est pas trop confus..)

    Si quelqu'un connait la solution, c'est volontiers, ça fait 4 heures que je cherche..

    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
     
    extract($_POST);
     
    [.....]
     
     
     
    if(!empty($_FILES['fichier']['name'])){
    	$basename = $_FILES['fichier']['name'];
    	$extension = strrchr($_FILES['fichier']['name'], '.');
     
    	$extensions_valides = array( '.jpg' , '.jpeg' , '.png' , '.pdf' );
     
    	if (!in_array($extension,$extensions_valides)){
    		$err_msg['ajouter'][] = "Votre fichier n'a pas pu être chargé. Seules les extensions suivantes sont acceptées: jpg, jpeg, png, pdf.";
    		$error_champ['ajouter']['fichier'] = 1;
    	}
     
    	if(empty($error_champ)){
    		$Directory = "C:/wamp/www/MarkeTLibrary/upload/";
     
    		$key = md5(microtime().rand());
     
    		$filename = $key.$extension;
    		//get the name of the file
     
    	 	print_r($_FILES);
     
    		if($extension == ".pdf"){
    			if(move_uploaded_file($_FILES['fichier']['tmp_name'], $Directory.$filename)) {
    			    $pdfWithPath = $Directory.$filename;
     
    			    $thumb = $key.".jpg";
    			    $thumbPath = $Directory.$thumb;
     
    			    $ex="c:\gs\bin\gswin32.exe -dBATCH -dNOPAUSE -sDEVICE=png16m -r120 -sOutputFile=$thumbPath $pdfWithPath";
    				exec($ex);
     
    			    $next_ID_items =  last_auto_id('items');
     
    				$req = $bdd->prepare('INSERT INTO fichiers VALUES (0, :item_ID, :format, :URL, :basename)');
    				$req->execute(array(
    					'item_ID' => $next_ID_items,
    					'format' => "jpg",
    					'URL' => $thumb,
    					'basename' => 0
    				));
     
    				$req = $bdd->prepare('INSERT INTO fichiers VALUES (0, :item_ID, :format, :URL, :basename)');
    				$req->execute(array(
    					'item_ID' => $next_ID_items,
    					'format' => $_FILES['fichier']['type'],
    					'URL' => $filename,
    					'basename' => $basename
    				));
     
     
    			}
    			else{
    				$err_msg['ajouter'][] = "Une erreur est survenue pendant le chargement du <b>fichier</b>, veuillez réessayer.";
    				$error_champ['ajouter']['fichier'] = 1;
    			}
    		}
    		else{
    			if($extension == ".jpg" OR $extension == ".jpeg" OR $extension == ".png"){
    				if(move_uploaded_file($_FILES['fichier']['tmp_name'], $Directory.$filename)){
    					$next_ID_items =  last_auto_id('items');
    					$req = $bdd->prepare('INSERT INTO fichiers VALUES (0, :item_ID, :format, :URL, :basename)');
    					$req->execute(array(
    						'item_ID' => $next_ID_items,
    						'format' => $_FILES['fichier']['type'],
    						'URL' => $filename,
    						'basename' => $basename
    					));
     
    				}
    				else{
    					$err_msg['ajouter'][] = "Une erreur est survenue pendant le chargement du <b>fichier</b>, veuillez réessayer.";
    					$error_champ['ajouter']['fichier'] = 1;
    				}
    			}
    		}
    	}
    }
     
     
    if(!empty($err_msg)){
    	$_SESSION['ajouter']['err_msg'] = $err_msg['ajouter'];
     
    	$_SESSION['ajouter']['form_content']['nom'] = $nom;
    	$_SESSION['ajouter']['form_content']['type'] = $type;
    	$_SESSION['ajouter']['form_content']['version_physique'] = $version_physique;
    	$_SESSION['ajouter']['form_content']['societe_entite'] = $societe_entite;
    	$_SESSION['ajouter']['form_content']['service_metier'] = $service_metier;
    	$_SESSION['ajouter']['form_content']['nbr_pages'] = $nbr_pages;
    	$_SESSION['ajouter']['form_content']['lieu_stockage'] = $lieu_stockage;
    	$_SESSION['ajouter']['form_content']['nbr_stock'] = $nbr_stock;
    	$_SESSION['ajouter']['form_content']['min_stock'] = $min_stock;
    	$_SESSION['ajouter']['form_content']['duree_reap'] = $duree_reap;
    	$_SESSION['ajouter']['form_content']['fournisseur'] = $fournisseur;
     
    	$_SESSION['ajouter']['error_champ']['nom'] = $error_champ['ajouter']['nom'];
    	$_SESSION['ajouter']['error_champ']['type'] = $error_champ['ajouter']['type'];
    	$_SESSION['ajouter']['error_champ']['version_physique'] = $error_champ['ajouter']['version_physique'];
    	$_SESSION['ajouter']['error_champ']['langue'] = $error_champ['ajouter']['langue'];
    	$_SESSION['ajouter']['error_champ']['societe_entite'] = $error_champ['ajouter']['societe_entite'];
    	$_SESSION['ajouter']['error_champ']['service_metier'] = $error_champ['ajouter']['service_metier'];
    	$_SESSION['ajouter']['error_champ']['nbr_pages'] = $error_champ['ajouter']['nbr_pages'];
    	$_SESSION['ajouter']['error_champ']['lieu_stockage'] = $error_champ['ajouter']['lieu_stockage'];
    	$_SESSION['ajouter']['error_champ']['nbr_stock'] = $error_champ['ajouter']['nbr_stock'];
    	$_SESSION['ajouter']['error_champ']['min_stock'] = $error_champ['ajouter']['min_stock'];
    	$_SESSION['ajouter']['error_champ']['duree_reap'] = $error_champ['ajouter']['duree_reap'];
    	$_SESSION['ajouter']['error_champ']['fournisseur'] = $error_champ['ajouter']['fournisseur'];
    	$_SESSION['ajouter']['error_champ']['fichier'] = $error_champ['ajouter']['fichier'];
     
    	header('Location: ajouter.php');
    }
    else{
    	//enregistrement des données
    	$req = $bdd->prepare('INSERT INTO items VALUES (0, :nom, :type, :langue_ID, :societes_entites, :service_metier, :version_physique, :nbr_pages, :format, :lieu_stockage, :nbr_stock, :min_stock, :duree_reap, :fournisseur)');
    	$req->execute(array(
    		'nom' => $nom,
    		'type' => $type,
    		'langue_ID' => $langue,
    		'societes_entites' => $societe_entite,
    		'service_metier' =>$service_metier,
    		'version_physique' => $version_physique,
    		'nbr_pages' => $nbr_pages,
    		'format' => $format,
    		'lieu_stockage' => $lieu_stockage,
    		'nbr_stock' => $nbr_stock,
    		'min_stock' => $min_stock,
    		'duree_reap' => $duree_reap,
    		'fournisseur' => $fournisseur
    	));
     
     
    	$ID_user = last_auto_id("items") - 1;
     
    	header('Location: item.php?ID='.$ID_user);
    }

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Est-ce que ton tableau $error_champ est bien affectée avant que tu ne l'affectes à la session ?

    que donne un print_r dessus entre la ligne 88 et 89 ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Est-ce que ton tableau $error_champ est bien affectée avant que tu ne l'affectes à la session ?

    que donne un print_r dessus entre la ligne 88 et 89 ?
    Merci pour ta réponse !

    Oui, il est bien affecté avant.

    Mes print_r donnent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [ajouter] => Array ( [0] => Une erreur est survenue pendant le chargement du fichier, veuillez réessayer. ) ) Array ( [0] => Une erreur est survenue pendant le chargement du fichier, veuillez réessayer. )
    Mais ce n'est pas cette partie la des session qui disparaissent, mais les informations concernant l'utilisateur..
    Nom : Sans titre.PNG
Affichages : 59
Taille : 13,8 Ko

    J'ai continué à creuser, pour reproduire le bug il faut faire le processus suivant:

    1. Remplir le formulaire en laissant des champs vides de manière à générer des erreurs
    2. La page de traitement fait son boulot, elle renvoie vers la page du formulaire avec les erreurs
    3. On revalide une fois le formulaire, sans rien changer
    4. Les sessions sont perdues dès la première ligne de la première page qui est chargée


    C'est comme ça pour tous les formulaires, pourtant ça fonctionnait très bien avant sur la même configuration...

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Points : 242
    Points
    242
    Par défaut
    Salut,
    je vois qu'il y a un header location en cas d'erreur, vérifie si tu réinitialise ton array de session quelque part en haut

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par selmouadin Voir le message
    Salut,
    je vois qu'il y a un header location en cas d'erreur, vérifie si tu réinitialise ton array de session quelque part en haut
    Salut,

    J'ai vérifié et tout ce qu'il se passe c'est que j'enregistre le contenu de mes variables en session, appart ça, rien... Je commence à penser que c'est un problème serveur, qui ne vient pas du code.

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Où $nom ou $type sont-il affectés ?
    Tu n'as pas mis toute ta page ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //genre
     
     $nom=$_POST['nom'];//etc
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Résolu ! C'était en fait une erreur bête, il y avait un session_destroy(); qui trainait dans une fonction appelée dans le formulaire ! Ceci explique cela !

    Merci pour votre aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/12/2011, 01h08
  2. [MySQL] partie de code qui ne s'execute pas
    Par ayisse dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/07/2007, 17h40
  3. Connaitre les parties du programme qui ont été utilisées.
    Par Pierre8r dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 21/06/2007, 18h26
  4. Bitmap qui disparaît
    Par Bob Groove dans le forum Visual C++
    Réponses: 4
    Dernier message: 01/03/2007, 16h21
  5. Fond qui disparaît - Bug IE ?
    Par *|~ XiKuXan ~|* dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 22/12/2005, 09h25

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