Renommez un fichier téléchargé avec PHP mais gardez l'extension
J'utilise PHP pour charger une image à partir d'un formulaire vers le serveur et souhaitez renommer l'image lastname_firstname.[original extension]. J'ai actuellement:
move_uploaded_file($_FILES["picture"]["tmp_name"], "peopleimages/" . "$_POST[lastname]" . '_' . "$_POST[firstname]")
qui, bien sûr, renomme le fichier lastname_firstname sans extension. Comment faire pour renommer le fichier, mais conserver l'extension?
Merci!
source d'informationauteur bsamek
Vous devez vous connecter pour publier un commentaire.
Vous devez d'abord savoir ce que l'extension d'origine a été 😉
Pour ce faire, le
pathinfo
fonction peut faire des merveilles 😉Citant l'exemple qui est donné dans le manuel :
Vous donnera :
Au passage, ne pas oublier de sécurité :
$_POST[lastname]
pour s'assurer qu'il ne contient valide caractères$_POST['lastname']
-- voir Pourquoi est$foo[bar]
de mal?mime_content_type
pour PHP < 5.3finfo_file
pour PHP >= 5.3N'oubliez pas si vous êtes de permettre aux gens de télécharger des fichiers arbitraires, sans contrôle de l', extension, ils peuvent parfaitement bien télécharger un .fichier php et d'exécuter du code sur votre serveur 😉
L' .les règles htaccess pour refuser php exécution à l'intérieur d'un certain dossier est quelque chose comme ceci (à adapter à votre configuration)..
Mettre cela en un .fichier htaccess dans le dossier où vous êtes téléchargement de fichiers.
Sinon, il suffit de garder à l'esprit que les fichiers peuvent avoir plus d'un "." en eux, et vous devriez être en or.
Vous pouvez essayer:
ou comme Niels Nomenclature suggéré
ce code est d'insécurité
si
et
ce code est vulnérable, et le résultat est
pour plus d'informations, consultez ce lien:
https://www.owasp.org/index.php/Unrestricted_File_Upload
Tout d'abord, trouver l'extension:
Appelez ensuite votre fichier de toute façon que vous voulez, et ajouter le nom de l'extension:
MODIFIER en Pensant à elle, rien de tout cela est optimal. Des extensions de fichier le plus souvent décrire le type de fichier, mais ce n'est pas toujours le cas. Par exemple, vous pouvez renommer un .fichier png à un .extension jpg, et la plupart des applications serait encore détecter, c'est comme un fichier png. Autre que cela, certains Systèmes d'exploitation ne sont tout simplement pas utiliser les extensions de fichier pour déterminer le type d'un fichier.
Avec
$_FILE
téléchargements, vous avez également untype
élément qui représente le type MIME du fichier que vous avez reçu. Si vous le pouvez, je vous suggère de compter sur elle plutôt que sur l'extension donnée:Vous pouvez avoir un liste plus complète des types MIME ici.
vous pouvez toujours: