Bug sur move_uploaded_file()... (gros fichiers)

Waynejunior Messages postés 9 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 18 juillet 2006 - 28 juin 2006 à 10:26
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 - 28 juin 2006 à 11:14
Bonjour,

j'ai apparemment un bug sur un script de move_uploaded_file()...
sur de gros fichiers, mon script (voir en dessous) ne marche pas. Il ne fait pas de vérification de nom, extension, ... j'ai testé avec des variables de test (affichage de valeurs)... et lorsque je lance le script (bouton), mon navigateur cherche un peu et puis me renvoie le formulaire vide...

Si quelqu'un a une idée...

Merci d'avance...

voici mon script :



PHP:
,

----


if ((isset(
$_POST
[
"MM_insert"
])) && (
$_POST
[
"MM_insert"
] == 
"form1"
)) {

$taille_max 
= 
100000
;
    if (
filesize
(
$_FILES
[
'image'
][
'tmp_name'
]) > 
$taille_max
) {
    echo 
"bonjour"
;
    }
  if(isset(
$_FILES
[
'image'
])) {
    if(
$_FILES
[
'image'
][
'name'
] != 
""
) {
    
// vérification extension
    
$extension 
= 
strrchr
(
$_FILES
[
'image'
][
'name'
], 
'.'
);
    
// récupère la partie après le .
    // Ex : png
    
$extension 
= 
substr
(
$extension
, 
1
);
    if (
$extension 
!= 
'jpg'
) {
        
$erreur
=
'1'
;
        echo 
"Vous devez sélectionner un fichier jpg"
;
        }
    else {
$erreur 
=
'0'
;}
    
// vérification taille
    
$taille_max 
= 
100000
;
    if (
filesize
(
$_FILES
[
'image'
][
'tmp_name'
]) > 
$taille_max
) {
        echo 
"Votre fichier doit faire moins de 500Ko !"
;
        
$erreur
=
'1'
;}
        else {
$erreur
=
'0'
;}
    
$dest_fichier 
= 
$_FILES
[
'image'
][
'name'
];
    
$dest_fichier 
= 
strtr
(
$dest_fichier
, 
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ'
, 
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'
);
    
// remplacer les caracteres autres que lettres, chiffres et point par _
    
$dest_fichier 
= 
preg_replace
(
'/([^.a-z0-9]+)/i'
, 
'_'
, 
$dest_fichier
);
    
$image 
= 
"../news/"
.
$dest_fichier
;
    
move_uploaded_file
(
$_FILES
[
'image'
][
'tmp_name'
], 
"../news/"
.
$image
);
    } else {
$image 
= 
""
;}
  } else {
$erreur 
=
'0'
;}
  if (
$erreur 
!= 
'1'
) {
  
$insertSQL 
= 
sprintf
(
"INSERT INTO news (texte_news, image_news) VALUES (%s, %s)"
,
                       
GetSQLValueString
(
$_POST
[
'texte_news'
], 
"text"
),
                       
GetSQLValueString
(
$image
, 
"text"
));
  
mysql_select_db
(
$database_gramofone
, 
$gramofone
);
  
$Result1 
= 
mysql_query
(
$insertSQL
, 
$gramofone
) or die(
mysql_error
());
  
$insertGoTo 
= 
"news.php"
;
  if (isset(
$_SERVER
[
'QUERY_STRING'
])) {
    
$insertGoTo 
.= (
strpos
(
$insertGoTo
, 
'?'
)) ? 
"&" 
: 
"?"
;
    
$insertGoTo 
.= 
$_SERVER
[
'QUERY_STRING'
];
  }
  
header
(
sprintf
(
"Location: %s"
, 
$insertGoTo
));
  } else {
  
$tampon
=
$_POST
[
'texte_news'
];
  }
} 

2 réponses

xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
28 juin 2006 à 11:10
sans regarder le code ni quoique ce soit
rien que upload et gros fichier me font dier que c'est tout a fait normal
en effet moi aussi j'avais eu le meme problème pour un projet que j'avais du realiser
c'est surement parce que ta variable du serveur max_execution_time est a 30
en gros sa veut dire que si ton script na pa envoyer d'information au serveur durant les 30 premiere seconde il dit que la page n'existe pas
donc ce qu'il ce passe c'est que comme tu upload en + de 30 seconde pendant l'upload tons cript ne communique pas avec le serveur donc il croi que ta page n'existe pas

je croi qu'il y a des script sur phpcs qu'il regle ce problème en decoupant le zip lors de l'upload et en le recollant une fois sur le serveur un truc du style
fait des recherche tu trouvera ton bonheure
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
28 juin 2006 à 11:14
a oui aussi c'est pas top la façon de récupérer les extension
je t'explique pourquoi
tu recupere les lettre apres le point
hors si mon fichier sapel
fichier.ext1.jpg
sa va récuperer ext1.jpg donc sa sera inconnu
ensuite je ne sait pas si ton scriipt d'upload sera utilisable par les internaute mais un jpg n'est pas forcement un jpg :)
en effet
si je creer un fichier php avec tu code mechant bhouuu :)
et ke le .php je le transforme en .jpg
docn script va l'accepter mais a la base sa reste un fichier text ki sera analyser par ton serveur !! aille aille aille :/

je te conseille de verifier les header
exemple
$_FILE['ta_var']['type']
une image jpg donnera image/pjpeg
c'est une verification beaucoup plus sur
0
Rejoignez-nous