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
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 : 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 <?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 code pr�c�dent se trouve donc dans upload.php)
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 //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> ";
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
Partager