cs_jaco13
Messages postés110Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention22 octobre 2007
-
28 janv. 2005 à 10:37
cs_Unknownn
Messages postés5Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention 4 juillet 2005
-
5 juin 2005 à 22:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Unknownn
Messages postés5Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention 4 juillet 2005 5 juin 2005 à 22:31
Cette fois-ci c'est bonsoir lol !
Voilà, j'ai revu le code et j'ai apporté deux nouvelles fonctions : Celle d'une part d'accepter un certain type de fichier et d'autre part d'afficher un message d'erreur si un fichier zip porte déjà le même nom.
//A mettre après le deuxième <?php
} else if(!in_array( substr(strrchr($_FILES['userfile']['name'], '.'), 1), $extensions_ok)) {
echo "Veuillez sélectionner un fichier de type jpg ou jpeg !.
";
} else if(file_exists("zipupload/".getFileName($_FILES['userfile']['name']).".zip")) {
echo "Attention ! Un autre fichier porte déjà ce nom ! Veuillez renommer le votre.";
Et avant tout cela, il faut créer $extensions_ok grâce à :
$extensions_ok = array('jpg', 'jpeg');
Bien entendu, vous pouvez la modifier mais n'oubliez pas de rapporter les types de fichier sur le message d'erreur ! lol
Voilà ! J'ai récupéré ces codes sur un autre script puis apporté mes propres modifications.
Amicalement,
Unknownn ;)
_______________
Participer, c'est une autre manière de remercier
cs_Unknownn
Messages postés5Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention 4 juillet 2005 5 juin 2005 à 19:37
Bonjour à tous,
Merci pour cette source. Je suis très interréssé et à vrai dire, je me suis peut-être enregistré pour vous remercier :p
Il faut améliorer le code, ça c'est sûr mais en attendant que je trouve des solutions à mes problèmes, je voulais vous faire remarquer qu'il était dommage qu'on ne fasse pas de rappel quand le fichier existe déjà. Autrement dit, il faudrait éviter d'écraser sans confirmation.
Encore merci,
Unknownn
PS: Je suis débutant et il n'est pas facile de reconnaître à première vue les défauts :p lol
pehel
Messages postés2Date d'inscriptionvendredi 29 avril 2005StatutMembreDernière intervention30 avril 2005 29 avril 2005 à 21:42
Une petite amélioration de getFileName
function getFileName($fichier)
{
$fichier = basename ($fichier);
return substr($fichier,0,-strlen(strrchr($fichier,'.')));
}
histoire de couper les cheveux en quatre.
Mais où serait le plaisir sinon.
cs_emiilie
Messages postés37Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention17 août 2005 26 avril 2005 à 11:11
bonjour,
l'upload ça marche bien, c'est sur! mais je me posais la question si c'etait possible de le faire sans passer par un
dans la partie html ?
autrement dit dans le cas ou je sais a l'avance ou se trouve le fichier et que je veux faire une methode disont automatique !
merci
cs_eXon
Messages postés166Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention 8 avril 20071 30 janv. 2005 à 05:11
malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 200917 29 janv. 2005 à 13:45
"Ce qui m'arrangerait c'est que tu arrêtes d'essayer de me casser juste parce que j'ai critiqué je ne sais plus quoi sur ta manière de coder."
Crois pas ça... je te porte pas dans mon coeur, ça c'est certain, mais j'ai pas 12 ans d'âge mental non plus!
Concernant le XHTML, bien que je ne pratique pas bien encore, je me suis rallié à ta cause.
Ok pour la vérif si tu veux qqch de moins que le max_upload_size, effectivement.
Ensuite, je n'ai jamais dit "chargée", mais "complète". Merci de ne pas transformer mes paroles.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 29 janv. 2005 à 12:05
"Ensuite dans le else toujours vérifier la taille du fichier, le html seul ne suffit pas et quelqu'un de mal intentionné pourra envoyer 5 Mo si il veut, malgré ta limite."
F-A-U-X! PHP t'empêche d'uploader un fichier de plus de 2MB, donc pas de soucis de ce côté là! Regarde dans phpinfo(4) la limite de "upload_max_filesize""
Arf il va contester chacun de mes messages...
On va donc répondre point par point.
Tout d'abord effectivement par défaut l'upload max est à
2 Mo. Et alors ? il n'en veut que 50 Ko. A partir du moment où la limite souhaitée est inférieure au max_upload_size de php tu DOIS verifier la taille du fichier. (1er argument cassé)
On passe au suivant :
"[blabla] d'eXon pour $submit, je préfère la sienne, je la trouve plus "complète". Mais chacun fait comme il veut ;o)"
Oui, tu la trouves plus chargée, je suis d'accord avec toi.
Ensuite pour verifier l'existence d'une variable on n'utilise pas if($variable===NULL) mais if(isset($variable))
M'enfin bon je t'ai prouvé l'autre fois avec le XHTML que j'avais raison, j'ai pas envie de recommencer pour ça...
Ce qui m'arrangerait c'est que tu arrêtes d'essayer de me casser juste parce que j'ai critiqué je ne sais plus quoi sur ta manière de coder.
a +
malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 200917 29 janv. 2005 à 06:38
Tcho,
Faut que t'apprennes à éviter le mot "crade" Anthony...
"Ensuite dans le else toujours vérifier la taille du fichier, le html seul ne suffit pas et quelqu'un de mal intentionné pourra envoyer 5 Mo si il veut, malgré ta limite."
F-A-U-X! PHP t'empêche d'uploader un fichier de plus de 2MB, donc pas de soucis de ce côté là! Regarde dans phpinfo(4) la limite de "upload_max_filesize"
Maintenant, entre ta variante et celle d'eXon pour $submit, je préfère la sienne, je la trouve plus "complète". Mais chacun fait comme il veut ;o)
Pour getFileName, you're right... pour autant que l'extension ait 3 caractères, ce qui est la majorité des cas, je crois.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 28 janv. 2005 à 18:28
Salut ;-)
Tu peux remplacer ta fonction getFileName() par celle-ci :
$max_size = 50; // 50kb. Mettez ce que vous voulez ici!
par ça :
if(!isset($_POST['submit'])){
$max_size = 51200; // 50kb. Mettez ce que vous voulez ici!
echo '<form enctype="multipart/form-data" action="',$_SERVER['SCRIPT_NAME'],'" method="post">
Envoyez ce fichier :
</form>';
}
//Ensuite dans le else toujours vérifier la taille du fichier, le html seul ne suffit pas et quelqu'un de mal intentionné pourra envoyer 5 Mo si il veut, malgré ta limite.
else
{
$clef=array_keys($_FILES);
if($_FILES[$clef[0]]['size']>$max_size)
{
//taille trop grosse
}
}
a ++
malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 200917 28 janv. 2005 à 13:52
ah bon... je connaissais pas le triple égal! Je corrige et je prends note,
Thanx!
cs_eXon
Messages postés166Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention 8 avril 20071 28 janv. 2005 à 13:49
Je te conseil de remettre if($submit === NULL) c'est une comparaison par objet. Donc avec if($submit === NULL il va retourné true si c'est NULL mais pas s'il est vide, quand est-ce qu'avec == il va retourné true s'il est vide aussi.
malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 200917 28 janv. 2005 à 11:41
euh... tu m'expliques ce que ça change au schmilblick?
cs_eXon
Messages postés166Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention 8 avril 20071 28 janv. 2005 à 11:39
Tu devrais codé avec ton error_reporting à E_ALL parce que tu as fait une petite erreur:
$submit = $_POST['submit'];
if (!($submit)){
$max_size = 50; // 50kb. Mettez ce que vous voulez ici!
à remplacer par:
$submit = (isset($_POST['submit']))?$_POST['submit']:NULL;
if($submit === NULL){
$max_size = 50; // 50kb. Mettez ce que vous voulez ici!
malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 200917 28 janv. 2005 à 11:17
Bon ben jaco13, là y a tout ce qu'il te faut j'espère!
malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 200917 28 janv. 2005 à 11:09
Salut,
Ok, je vais corriger sous peu... d'autant que mon code oublie quelque chose d'imprtant: il n'efface pas le fichier non-zippé du serveur! Du coup, y a plus d'intérêt!
Je m'empresse de mettre à jour ;o)
cs_jaco13
Messages postés110Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention22 octobre 2007 28 janv. 2005 à 10:37
Ton programme a l'air d'être bien mais pense aux débutants, tes explications finales sont faites pour des "pro" et sont inexploitables pour beaucoup d'entre nous!
5 juin 2005 à 22:31
Voilà, j'ai revu le code et j'ai apporté deux nouvelles fonctions : Celle d'une part d'accepter un certain type de fichier et d'autre part d'afficher un message d'erreur si un fichier zip porte déjà le même nom.
//A mettre après le deuxième <?php
} else if(!in_array( substr(strrchr($_FILES['userfile']['name'], '.'), 1), $extensions_ok)) {
echo "Veuillez sélectionner un fichier de type jpg ou jpeg !.
";
} else if(file_exists("zipupload/".getFileName($_FILES['userfile']['name']).".zip")) {
echo "Attention ! Un autre fichier porte déjà ce nom ! Veuillez renommer le votre.";
Et avant tout cela, il faut créer $extensions_ok grâce à :
$extensions_ok = array('jpg', 'jpeg');
Bien entendu, vous pouvez la modifier mais n'oubliez pas de rapporter les types de fichier sur le message d'erreur ! lol
Voilà ! J'ai récupéré ces codes sur un autre script puis apporté mes propres modifications.
Amicalement,
Unknownn ;)
_______________
Participer, c'est une autre manière de remercier
5 juin 2005 à 19:37
Merci pour cette source. Je suis très interréssé et à vrai dire, je me suis peut-être enregistré pour vous remercier :p
Il faut améliorer le code, ça c'est sûr mais en attendant que je trouve des solutions à mes problèmes, je voulais vous faire remarquer qu'il était dommage qu'on ne fasse pas de rappel quand le fichier existe déjà. Autrement dit, il faudrait éviter d'écraser sans confirmation.
Encore merci,
Unknownn
PS: Je suis débutant et il n'est pas facile de reconnaître à première vue les défauts :p lol
29 avril 2005 à 21:42
function getFileName($fichier)
{
$fichier = basename ($fichier);
return substr($fichier,0,-strlen(strrchr($fichier,'.')));
}
histoire de couper les cheveux en quatre.
Mais où serait le plaisir sinon.
26 avril 2005 à 11:11
l'upload ça marche bien, c'est sur! mais je me posais la question si c'etait possible de le faire sans passer par un
dans la partie html ?
autrement dit dans le cas ou je sais a l'avance ou se trouve le fichier et que je veux faire une methode disont automatique !
merci
30 janv. 2005 à 05:11
29 janv. 2005 à 21:08
Seul les commentaires constructifs ayant rapport a le source sont les bienvenus =)
29 janv. 2005 à 13:49
"Ensuite pour verifier l'existence d'une variable on n'utilise pas if($variable===NULL) mais if(isset($variable))"
... si tu regardes un peu mieux le code que m'a suggéré eXon, c'est
$submit = (isset($_POST['submit']))?$_POST['submit']:NULL;
if($submit === NULL)
... le isset à bien lieu ;o)
29 janv. 2005 à 13:45
Crois pas ça... je te porte pas dans mon coeur, ça c'est certain, mais j'ai pas 12 ans d'âge mental non plus!
Concernant le XHTML, bien que je ne pratique pas bien encore, je me suis rallié à ta cause.
Ok pour la vérif si tu veux qqch de moins que le max_upload_size, effectivement.
Ensuite, je n'ai jamais dit "chargée", mais "complète". Merci de ne pas transformer mes paroles.
29 janv. 2005 à 12:05
F-A-U-X! PHP t'empêche d'uploader un fichier de plus de 2MB, donc pas de soucis de ce côté là! Regarde dans phpinfo(4) la limite de "upload_max_filesize""
Arf il va contester chacun de mes messages...
On va donc répondre point par point.
Tout d'abord effectivement par défaut l'upload max est à
2 Mo. Et alors ? il n'en veut que 50 Ko. A partir du moment où la limite souhaitée est inférieure au max_upload_size de php tu DOIS verifier la taille du fichier. (1er argument cassé)
On passe au suivant :
"[blabla] d'eXon pour $submit, je préfère la sienne, je la trouve plus "complète". Mais chacun fait comme il veut ;o)"
Oui, tu la trouves plus chargée, je suis d'accord avec toi.
Ensuite pour verifier l'existence d'une variable on n'utilise pas if($variable===NULL) mais if(isset($variable))
M'enfin bon je t'ai prouvé l'autre fois avec le XHTML que j'avais raison, j'ai pas envie de recommencer pour ça...
Ce qui m'arrangerait c'est que tu arrêtes d'essayer de me casser juste parce que j'ai critiqué je ne sais plus quoi sur ta manière de coder.
a +
29 janv. 2005 à 06:38
Faut que t'apprennes à éviter le mot "crade" Anthony...
"Ensuite dans le else toujours vérifier la taille du fichier, le html seul ne suffit pas et quelqu'un de mal intentionné pourra envoyer 5 Mo si il veut, malgré ta limite."
F-A-U-X! PHP t'empêche d'uploader un fichier de plus de 2MB, donc pas de soucis de ce côté là! Regarde dans phpinfo(4) la limite de "upload_max_filesize"
Maintenant, entre ta variante et celle d'eXon pour $submit, je préfère la sienne, je la trouve plus "complète". Mais chacun fait comme il veut ;o)
Pour getFileName, you're right... pour autant que l'extension ait 3 caractères, ce qui est la majorité des cas, je crois.
28 janv. 2005 à 18:28
Tu peux remplacer ta fonction getFileName() par celle-ci :
function getFileName($fichier)
{
$fichier = basename ($fichier);
return substr($fichier, 0,strlen($fichier)-4);
}
Ensuite les multiples ouvertures/fermetures des tags c'est crade. Pour ce qui est du ===NULL ou ==NULL, tu peux remplacer ça :
$submit = (isset($_POST['submit']))?$_POST['submit']:NULL;
if($submit === NULL){
$max_size = 50; // 50kb. Mettez ce que vous voulez ici!
par ça :
if(!isset($_POST['submit'])){
$max_size = 51200; // 50kb. Mettez ce que vous voulez ici!
echo '<form enctype="multipart/form-data" action="',$_SERVER['SCRIPT_NAME'],'" method="post">
Envoyez ce fichier :
</form>';
}
//Ensuite dans le else toujours vérifier la taille du fichier, le html seul ne suffit pas et quelqu'un de mal intentionné pourra envoyer 5 Mo si il veut, malgré ta limite.
else
{
$clef=array_keys($_FILES);
if($_FILES[$clef[0]]['size']>$max_size)
{
//taille trop grosse
}
}
a ++
28 janv. 2005 à 13:52
Thanx!
28 janv. 2005 à 13:49
28 janv. 2005 à 11:41
28 janv. 2005 à 11:39
$submit = $_POST['submit'];
if (!($submit)){
$max_size = 50; // 50kb. Mettez ce que vous voulez ici!
à remplacer par:
$submit = (isset($_POST['submit']))?$_POST['submit']:NULL;
if($submit === NULL){
$max_size = 50; // 50kb. Mettez ce que vous voulez ici!
28 janv. 2005 à 11:17
28 janv. 2005 à 11:09
Ok, je vais corriger sous peu... d'autant que mon code oublie quelque chose d'imprtant: il n'efface pas le fichier non-zippé du serveur! Du coup, y a plus d'intérêt!
Je m'empresse de mettre à jour ;o)
28 janv. 2005 à 10:37