Ajout type mime dans script upload

Petit nouveau ! | 5 Messages

16 mai 2013, 15:41

Bonjour à tous,
Je souhaiterais ajouter une vérification des types mime : mp3, wma, ogg à la place des extensions pour plus de sécurité dans ce script d 'upload.
Si quelqu'un peut m'aider,
Merci

<?php

$target     = "uploads/";
$max_size   = 9000000;
$ip = $_SERVER['REMOTE_ADDR'];
$ipf = "___[$ip]___";
$url = "www.radio87.fr___";
$date = date ("d.m.Y__H.i.s");
$extensions_ok = array("mp3","wma","ogg");


$nom_file   = $_FILES['fichier']['name'];
$nom_file   = $date .$ipf .$url .$nom_file;
$taille     = $_FILES['fichier']['size'];
$tmp        = $_FILES['fichier']['tmp_name'];
$chemin     = $target;
$extension  = substr($nom_file,-3);


$to      = 'xxxxxxx';
$subject = 'Envoi mp3';
$headers = 'From: xxxxx';
$message = "Nom du fichier : $nom_file \n \n http://xxxxxxxxxxxxxxxxxxxxxx/emissions/espace_prive/uploads/";


if($_POST['posted'])
{


  if($nom_file)
  {

    if(in_array(strtolower($extension),$extensions_ok))
    {
            

        if(($taille <= $max_size))
        {

            if(move_uploaded_file($tmp,$chemin.$nom_file)) 
            {

                echo '<p>Fichier upload&eacute avec succ&egrave;s !</p>';
                echo '<ul><li>Nom du fichier : '.$nom_file.'</li>';
                echo '<li>Taille : '.$_FILES['fichier']['size'].' Octets</li>';
                echo '<li>Nous venons de recevoir un e-mail. Si le fichier est conforme, il sera diffus&eacute sur R87.</li>';
                echo '<li><a href="uploads/'.$nom_file.'" target="_blank">Voir le fichier</a></li><br><br>';
                mail($to, $subject, $message, $headers);
               
            }
               else
            {

                echo '<p>Probl&egrave;me lors de l\'upload ! <a href="envoyer_une_chronique.php">Retour</a></p>';


            }
        }
          else
        {

          echo '<p>Erreur dans la taille du fichier (taille max : 9 Mo) ! <a href="envoyer_une_chronique.php">Retour</a></p>';
        }
    }
      else
    {

        echo '<p>Votre fichier ne comporte pas une extension valide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
        
    }
   }
    else
   {

    echo '<p>Le champ du fichier est vide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
   }
}
?>

Mammouth du PHP | 619 Messages

16 mai 2013, 15:50

Bonjour,

regarde du cote $_FILES['fichier']['type'] il va te retourne le type de fichier up du coup avec la tu peux vérifié que tu autorise ou non :)

Petit nouveau ! | 5 Messages

16 mai 2013, 15:53

oui J'ai déjà testé mais je n'y arrive pas...
si quelqu'un pouvait m'aider à faire la modif ca serait sympa

Mammouth du PHP | 619 Messages

16 mai 2013, 16:05

Re,

j'ai pas les type mine de chaque fichier fais un echo de $_FILES['fichier']['type']; pour chaque fichier et donne moi la ligne pour chaque type :)

Petit nouveau ! | 5 Messages

16 mai 2013, 16:11

Voilà les types :

mp3 : audio/mpeg
wma : audio/x-ms-wma
ogg : audio/ogg

Mammouth du PHP | 619 Messages

16 mai 2013, 16:17

Re,

a vérifier
<?php

$target     = "uploads/";
$max_size   = 9000000;
$ip = $_SERVER['REMOTE_ADDR'];
$ipf = "___[$ip]___";
$url = "www.radio87.fr___";
$date = date ("d.m.Y__H.i.s");
$extensions_ok = array("mp3","wma","ogg");


$nom_file   = $_FILES['fichier']['name'];
$nom_file   = $date .$ipf .$url .$nom_file;
$taille     = $_FILES['fichier']['size'];
$tmp        = $_FILES['fichier']['tmp_name'];
$chemin     = $target;
$extension  = substr($nom_file,-3);


$to      = 'xxxxxxx';
$subject = 'Envoi mp3';
$headers = 'From: xxxxx';
$message = "Nom du fichier : $nom_file \n \n http://xxxxxxxxxxxxxxxxxxxxxx/emissions ... e/uploads/";


if($_POST['posted'])
{


  if($nom_file)
  {

    if(in_array(strtolower($extension),$extensions_ok))
    {
            

        if(($taille <= $max_size))
        {
			if($_FILES['fichier']['type']=='audio/mpeg' || $_FILES['fichier']['type']=='audio/x-ms-wma' || $_FILES['fichier']['type']=='audio/ogg'){

				if(move_uploaded_file($tmp,$chemin.$nom_file)) 
				{
	
					echo '<p>Fichier upload&eacute avec succ&egrave;s !</p>';
					echo '<ul><li>Nom du fichier : '.$nom_file.'</li>';
					echo '<li>Taille : '.$_FILES['fichier']['size'].' Octets</li>';
					echo '<li>Nous venons de recevoir un e-mail. Si le fichier est conforme, il sera diffus&eacute sur R87.</li>';
					echo '<li><a href="uploads/'.$nom_file.'" target="_blank">Voir le fichier</a></li><br><br>';
					mail($to, $subject, $message, $headers);
				   
				}
				   else
				{
	
					echo '<p>Extention incorrecte ! <a href="envoyer_une_chronique.php">Retour</a></p></p>';
	
	
				}
			}
			else{
				echo '<p>Probl&egrave;me lors de l\'upload ! <a href="envoyer_une_chronique.php">Retour</a></p>';
			}
        }
          else
        {

          echo '<p>Erreur dans la taille du fichier (taille max : 9 Mo) ! <a href="envoyer_une_chronique.php">Retour</a></p>';
        }
    }
      else
    {

        echo '<p>Votre fichier ne comporte pas une extension valide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
        
    }
   }
    else
   {

    echo '<p>Le champ du fichier est vide ! <a href="envoyer_une_chronique.php">Retour</a></p>';
   }
}
?>

Petit nouveau ! | 5 Messages

16 mai 2013, 16:44

je viens de tester en renommant "fichier.jpg" et "fichier.mp3" et il passe quand même...

le pb peut venir du formulaire ?
<form enctype="multipart/form-data" action="upload.php" method="post"> 
<input type="hidden" name="posted" value="1">
<input name="fichier" type="file">
<input type="submit" value="Uploader">
</form>

Mammouth du PHP | 619 Messages

16 mai 2013, 17:27

Non je pense qui faut regarder le header du fichier ce qui sera lourd mais je vais attendre des reponses d'autres membres :)

Petit nouveau ! | 5 Messages

16 mai 2013, 17:46

Ok je te remercie!