Rename PHP : No error

Résolu/Fermé
yirkkiller - 10 mai 2010 à 16:09
 yirkkiller - 10 mai 2010 à 16:24
Bonjour à tous,

Je suis sous Windows 7, avec WampServer 2.0i.

J'ai un problème avec le module d'upload de fichier.

Voici le code de mon formulaire :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Gestion des Logs Fortinet</title>
</head>

<body>
<form id="fichier" name="fichier" method="post" action="envoi.php" ENCTYPE="multipart/form-data" >
<div align="center">
    <INPUT type=hidden name=MAX_FILE_SIZE  VALUE=20480000>
    <br />
    <INPUT name="fichier" type=file id="fichier">
    <label></label>
    <p>
      <label>Date de la bascule (jj/mm/aaaa) :
      <input name="date" type="text" id="date" />
      </label>
      <br />
      <br />
      <INPUT type=submit name="upload" value="Envoyer">
      </p>
</div>
</form>
</body>
</html>


Et voici le code de l'upload :

<?php

# Variables de test
$_POST['date'] = "2010-05-04";

$date = $_POST['date'];

	#Upload et intégration du fichier
	$repertoireDestination = "logs/";
    $nomDestination        = "logs.txt";

    // Pour raison de sécurité nous ajouterons aux fichiers
    // portant une extension .php .php3, l'extension .txt
    if (mb_eregi(".php", $nomDestination))
	{
       $nomDestination .= ".txt";
    }
    
    if (is_uploaded_file($_FILES["fichier"]["tmp_name"])) {
		if (file_exists($repertoireDestination.$nomDestination))
			{
				rename($repertoireDestination.$nomDestination,$repertoireDestination."archive".date('dmYGi').".txt");
			}
			if (rename($_FILES["fichier"]["tmp_name"],
					   $repertoireDestination.$nomDestination)) {
				echo "Le fichier temporaire ".$_FILES["fichier"]["tmp_name"].
					 " a été déplacé vers ".$repertoireDestination.$nomDestination;
			} else {
				echo "Le déplacement du fichier temporaire a échoué".
					 " vérifiez l'existence du répertoire ".$repertoireDestination;
		   }          
		} else {
		   echo "Le fichier n'a pas été uploadé (trop gros ?)";
   }


J'ai une erreur dans le log de Apache :

[Mon May 10 15:55:57 2010] [error] [client 127.0.0.1] PHP Warning: rename(C:\\wamp\\tmp\\phpFBC7.tmp,logs/logs.txt) [<a href='function.rename'>function.rename</a>]: No error in D:\\logsfortinet\\envoi.php on line 25, referer: http://127.0.0.1/logs/index.html

De plus, dans le répertoire logs, j'obtiens un fichier appelé comme il faut (logs.txt), mais vide (0 Ko).

Pourriez-vous m'aider svp ?

Merci à tous

A voir également:

3 réponses

Neliel Messages postés 6146 Date d'inscription jeudi 9 juillet 2009 Statut Contributeur Dernière intervention 20 mars 2017 1 690
10 mai 2010 à 16:12
Bonjour,

Dans tes formulaires HTML, met des guillemets pour toutes les valeurs non numériques de tes attributs.... Des fois tu en met, d'autre fois non.
0
Merci pour ta réponse, mais non ce n'est pas ça le problème.
0
Problème résolu :

Remplacer rename par move_uploaded_file();

Le nouveau code :

<?php

# Variables de test
$_POST['date'] = "2010-05-04";

$date = $_POST['date'];

	#Upload et intégration du fichier
	$repertoireDestination = "logs/";
    $nomDestination        = "logs.txt";

    // Pour raison de sécurité nous ajouterons aux fichiers
    // portant une extension .php .php3, l'extension .txt
    if (mb_eregi(".php", $nomDestination))
	{
       $nomDestination .= ".txt";
    }
    
    if (is_uploaded_file($_FILES["fichier"]["tmp_name"])) {
		if (file_exists($repertoireDestination.$nomDestination))
			{
				rename($repertoireDestination.$nomDestination,$repertoireDestination."archive".date('dmYGi').".txt");
			}
			if (move_uploaded_file($_FILES["fichier"]["tmp_name"],$repertoireDestination.$nomDestination)) {
				echo "Le fichier temporaire ".$_FILES["fichier"]["tmp_name"].
					 " a été déplacé vers ".$repertoireDestination.$nomDestination;
			} else {
				echo "Le déplacement du fichier temporaire a échoué".
					 " vérifiez l'existence du répertoire ".$repertoireDestination;
		   }          
		} else {
		   echo "Le fichier n'a pas été uploadé (trop gros ?)";
   }
0