Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/10/2007, 11h26   #1
Invité de passage
 
Inscription : juin 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 16
Points : 3
Points : 3
Par défaut Variable de session non rafraîchie

Bonjour à tous.

J'ai un problème avec une variable de session. Je vais essayer de vous expliquer la situation précisément, sans que ce soit trop lourd non plus....

Je suis en train de réaliser une application qui permet le dépôt de fichier, selon un certain quota.

Cette application fonctionne de la façon suivante :
Un fichier index.php inclut un fichier upload.php.
Ce fichier upload.php inclut lui-même un fichier calcul_quota.php qui calcule la taille disponible ( partir des données stockées dans une base de données). calcul_quota.php stocke cette tailel disponible dans une variable de session $_SESSION[taille_max]. Voici le code de mon calcul_quota.php

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
 
 
<?php session_start();
require_once('inc/config.inc.php');
$proprietaire=$_SESSION['proprietaire'];
$statut=$_SESSION['statut'];
 
 
//Récupération espace occupé
$sql = "select SUM(taille) as taille_utilisee from Fichiers where proprietaire='".$proprietaire."'";
$query = $bdd->query($sql);
$result=$query->fetchAll();
/*echo "<pre>";
print_r($result);
echo "</pre>";*/
$_SESSION[taille_utilisee]=$result[0][taille_utilisee];
//echo "taille utilisee ".$_SESSION[taille_utilisee]."<br>";
 
 
 
//Récupération quota
$sql = "select quota from Droits where statut='".$proprietaire."'";
$query = $bdd->query($sql);
$result=$query->fetchAll();
/*echo "<pre>";
print_r($result);
echo "</pre>";*/
if (count($result)==1) $_SESSION['quota']=$result[0][quota];
else
{
$sql = "select quota from Droits where statut='".$statut."'";
$query = $bdd->query($sql);
$result=$query->fetchAll();
$_SESSION['quota']=$result[0][quota];
}
//echo "Quota :".$_SESSION[quota]."<br>";
 
$_SESSION[espace_disponible]=$_SESSION[quota]-$_SESSION[taille_utilisee];
$_SESSION[pourc_occ]=100*$_SESSION[taille_utilisee]/$_SESSION[quota];
//echo "pourcentage :".$_SESSION[pourc_occ];
$_SESSION[pourc_occ]=round($_SESSION[pourc_occ]);
$_SESSION[taille_max]=min($_SESSION[espace_disponible],$max_upload_size);
?>
Le fichier upload.php permet ensuite de déposer un fichier, via un formulaire de type <form action=$_PHP[self] method=POST>. Ce formulaire utilise la variable $_SESSION[taille_max] pour limiter la taille du fichier qui peut être déposé. Voici le code.

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
 
 
//Formulaire de choix du fichier
echo "<p> 
        <form method=\"post\" ENCTYPE=\"multipart/form-data\" action=\"".$_PHP['SELF']."\">".
	 "<p>".$upload_file_choice_message.": 
            <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"".$_SESSION[taille_max]."\" />
 
	 <input type=\"file\" name=\"fichier\" lang=\"fr\" /></p>".
 
	"<p>".$upload_start_date."
	   <input name=\"date_debut\"><br>
	<i>".$upload_start_date_default_message."</i></p>".
 
	"<p>".$upload_stop_date. "
	    <input name=\"date_fin\"/><br>
	<b>".$or."</b>"
        .$upload_duration."  
	<select name=\"duree\">";
for ($i=1;$i<=15;$i++) 
{
echo "<option value=\"".$i."\"";
if ($i==7) echo " \"selected\"";
echo "\">".$i;
}
echo "</select>";
echo "<br><i>".$upload_duration_default."</i>";
echo "</p>";
echo "	<p>  
	<input type=\"hidden\" name=\"jeton\" value=\"1\">	
          <input type=\"submit\" value=\"".$upload_submit_label."\" />
        </form>
</p>
";
(le code précédent se trouve donc dans upload.php)

Il me semble que lorsqu'on valide le formulaire, upload.php est rechargé, non ? A ce moment là, le script calcul_quota.php devrait lui-même être rechargé, et le calcul de quota devrait se faire.

Mon problème, c'est que ça ne se passe pas bien. Plus précisément, la variable de session $_SESSION[taille_max] contient la taille maximum A L'ETAPE PRECEDENTE.
Autrement dit, lorsque je dépose un nouveau fichier, la taille maximum qui apparaît est en fait celle qui était disponible avant. Il faut que je recharge la page pour avoir la bonne taille. Autrement dit encore, lorsque je dépose n fichiers, j'ai la taille maximum correspondant aux n-1 premiers fichiers, ce qui est assez gênant....

Voilà. Je ne vosi pas où est l'erreur. Quelqu'un aurait-il la gentillesse de me proposer une explication, voire même une solution ?

Merci beaucoup d'avance
Akela est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 11h43   #2
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
Salut
Est ce que la valeur stockée dans la base de données est à jour?
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 11h51   #3
Invité de passage
 
Inscription : juin 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 16
Points : 3
Points : 3
Oui.
Je précise aussi que si je fais rafraîchir la page, ma variable $_SESSION[taille_max] prend la bonne valeur.
Akela est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 11h59   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 310
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 310
Points : 8 592
Points : 8 592
On est bien d'accord que tu fais l'include de calcul_quota.php avant d'afficher ton formulaire comme tu nous le montres ? Est-ce normal que ce soit $_SESSION[taille_max] avec taille_max sans guillemets ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 12h38   #5
Invité de passage
 
Inscription : juin 2006
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 16
Points : 3
Points : 3
Citation:
Envoyé par _Mac_ Voir le message
On est bien d'accord que tu fais l'include de calcul_quota.php avant d'afficher ton formulaire comme tu nous le montres ?
Oui oui c'est bien ça.

Citation:
Est-ce normal que ce soit $_SESSION[taille_max] avec taille_max sans guillemets ?
J'ai tenté de les rajouter, mais ça ne change rien....
Akela est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 13h42   #6
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
Bonjour

As tu essayé de mettre un header au début de ton fichier index.php qui interdise à cette page de se mettre en cache ?

J'ai eu le même souci avec la connexion à une zone membres, je me connectais sur une page et quand je passais sur une autre page (où j'étais allé avant de me connecter) cette dernière m'affichait que je n'était pas connecté... En actualisant la page tout était en ordre...
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2007, 15h44   #7
Membre du Club
 
Inscription : décembre 2005
Messages : 88
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 88
Points : 66
Points : 66
Code :
<?php header("Location:index.php"); ?>
permet de raffraichir la page automatiquement et d'interpréter les variables $_SESSION

c'est un "truc", certainement pas la meilleure solution, le problème vient du fait que le php est déjà exécuté lorsque tu veux faire :
Code :
<?php if (isset($_SESSION['exemple'])) echo $_SESSION['exemple']; ?>
pitxu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h40.


 
 
 
 
Partenaires

Hébergement Web