gretata
Messages postés172Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention19 janvier 2011
-
14 févr. 2007 à 15:20
gretata
Messages postés172Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention19 janvier 2011
-
20 févr. 2007 à 08:55
Bonjour a tous
je voudrais savoir si vous avez un petit bout de code, pour renomer des fichiers automatique, exemple j'upload une image appelé MikeF.jpg et faudrais que ça se renome hockey_1.jpg, lorsque j'upload une deuxième image ça fasse hockey_2.jpg.
j'ai trouver ça mais je c'est pas si c'est conforme:
$extension_upload=substr(strrchr($_FILES['fichier']['name'], '.') ,1);
donc si il y a des gens qui ont déja utilisé se genre a chose, je suis preneur pour une petit explication Merci
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 15 févr. 2007 à 22:15
Hello,
Gretata = > ton idée est viable.
Une autre est de greffer un timestamp, comme ça ce sera tjrs unique (sauf gros manque de bol) et en plus tu pourras connaître l'ordre d'upload.
$sNewFileName = time().$sOldFileName;
Ou un truc dansd le genre.
Aka => je n'ai rien contre les liens vers des exemples sur d'autres sites si c'est pertinent. Mais si c'est pour mettre un lien vers ujn site qui raconte beaucoup de conneries, montre des codes horribles et faux, autant s'abstenir.
Si tu es le webmaster de ce site : désolé, mais les astuces et autres présentes sur ce site sont dangereuses pour les débutants.
Si tu es simplement un membre/visiteur de ce site : fuis!! Fuis-le vite!
Pour ce qui suivrait le lien :
<?php
//
N'oubliez pas de configurer ce script en renseignant les informations nécessaires et modifiables
//
lisiting de tous les fichiers
$tableau ="";
$nbr_img=0;
$handle=@opendir("membres/images");
// Chemin du dossier
while ($fichier = @readdir($handle)){
$extension=substr($fichier,-3);
//
Vérifications de l'extension du fichier
// Ce script n'accèpera
donc que les fichiers ayants une des extensions suivantes : gif, jpg ou encore
png
if($fichier!="." && $fichier!=".."
&& (eregi("gif",$extension)
|| eregi("jpg",$extension)
|| eregi("png",$extension))){
$listing[$fichier]=$nbr_img;
}
$nbr_img++;
// Incrémentation
}
// Fin du while
$nbr_img
=($nbr_img-2); //
Cette variable contient le nombre de fichiers du dossier
?>
Je commente afin d'éviter toute ambiguité :
$tableau = "";
Déjà on commence mal. Pourquoi ""?? $tableau=''; suffit. Mais bon, rien de grave.
$handle=@opendir("membres/images");
Aie. Je n'ai rien contre le masquage des erreurs via un @...SAUF quand on ne gère pas les erreurs. Et là, c'est le cas, on ne gère que dalle. On masque juste les erreurs qu'on a peut de commettre : c'est un cache misère.
while ($fichier = @readdir($handle)){
C'est marqué, pourtant, en gros sur la doc php.net...on utilise ici les opérateurs typés.while (false !($fichier readdir ($handle)))
histoire que, si on a un fichier qui s'appelle 0, ou '0', ou ' ', etc...notre boucle ne s'arrête pas bêtement!
Et on ne masque toujours pas les erreurs si on ne les gère pas...
$extension=substr($fichier,-3);
Wow, j'ai rien à dire...
if($fichier!="." && $fichier!=".."
&& (eregi("gif",$extension)
|| eregi("jpg",$extension)
|| eregi("png",$extension))){
$listing[$fichier]=$nbr_img;
}
Pfiou...déjà, c'est plus élégant un if (!in_array ($fichier, array ('.', '..'))).
Ensuite, eregi() pour trouver une succession de 3 lettres dans une chaîne...argh.strpos () est nettement plus rapide, plus léger, plus doux...et surtout, plus adapté!
Ensuite, récupérer l'extrension ne veut pas dire qu'on va récupérer le vrai type d'un fichier. Si je crée un fichier nommé test.php, puis que je le renomme en test.jpg, il ne se transforme pas miraculeusement en fichier jpeg! Ca reste un fichier php!
Also know as
Messages postés259Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention22 novembre 20102 15 févr. 2007 à 23:14
Ah désolé d'avoir fourni un site dangereux enfin du moins pour toi mais si tu es administrateur ici ce n'est pas pour rien donc j'écouterais ton conseil à l'avenir :)
Et non je ne suis pas administrateur de ce site, j'ai mon propre site que je gère ne t'en fais pas :-p