Renommer fichier upload avec timestamp

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Renommer fichier upload avec timestamp

Re: Renommer fichier upload avec timestamp

par ghost5922 » 29 avr. 2013, 16:18

Bonjour,

je viens de tester ce code et cela fonctionne parfaitement

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Blog</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
<body>
<?php
if ($_FILES['music']['error']) {    
          switch ($_FILES['music']['error']){    
                   case 1: // UPLOAD_ERR_INI_SIZE    
                           echo "La taille du fichier est plus grande que la limite autorisée par le serveur (paramètre upload_max_filesize du fichier php.ini).";    
                           break;    
                   case 2: // UPLOAD_ERR_FORM_SIZE    
                           echo "La taille du fichier est plus grande que la limite autorisée par le formulaire (paramètre post_max_size du fichier php.ini).";
                           break;    
                   case 3: // UPLOAD_ERR_PARTIAL    
                           echo "L'envoi du fichier a été interrompu pendant le transfert.";    
                           break;    
                   case 4: // UPLOAD_ERR_NO_FILE    
                           echo "La taille du fichier que vous avez envoyé est nulle.";
                           break;    
          }    
}    
else {  
        //on verifie que tittre ne sois pas vide sinon on reprend le nom du fichier  
        if(!empty($_POST['titre'])){$title=htmlentities(addslashes($_POST['titre']),ENT_QUOTES);}else{$title=htmlentities(addslashes($_FILES['music']['name']),ENT_QUOTES);}
        
         $chemin_destination = 'musics/';
         $rename=time().'.mp3'; 
         
          $connect = mysqli_connect("127.0.0.1", "root", "", "music");
        /* Vérification de la connexion */
        if (!$connect) {
                echo "Échec de la connexion : ".mysqli_connect_error();
                exit();
        }
         
         if(move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$rename)){     
        
                echo "Le fichier ".$_FILES['music']['name']." a été copié sur le serveur";
                
                $requete = "INSERT INTO musique (titre,`date`,musique) VALUES('".$title."','".date("Y-m-d H:i:s")."','".$rename."')";
                $resultat = mysqli_query($connect,$requete);
                $identifiant = mysqli_insert_id($connect);
                /* Fermeture de la connexion */
                mysqli_close($connect);
                
                if ($identifiant != 0) {
                                echo "<br />Ajout de la musique réussi.<br /><br />";
                }
                else {
                                echo "<br />Le commentaire n'a pas pu être ajouté.<br /><br />";
                }
          
          
         }
         else{
                  echo "Le fichier n'a pas pu être copié.";
         }


}


?>
<a href="formulaire_ajout.php" >retour à la page d'ajout</a>
 </body>
</html>

Re: Renommer fichier upload avec timestamp

par Sato » 29 avr. 2013, 15:19

Désolée pardon, je l'ai tronqué:

Voila le code entier:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Blog</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
<body>
<?php
if ($_FILES['music']['error']) {    
          switch ($_FILES['music']['error']){    
                   case 1: // UPLOAD_ERR_INI_SIZE    
                           echo "La taille du fichier est plus grande que la limite autorisée par le serveur (paramètre upload_max_filesize du fichier php.ini).";    
                           break;    
                   case 2: // UPLOAD_ERR_FORM_SIZE    
                           echo "La taille du fichier est plus grande que la limite autorisée par le formulaire (paramètre post_max_size du fichier php.ini).";
                           break;    
                   case 3: // UPLOAD_ERR_PARTIAL    
                           echo "L'envoi du fichier a été interrompu pendant le transfert.";    
                           break;    
                   case 4: // UPLOAD_ERR_NO_FILE    
                           echo "La taille du fichier que vous avez envoyé est nulle.";
                           break;    
          }    
}    
else {  
        //on verifie que tittre ne sois pas vide sinon on reprend le nom du fichier  
        if(empty($_POST['titre'])){$title=htmlentities(addslashes($_POST['titre']),ENT_QUOTES);}else{$title=htmlentities(addslashes($_FILES['music']['name']),ENT_QUOTES);}
        
         $chemin_destination = 'musics/';
     $rename=time().'mp3'; 
         
         $connect = mysqli_connect("127.0.0.1", "root", "", "music");
        /* Vérification de la connexion */
        if (!$connect) {
                echo "Échec de la connexion : ".mysqli_connect_error();
                exit();
        }
         
         if(move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$rename)){     
        
                echo "Le fichier ".$_FILES['music']['name']." a été copié sur le serveur";
                
                $requete = "INSERT INTO musique (titre, `date`, musique) VALUES('".$title."','".date("Y-m-d H:i:s")."','".$rename."')";
                $resultat = mysqli_query($connect,$requete);
                $identifiant = mysqli_insert_id($connect);
                /* Fermeture de la connexion */
                mysqli_close($connect);
                
                if ($identifiant != 0) {
                                echo "<br />Ajout de la musique réussi.<br /><br />";
                }
                else {
                                echo "<br />Le commentaire n'a pas pu être ajouté.<br /><br />";
                }
          
          
         }
         else{
                  echo "Le fichier n'a pas pu être copié.";
         }


}


