UPLOAD AND ZIP YOUR FILES

cs_jaco13 Messages postés 110 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 octobre 2007 - 28 janv. 2005 à 10:37
cs_Unknownn Messages postés 5 Date d'inscription dimanche 5 juin 2005 Statut Membre Derniè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.

https://codes-sources.commentcamarche.net/source/29139-upload-and-zip-your-files

cs_Unknownn Messages postés 5 Date d'inscription dimanche 5 juin 2005 Statut Membre Derniè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és 5 Date d'inscription dimanche 5 juin 2005 Statut Membre Derniè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és 2 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 30 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és 37 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 17 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és 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
30 janv. 2005 à 05:11
Pour ceux qui veulent plus en savoir sur le triple égal (===), c'est très bien expliquer sur le site de PHP: http://www.php.net/manual/fr/language.oop5.object-comparison.php
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
29 janv. 2005 à 21:08
je ne connaissais pas non plus le === ! merci du tuyau
Seul les commentaires constructifs ayant rapport a le source sont les bienvenus =)
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
29 janv. 2005 à 13:49
Encore un truc:

"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)
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
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és 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
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és 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
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és 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
28 janv. 2005 à 18:28
Salut ;-)

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 ++
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
28 janv. 2005 à 13:52
ah bon... je connaissais pas le triple égal! Je corrige et je prends note,
Thanx!
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
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és 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
28 janv. 2005 à 11:41
euh... tu m'expliques ce que ça change au schmilblick?
cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
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és 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
28 janv. 2005 à 11:17
Bon ben jaco13, là y a tout ce qu'il te faut j'espère!
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
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és 110 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 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!
Rejoignez-nous