Page 1 sur 1

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

Posté : 28 juin 2006, 10:23
par Waynejunior
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 :
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'];
  }
}

Posté : 29 juin 2006, 12:00
par nejme.eddinne
ou est le partie ou il ya le formulaire ?
vérifie le nom des inputs

Posté : 04 juil. 2006, 10:29
par Waynejunior
le formulaire est dans le body :
<body>
<form action="login.php" method="post" name="form2" class="maintext" id="form2">
  <table width="800" border="0" align="center" cellpadding="8" cellspacing="0" bgcolor="#000000">
    <tr>
      <td><span class="Style1">Gestion des News</span></td>
      <td align="right" valign="middle"><input name="deconnect2" type="submit" class="maintext" id="deconnect22" value="D&eacute;connexion"></td>
    </tr>
  </table>
</form>
<form action="<?php echo $editFormAction; ?>" method="post" enctype="multipart/form-data" name="form1">
  <table width="800" border="0" align="center" cellpadding="0" cellspacing="4">
    <tr valign="baseline">
      <td width="100" align="right" valign="top" nowrap class="maintext">Texte news</td>
      <td align="left" valign="top"><textarea name="texte_news" cols="100" rows="10" class="maintext"><?php if (@$erreur == '1') {echo $tampon;}  ?>
      </textarea></td>
    </tr>
    <tr valign="baseline">
      <td align="right" valign="top" nowrap class="maintext">Image news</td>
      <td align="left" valign="top">      <input name="image" type="file" class="maintext" id="image" size="80">        <input name="image_news" type="hidden" id="image_news"></td>
    </tr>
    <tr valign="baseline">
      <td colspan="2" align="right" nowrap>&nbsp;</td>
    </tr>
    <tr align="center" valign="middle">
      <td colspan="2" nowrap><input type="submit" value="Insérer l'enregistrement" class="maintext">
      <input name="annule" type="submit" id="annule" value="Annuler" class="maintext"></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1">
</form>

ce que j'ai mis au dessus est avant le head