Niveau sécurité, c'est pas top!
Mais je trouves que pour un débutant c'est pas mal du tout
Bons courage!
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 11 nov. 2009 à 13:08
Les expressions regulieres ne sont pas si compliquees mais si tu t'y lances, je te conseille de miser sur "les expression regulieres compatible PERL" (PCRE) plutot que les expressions regulieres POSIX (c'est celles que j'utilise, mais qui sont plus limitees et plus lentes que les PCRE... donc ne fait pas comme moi :o) ).
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009 11 nov. 2009 à 11:50
Merci beaucoup, Lefauve42, pour toutes ces précisions, notamment la possibilité de réduire les images avec GDLib, que je vais étudier dès que possible.
En ce qui concerne les expressions régulières, je dois dire que je n'y connais rien, et que j'hésite à m'y lancer, vu le nombre d'autres choses qu'il faut avoir en tête par ailleurs...
Merci en tous cas. C'est encourageant.
Richard
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 11 nov. 2009 à 11:20
Salut,
Ce n'est pas si terrible que ce que disent les commentaires, mais vu le nombre de lignes, je pense que tu as du améliorer le source original :o) .
Pour ce qui est de la securite, vu que tu n'acceptes que des images, ce n'est pas si critique que ca.
Le plus sur, selon ce que tu veux faire avec les fichiers uploades, c'est de les mettre dans un repertoire non accessible aux clients web. Si ton hebergeur ne le permet pas, il est toujours possible d'ajouter un .htaccess interdisant cet access pour tout le contenu du repertoire.
Petite remarque: Pour accepter toutes les images, tu peux simplifier ton code avec les expressions regulieres. Ca donne un truc genre :
if(ereg('^image/',$typ))
{
if(move_uploaded_file($_FILES['srcfic']['tmp_name'][$x],"$destin/$nom")) // si tout s'est bien passé
{
echo "Le fichier "" . $_FILES['srcfic']['name'][$x] . "" a été correctement envoyé ";
echo "dans le dossier "$destin/"
";
chmod("$destin/$nom",0644);
}
else // sinon (case restée vide, ou fichier pas passé...)
{
if ($nom=="") $nom = "Fichier_Inconnu";
echo "Désolé, je n'ai pas pu envoyer le fichier "$nom" dans le dossier "$destin/" !
";
}
}
else // par défaut: rejeter les fichiers autres qu'images
{
echo "
Fichier "$nom" d'un type incorrect
";
}
Une autre remarque: Le resultat du mime type des fichiers uploades peut varier avec le navigateur utilise. Ca devrait marcher avec les images, mais j'ei deja eu des problemes par le passe avec par exemple les .gz qui n'ont pas le meme type si envoyes avec firefox ou ie.
Sinon j'ai ecrit un script du meme genre (mais specialise pour les images) et plutot que de rejeter les images trop grosses, j'utilisais GDLib pour reduire leur taille avant de les enregistrer. Ce n'est pas si complique si tu te limites aux images gerees par la GDLib (en gros, si tu ne geres pas les BMP).
Eric
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009 9 nov. 2009 à 14:05
Merci.
Tiens compte quand même des commentaires de Kohntark et Fadiese, ils ont raison: il faut améliorer ce code au niveau de la sécurité, ne t'en sers pas "tel quel"...
kertimanoff
Messages postés75Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention30 juin 2013 9 nov. 2009 à 13:39
autant pour moi, j'ai été victime de mon impatience... ça fonction a merveille, excellent code. merci beaucoup
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009 9 nov. 2009 à 13:28
Parfois le serveur n'affiche pas immédiatement la mise à jour de son répertoire, il faut changer de session pour vérifier si le fichier est bien arrivé.
Sinon... as-tu modifié quelque chose dans le code ?
Autre piste: qui est ton hébergeur ? As-tu réglé correctement les droits d'écriture dans le dossier "downloads" que tu as créé ? Il faut le mettre au moins en 644, voire 777, pour pouvoir y écrire un nouveau fichier.
kertimanoff
Messages postés75Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention30 juin 2013 9 nov. 2009 à 11:39
salut, je suis trés interraissé par l'utilité de ton code, maleureusement il ne fonctionne pas ...
j'ai mi le fichier php puis créé un dossier "downloads" dans www sur mon serveur.
quand j'envoi un fichier sa affiche sur la page web que le fichier a bien été envoyé, cependant aucun fichier n'est ajouté sur le serveur... si j'ai sauté une étape peut-on m'éclairer?
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009 9 nov. 2009 à 11:30
Merci pour les commentaires constructifs de Kohntark et Fadiese.
Pour les autres, je dirai simplement: la critique est aisée, mais l'art est difficile !
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 9 nov. 2009 à 10:28
Salut,
Commentaires plutôt faciles ? On peut même parler d'idiot voire de crétin dans le cas du "allez, poubelle!"
@valneandre :
C'est vrai que ce genre de code peut servir à un débutant, surtout pour l'emploi du DOM, mais encore faudrait il qu'il n'y ait pas d'erreurs :
- <script language="javascript"> => <script type="text/javascript">
- le code HTML n'est pas valide (majuscules, name sur un div, ...)
- aucune (ou presque) gestion des erreurs
- pas de possibilité de supprimer un champ file
- etc ... etc ...
Comme cela a été dit ton code est très dangereux s'il est utilisé tel quel.
Bref, il ne faut pas rêver, un code d'upload de fichier ne peut pas tenir en 36 lignes sans avoir de lourdes carences.
Cordialement,
Kohntark-
cs_fadiese
Messages postés15Date d'inscriptionvendredi 10 janvier 2003StatutMembreDernière intervention 9 novembre 2009 9 nov. 2009 à 09:52
Pour un débutant c'est un bon début, simple et bien commenté;
Continues et ne tiens pas compte des commentaires plutôt faciles qu'on peut voir ici.
bj33
Messages postés145Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention 1 mai 2012 9 nov. 2009 à 09:00
mon dieu!! j'm disait aussi.
<< Tu aurais au moins pu penser à vérifier un minimum le fichier envoyé...
faudrait pouvoir, penser;))
allez, poubelle!
destinyfr
Messages postés106Date d'inscriptionsamedi 19 mai 2007StatutMembreDernière intervention13 avril 2009 7 nov. 2009 à 16:37
faut quand même un minimum de sécurité.. Si il met ça comme ça en ligne, en 2mn il à plus de site xD
Tu aurais au moins pu penser à vérifier un minimum le fichier envoyé...
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009 7 nov. 2009 à 15:43
Je pense que quelqu'un qui débute, et cherche à comprendre, peut tirer profit de ce genre de "fil d'ariane", tout comme j'ai tiré profit, moi-même, de bouts de code simples et sans prétention du même genre. On ne devient pas expert d'un coup !
Richard
destinyfr
Messages postés106Date d'inscriptionsamedi 19 mai 2007StatutMembreDernière intervention13 avril 2009 7 nov. 2009 à 10:29
Salut,
Dans ce cas la, à quoi sert ce code ?
Merci
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009 6 nov. 2009 à 14:08
J'ajoute, avant que d'autres me le disent: il n'y a aucun traitement de "fichier déjà présent", de type ni de taille de fichier, et le dossier destinataire est "câblé" dans le code. Tout cela peut être largement amélioré, bien entendu.
15 janv. 2013 à 14:38
Mais je trouves que pour un débutant c'est pas mal du tout
Bons courage!
11 nov. 2009 à 13:08
11 nov. 2009 à 11:50
En ce qui concerne les expressions régulières, je dois dire que je n'y connais rien, et que j'hésite à m'y lancer, vu le nombre d'autres choses qu'il faut avoir en tête par ailleurs...
Merci en tous cas. C'est encourageant.
Richard
11 nov. 2009 à 11:20
Ce n'est pas si terrible que ce que disent les commentaires, mais vu le nombre de lignes, je pense que tu as du améliorer le source original :o) .
Pour ce qui est de la securite, vu que tu n'acceptes que des images, ce n'est pas si critique que ca.
Le plus sur, selon ce que tu veux faire avec les fichiers uploades, c'est de les mettre dans un repertoire non accessible aux clients web. Si ton hebergeur ne le permet pas, il est toujours possible d'ajouter un .htaccess interdisant cet access pour tout le contenu du repertoire.
Petite remarque: Pour accepter toutes les images, tu peux simplifier ton code avec les expressions regulieres. Ca donne un truc genre :
if(ereg('^image/',$typ))
{
if(move_uploaded_file($_FILES['srcfic']['tmp_name'][$x],"$destin/$nom")) // si tout s'est bien passé
{
echo "Le fichier "" . $_FILES['srcfic']['name'][$x] . "" a été correctement envoyé ";
echo "dans le dossier "$destin/"
";
chmod("$destin/$nom",0644);
}
else // sinon (case restée vide, ou fichier pas passé...)
{
if ($nom=="") $nom = "Fichier_Inconnu";
echo "Désolé, je n'ai pas pu envoyer le fichier "$nom" dans le dossier "$destin/" !
";
}
}
else // par défaut: rejeter les fichiers autres qu'images
{
echo "
Fichier "$nom" d'un type incorrect
";
}
Une autre remarque: Le resultat du mime type des fichiers uploades peut varier avec le navigateur utilise. Ca devrait marcher avec les images, mais j'ei deja eu des problemes par le passe avec par exemple les .gz qui n'ont pas le meme type si envoyes avec firefox ou ie.
Sinon j'ai ecrit un script du meme genre (mais specialise pour les images) et plutot que de rejeter les images trop grosses, j'utilisais GDLib pour reduire leur taille avant de les enregistrer. Ce n'est pas si complique si tu te limites aux images gerees par la GDLib (en gros, si tu ne geres pas les BMP).
Eric
9 nov. 2009 à 14:05
Tiens compte quand même des commentaires de Kohntark et Fadiese, ils ont raison: il faut améliorer ce code au niveau de la sécurité, ne t'en sers pas "tel quel"...
9 nov. 2009 à 13:39
9 nov. 2009 à 13:28
Sinon... as-tu modifié quelque chose dans le code ?
Autre piste: qui est ton hébergeur ? As-tu réglé correctement les droits d'écriture dans le dossier "downloads" que tu as créé ? Il faut le mettre au moins en 644, voire 777, pour pouvoir y écrire un nouveau fichier.
9 nov. 2009 à 11:39
j'ai mi le fichier php puis créé un dossier "downloads" dans www sur mon serveur.
quand j'envoi un fichier sa affiche sur la page web que le fichier a bien été envoyé, cependant aucun fichier n'est ajouté sur le serveur... si j'ai sauté une étape peut-on m'éclairer?
9 nov. 2009 à 11:30
Pour les autres, je dirai simplement: la critique est aisée, mais l'art est difficile !
9 nov. 2009 à 10:28
Commentaires plutôt faciles ? On peut même parler d'idiot voire de crétin dans le cas du "allez, poubelle!"
@valneandre :
C'est vrai que ce genre de code peut servir à un débutant, surtout pour l'emploi du DOM, mais encore faudrait il qu'il n'y ait pas d'erreurs :
- <script language="javascript"> => <script type="text/javascript">
- le code HTML n'est pas valide (majuscules, name sur un div, ...)
- aucune (ou presque) gestion des erreurs
- pas de possibilité de supprimer un champ file
- etc ... etc ...
Comme cela a été dit ton code est très dangereux s'il est utilisé tel quel.
Bref, il ne faut pas rêver, un code d'upload de fichier ne peut pas tenir en 36 lignes sans avoir de lourdes carences.
Cordialement,
Kohntark-
9 nov. 2009 à 09:52
Continues et ne tiens pas compte des commentaires plutôt faciles qu'on peut voir ici.
9 nov. 2009 à 09:00
<< Tu aurais au moins pu penser à vérifier un minimum le fichier envoyé...
faudrait pouvoir, penser;))
allez, poubelle!
7 nov. 2009 à 16:37
Tu aurais au moins pu penser à vérifier un minimum le fichier envoyé...
7 nov. 2009 à 15:43
Richard
7 nov. 2009 à 10:29
Dans ce cas la, à quoi sert ce code ?
Merci
6 nov. 2009 à 14:08