?>
<a href="formulaire_ajout.php" >retour à la page d'ajout</a>
 </body>
</html>

Re: Renommer fichier upload avec timestamp

par ghost5922 » 29 avr. 2013, 15:15

Bonjour,

j'ai pas tous le code la ?

ligne 9 erreur pour la variable music or a la ligne 9 chez moi c'est un break;

Re: Renommer fichier upload avec timestamp

par Sato » 29 avr. 2013, 15:10

Même soucis:

Image

Je vois vraiment pas le soucis.

Re: Renommer fichier upload avec timestamp

par ghost5922 » 29 avr. 2013, 15:05

Bonjour,

test ce code pour voir
<?php
if ($_FILES['music']['error']) {    
          switch ($_FILES['music']['error']){    
                   case 1: // UPLOAD_ERR_INI_SIZE    
                           echo "La taille du fichier est plus grande que la limite autorisée par le serveur (paramètre upload_max_filesize du fichier php.ini).";    
                           break;    
                   case 2: // UPLOAD_ERR_FORM_SIZE    
                           echo "La taille du fichier est plus grande que la limite autorisée par le formulaire (paramètre post_max_size du fichier php.ini).";
                           break;    
                   case 3: // UPLOAD_ERR_PARTIAL    
                           echo "L'envoi du fichier a été interrompu pendant le transfert.";    
                           break;    
                   case 4: // UPLOAD_ERR_NO_FILE    
                           echo "La taille du fichier que vous avez envoyé est nulle.";
                           break;    
          }    
}    
else {  
	//on verifie que tittre ne sois pas vide sinon on reprend le nom du fichier  
	if(empty($_POST['titre'])){$title=htmlentities(addslashes($_POST['titre']),ENT_QUOTES);}else{$title=htmlentities(addslashes($_FILES['music']['name']),ENT_QUOTES);}
	
	 $chemin_destination = 'musics/';
     $rename=time().'mp3'; 
	 
	 $connect = mysqli_connect("127.0.0.1", "root", "", "music");
	/* Vérification de la connexion */
	if (!$connect) {
		echo "Échec de la connexion : ".mysqli_connect_error();
		exit();
	}
	 
	 if(move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$rename)){     
      	
		echo "Le fichier ".$_FILES['music']['name']." a été copié sur le serveur";
		
		$requete = "INSERT INTO musique (titre, `date`, musique) VALUES('".$title."','".date("Y-m-d H:i:s")."','".$rename."')";
		$resultat = mysqli_query($connect,$requete);
		$identifiant = mysqli_insert_id($connect);
		/* Fermeture de la connexion */
		mysqli_close($connect);
		
		if ($identifiant != 0) {
				echo "<br />Ajout de la musique réussi.<br /><br />";
		}
		else {
				echo "<br />Le commentaire n'a pas pu être ajouté.<br /><br />";
		}
	  
	  
	 }
	 else{
		  echo "Le fichier n'a pas pu être copié.";
	 }


}


?>

Re: Renommer fichier upload avec timestamp

par Sato » 29 avr. 2013, 14:54

Le voici:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
<body>
	<h2>Formulaire d'ajout de musique</h2>
	<form action="insertion_contenu.php" method="POST"  enctype="multipart/form-data">
		<p>Titre: <input type="text" name="titre" /></p>
		<input type="hidden" name="MAX_FILE_SIZE" value="2097152257">
		<p>Choisissez une photo avec une taille inférieure à 200 M0.</p>
		<input type="file" name="music">
		<br /><br />
		<input type="submit" name="ok" value="Envoyer">
	</form>
 </body>
</html>

Re: Renommer fichier upload avec timestamp

par ghost5922 » 29 avr. 2013, 14:47

Bonjour,

pouvez vous mettre votre formulaire aussi svp

Re: Renommer fichier upload avec timestamp

par Sato » 29 avr. 2013, 14:36

Re-Bonjour,

J'ai juste mis ce que vous m'avez mis plus haut je poste le code modifier:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Blog</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
<body>
<?php
$connect = mysqli_connect("127.0.0.1", "root", "", "music");
/* Vérification de la connexion */
if (!$connect) {
    echo "Échec de la connexion : ".mysqli_connect_error();
    exit();
}
  
if ($_FILES['music']['error']) {    
	  switch ($_FILES['music']['error']){    
		   case 1: // UPLOAD_ERR_INI_SIZE    
			   echo "La taille du fichier est plus grande que la limite autorisée par le serveur (paramètre upload_max_filesize du fichier php.ini).";    
			   break;    
		   case 2: // UPLOAD_ERR_FORM_SIZE    
			   echo "La taille du fichier est plus grande que la limite autorisée par le formulaire (paramètre post_max_size du fichier php.ini).";
			   break;    
		   case 3: // UPLOAD_ERR_PARTIAL    
			   echo "L'envoi du fichier a été interrompu pendant le transfert.";    
			   break;    
		   case 4: // UPLOAD_ERR_NO_FILE    
			   echo "La taille du fichier que vous avez envoyé est nulle.";
			   break;    
	  }    
}    
else {    
 //si il n'ya pas d'erreur alors $_FILES['nom_du_fichier']['error'] vaut 0    
	echo "Aucune erreur dans le transfert du fichier.<br />";
	if ((isset($_FILES['music']['name'])&&($_FILES['music']['error'] == UPLOAD_ERR_OK))) {

		$chemin_destination = 'musics/';
		$rename=time().'mp3'; 
	    move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$rename);     
		echo "Le fichier ".$_FILES['music']['name']." a été copié sur le serveur";
	} 
	else {
		echo "Le fichier n'a pas pu être copié dans le répertoire photos.";
	}
}

$requete = "INSERT INTO musique (titre, date, musique) VALUES ('".htmlentities(addslashes($_POST['titre']),ENT_QUOTES)."','".date("Y-m-d H:i:s")."','".$rename."')";
$resultat = mysqli_query($connect,$requete);
$identifiant = mysqli_insert_id($connect);
/* Fermeture de la connexion */
mysqli_close($connect);

if ($identifiant != 0) {
	echo "<br />Ajout de la musique réussi.<br /><br />";
}
else {
	echo "<br />Le commentaire n'a pas pu être ajouté.<br /><br />";
}
?>
<a href="formulaire_ajout.php" >retour à la page d'ajout</a>
 </body>
</html>

Re: Renommer fichier upload avec timestamp

par ghost5922 » 29 avr. 2013, 14:30

Bonjour,

vous avez des variables non definis pouvez vous poster votre code ici

Re: Renommer fichier upload avec timestamp

par Sato » 29 avr. 2013, 14:15

Nouveau soucis j'ai cette erreur a l'upload...

Image

Je ne comprend pas ce que cela veut dire pour mon cas en aillant rechercher sur google...

Une piste ?

Re: Renommer fichier upload avec timestamp

par ghost5922 » 29 avr. 2013, 13:58

Bonjour,

faut le mettre aussi dans l'insert

creer une variable avec le nom du fichier exemple
$rename=time().'ext';

move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$rename); 

et

$requete = "INSERT INTO musique (titre, date, musique) VALUES ('".htmlentities(addslashes($_POST['titre']),ENT_QUOTES)."','".date("Y-m-d H:i:s")."','".$rename."')";

Re: Renommer fichier upload avec timestamp

par Sato » 29 avr. 2013, 13:44

Ah eh bien merci cela marche, le fichier et renommer dans le repertoire, mais il n'est pas renommer dans mon champ sql il garde le meme nom. :?

Re: Renommer fichier upload avec timestamp

par ghost5922 » 29 avr. 2013, 13:30

BOnjour,

j'ai edite mon message entre temps

move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.time().$_FILES['music']['name']'); 
devient

move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$_FILES['music']['name']); 
cela va nomme ton fichier 12485848.ext si tu veux juste mettre le time en debut
move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.time().'.ext'); 

Re: Renommer fichier upload avec timestamp

par Sato » 29 avr. 2013, 13:10

Bonjour ghost5922 :wink:

C'est ce que j'aimerai faire, mais je ne connais pas l’algorithme et ou le placer... Cela m’embête d'autant plus que j'essaie mais je n'y arrive pas.

Re: Renommer fichier upload avec timestamp

par ghost5922 » 29 avr. 2013, 13:06

Bonjour,

quand tu deplaces ton fichier tu le renomme

move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$_FILES['music']['name']); 

au lieu de $_FILES['music']['name'] le nom que tu souhaite