2010-12-14 2 views
1

$ file_name = "smith.jpg" // Cela donne une erreur 'Extension de fichier invalide' Quel pourrait être le problème?Y a-t-il quelque chose comme! In_array()?

$whitelist = array('jpg', 'png', 'gif', 'jpeg'); 

// Validate file extension 
    if(!in_array(end(explode('.', $file_name)), $whitelist)) 
     HandleError('Invalid file extension'); 
+1

Il fonctionne pour moi sans aucune erreur. – BoltClock

+0

Pourquoi ne pas être un peu plus bavard et essayer de voir ce qui se passe? Tirez '$ parts = explode ('.', $ Nom_fichier); $ ext = end ($ parts); 'et regardez-les séparément pour voir si tout est comme prévu ... – ircmaxell

+2

try strtolower ($ file_name). – Teson

Répondre

4

Il aurait été mieux si vous avez utilisé:

echo pathinfo('/www/htdocs/your_image.jpg', PATHINFO_EXTENSION); 

use the right functions for what they are made for.

2

Il est une erreur de référencement:

$whitelist = array('jpg', 'png', 'gif', 'jpeg'); 

// Validate file extension 
$parts = explode('.', $file_name); 
if(!in_array(end($parts), $whitelist)) 
{ 
HandleError('Invalid file extension'); 
} 
+0

+1 pour le signaler. Les normes strictes interdisent le passage de fonctions/expressions pour les arguments nécessitant une référence. – netcoder

+0

Quelle est la solution à cela? Merci –

+0

Pls comment puis-je traiter la période comme un caractère valide dans l'expression suivante? ---- $ file_name = preg_replace ('/[ ^'.$ valid_chars_regex.'] | \. + $/I ',' ', strtolower (basename ($ _FICHES [$ upload_name] ['nom']))); –

Questions connexes