Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
754 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Peut on garder une variable php en mémoire?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Peut on garder une variable php en mémoire?

n°2188710
poussix
Posté le 03-05-2013 à 10:36:07  profilanswer
 

Bonjour à tous,
 
Je suis en train de créer un système d'Upload tout simple.
 
Voici le formulaire d'upload:
 

Code :
  1. <form method="POST" action="recupimage.php" enctype="multipart/form-data">
  2.    
  3.                 <input type="hidden" name="MAX_FILE_SIZE" value="15728640">
  4.                 <label for="photo">Fichier image(tous formats | max. 15 Mo) :</label><br />
  5.                 <input type="file" name="photo">
  6.                 <input type="submit" name="envoyer" value="Envoyer le fichier">
  7. </form>


 
Voici la fonction php:
 

Code :
  1. <?php
  2. $inc=1;
  3. $dossier = 'style/image/photo';
  4. $taille_maxi = 15728640;
  5. $taille = filesize($_FILES['photo']['tmp_name']);
  6. $extensions = array('.png', '.gif', '.jpg', '.jpeg');
  7. $extension = strrchr($_FILES['photo']['name'], '.');
  8. //Début des vérifications de sécurité...
  9. if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
  10. {
  11.     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
  12. }
  13. if($taille>$taille_maxi)
  14. {
  15.     $erreur = 'Le fichier est trop gros...';
  16. }
  17. if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
  18. {
  19.  
  20.      if (empty($save))
  21.             {
  22.                 $save = $inc;
  23.                 $save++;
  24.                 echo $save;
  25.             }
  26.         else
  27.             {
  28.                 $save++;
  29.             }
  30.             
  31.         ;
  32.  
  33.     if(move_uploaded_file($_FILES['photo']['tmp_name'],"{$dossier}/{$save}.jpg" )) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
  34.     {
  35.          echo 'Upload effectué avec succès !';
  36.     }
  37.     else //Sinon (la fonction renvoie FALSE).
  38.     {
  39.          echo 'Echec de l\'upload !';
  40.     }
  41. }
  42. else
  43. {
  44.     echo $erreur;
  45. }
  46. ?>


 
Le but de mon upload est de donner comme nom aux fichiers uploadés un chiffre qui s'incrémente à chaque nouveau fichier uploadé.
Exemple: le premier fichier s’appellera "1.jpg", le deuxième "2.jpg" etc...
 
Voici mon code qui incremente
 

Code :
  1. if (empty($save))
  2.             {
  3.                 $save = $inc;
  4.                 $save++;
  5.                 echo $save;
  6.             }
  7.         else
  8.             {
  9.                 $save++;
  10.             }
  11.             
  12.         ;


 
Problème, les variables sont réinitialisées à chaque chargement de page, rendant mon incrémentation obsolète...
 
Y aurait-il un moyen de stocker des variables php en mémoire ou quelque chose?  
La seule idée qui me vient en tête serait de stocker à chaque upload la valeur incrémenté dans un fichier texte .

mood
Publicité
Posté le 03-05-2013 à 10:36:07  profilanswer
 

n°2188734
pascal-
Posté le 03-05-2013 à 11:28:55  profilanswer
 

salut
 
logique tu remet ta val $inc à 1 a chaque utilisation :)
tu as 2 possibilitées :
fichier txt ou aller controler le nom du dernier fichier upload et lui incrementer 1 .
mais bon le plus simple c'est le fichier txt
et lire ton fichier et le charger dans $inc

n°2188746
poussix
Posté le 03-05-2013 à 11:51:39  profilanswer
 

Citation :

salut  
 
logique tu remet ta val $inc à 1 a chaque utilisation :)  
tu as 2 possibilitées :  
fichier txt ou aller controler le nom du dernier fichier upload et lui incrementer 1 .  
mais bon le plus simple c'est le fichier txt  
et lire ton fichier et le charger dans $inc


 
Oui j'ai utilisé un fichier texte et le moins qu'on puisse dire c'est que c'est relativement simple et efficace http://forum-images.hardware.fr/icones/message/icon7.gif .

n°2188793
beridoxy
Posté le 03-05-2013 à 13:46:27  profilanswer
 

Pourquoi ne pas nommer le fichier uploadé selon sa somme md5 ou sha1 comme le font beaucoup de script ?
 
De plus cela éliminera les attaques du type robot/user qui aspire/regarde toutes les images simplement en incrémentant, c'est utile sauf si tes images ne sont pas privés.
Comme théoriquement tu devrait ne pas avoir avoir de collision de hash tu peux nommer tranquille. Autre avantage si un gars réupload la même image tu la stocke pas (puisque t'as déjà un fichier avec la même somme) et tu lui donne juste le bon nom.
 
 
Une autre solution pour éviter les aspiration et en plus sans fichier, tu fais un nombre aléatoire, tu regarde si c'est déjà pris et tu refais un autre nombre si déjà existant.


Message édité par beridoxy le 03-05-2013 à 13:50:04
n°2188800
poussix
Posté le 03-05-2013 à 14:12:42  profilanswer
 

Citation :

Pourquoi ne pas nommer le fichier uploadé selon sa somme md5 ou sha1 comme le font beaucoup de script ?  
 
De plus cela éliminera les attaques du type robot/user qui aspire/regarde toutes les images simplement en incrémentant, c'est utile sauf si tes images ne sont pas privés.  
Comme théoriquement tu devrait ne pas avoir avoir de collision de hash tu peux nommer tranquille. Autre avantage si un gars réupload la même image tu la stocke pas (puisque t'as déjà un fichier avec la même somme) et tu lui donne juste le bon nom.  
 
 
Une autre solution pour éviter les aspiration et en plus sans fichier, tu fais un nombre aléatoire, tu regarde si c'est déjà pris et tu refais un autre nombre si déjà existant.


 
 
Ton idée semble vraiment bien mais je ne comprend malheureusement pas ce qu'il faut faire, je suis encore débutant dans la création de site donc autant te dire que je débute sur le php et ses fonctions :)

n°2188915
rufo
Pas me confondre avec Lycos!
Posté le 04-05-2013 à 12:04:31  profilanswer
 

Tu prends le nom du fichier filé par l'utilisateur et tu transformes ce nom en md5 via la fonction md5(). Marche aussi avec sha(). Au passage, pour résoudre le pb des fichiers ayant le même nom, tu peux faire un md5($Filename.time()); Comme ça, t'es tranquille ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Peut on garder une variable php en mémoire?

 

Sujets relatifs
Problème de variablePasser une variable d'un script sh vers script mysql
Faire une somme mathématique sigma avec variable en vba.probleme fuite de memoire
Incrémentation d'une variable en AJAXpassage de variable a la volée vers une form
Passage de variable dans une autre formBoucle vérification d'une valeur dans une variable
Erreur Mémoire insuffisante. Comment optimiser[Prolog] Garder en mémoire la valeur d'une variable
Plus de sujets relatifs à : Peut on garder une variable php en mémoire?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR