8721 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Bonjour,

Je ne suis pas sûr que l'upload de format PSD soit une bonne idée. C'est un format propriétaire d'abord et un fichier PSD fait sous une version CS par exemple ne s'ouvrira pas (bien) sous une version 6 par exemple. L'extension ne donne pas le n° de version. Si une typo est utilisée dans l'image, la personne qui ouvrira le fichier PSD n'est pas censée avoir la dite typo.
Si les calques conditionnent ce format, le TIFF désormais l'accepte, et ce n'est pas sous copyright me semble-t-il.
Il faut vraiment voir le PSD comme un fichier de travail, tout comme un fichier QXP (Quark XPress) par exemple. Smiley cligne
Modifié par zzzazzz (07 Aug 2005 - 23:29)
De toutes façon j'ai laissé tombé le PSD (il serait venu plus tard, avec un formulaire d'upload dédié), tu viens juste de me donner des raisons supplémentaires Smiley smile Le TIFF gère les calques ? on peut afficher du TIFF sur une page WEB ou pas ?

Je me renseigne, merci pour ton intervention !

@+
En fait en allant voire sur Wikipedia je me suis rendu compte que Tiff a été racheté par… Adobe (sic). Le format Tiff n'est pas fait pour le web, mais pour l'imprimerie. Il permet de conserver toutes les informations couleurs, ce que le Jpeg, le Png, le Gif ne font pas. En gros si tu veux stocker des images en hautes definitions susceptibles d'être triturées par un graphiste, il vaut mieux avoir du Tiff.

En espérant avoir répondu à tes questions. Smiley smile
Merci beaucoup, rien à faire, les infos me tombent dans le bec Smiley smile

Bon et bien le PNG permet tout de même d'avoir une bonne qualité, je vais m'en contenter pour l'instant, mon hébergeur appréciera sans doute Smiley lol

merci encore !

@ +

(le script vance, j'ai fais la partie upload, avec changement du nom des fichiers (merci bcp agilis pour uniqid(), c'est génial, mise en minuscules des extensions, "popup" javascript (sans effet si inactif) pour patienter durant l'upload (il y aura sans doute un petit jeu, ou alors des blagues aléatoires...ou autre)....etc
Ceci, en parte grâce à vous Smiley cligne
Modérateur
Pour ma part, lorsque j'upload un fichier, je le renomme avec mon propre script. Je n'aime pas l'idée des nombres aléatoires, puisque quelqu'un qui envoi son fichier par une interface web voudra probablement se référer au nom de celui-ci par la suite. S'il envoi mon-chien.jpg, il aura du mal à le retrouver s'il est renommé pour 453453533234645643.jpg.

Ce que je fais, en gros, c'est lors de l'upload, je récupère l'extension et je vérifie si elle est valide. Le mime-type est également vérifié. Si c'est le cas, je continue. Je retire tous les caractères autres que des chiffres-lettres par rien. Donc le fichier mon chien#34.jpg deviendra mon-chien34.jpg. Évidemment, j'utilise une boucle pour m'assurer que le fichier de ce nom n'existe pas déjà. Si c'est le cas, j'ajoute un chiffre incrémentiel au bout du nom du fichier. Si les fichiers suivants existent :

- mon-chien34-1.jpg
- mon-chien34-2.jpg
- mon-chien34-3.jpg

Eh bien lorsque j'uploaderai mon chien#34.jpg, il deviendra automatiquement mon-chien34-4.jpg.

Vous me suivez ?

De cette façon, on garde quand même un nom de référence pour l'image. Les caractères invalides sont remplacés par un vide (pas un espace), les espaces peuvent être remplacés par des tirets, les collisions sont gérées par un script, et les doubles points(.) sont automatiquement corrigés.
Modifié par Merkel (08 Aug 2005 - 13:26)
Oui, je suis d'accord avec toi, dans ton cas il est sans doute imporant de garder le nom d'origine.
Mais pour moi, cela n'a aucune importance, puisque le nom de l'image (qui est obtenu grâce à uniqid(img-gs_) + extension d'origine en minuscules) est stocké dans la BDD avec son titre, ses mots clefs, le nom de l'auteurs, le type de license, les commentaires, les notes...etc
Donc l'utilisateur n'a en aucun cas besoin du nom du fichier, il ne voit lui que le titre de l'image (et là pas de problème pour qu'il y ai plusieurs fois les mêmes)

Ta méthode estsuper intéressante, mais également beaucoup plus compliquée, et je n'ai pas intérêt à mon avis à la mettre en place.

Merci en tous cas !

@+
Modérateur
Graph-Site a écrit :
Ta méthode est super intéressante, mais également beaucoup plus compliquée, et je n'ai pas intérêt à mon avis à la mettre en place.


Évidemment, si tu stock toutes les informations et surtout son titre dans une base de données, conserver son nom d'origine n'est peut-être pas important. C'est toi le mieux placé pour en juger.

Pour ce qui est d'être compliqué, ca l'est une seule fois. Je me suis créé un Custom Tag (une fonction si tu veux) qui s'occupe de gérer tout ca. J'upload mon image et je passe ensuite le nom de l'image uploadé (et quelques paramètres) à mon Custom Tag et il s'occupe de le renommer convenablement tout en gérant les collisions des noms. J'ai codé le tout une seule fois, et je peux réutiliser mon Custom Tag (fonction) aussi facilement que n'importe quelle fonction native au langage. Smiley smile
Oui, enfin ce ue je veux dire, c'est que remplacer les espaces par _
supprimer les caractères spéciaux, incrémenter le nom de la photo si le nom est déjà utilisé...etc ça me prendrait des heures et des heures à faire Smiley cligne
Donc, pour moi c'est compliqué Smiley cligne


Je t'avoue un truc : je ne sais même pas faire de fonction à ma sauce !
(j'ai zappé ce chappitre sur le tutoriel qui m'a servi à débuter en php Smiley smile )
Bonne idée que j'apprenne, ça me fera peut-être gagné du temps si j'ai des trucs répétitifs à faire !

@ +
Voilà, j'ai enfin fini d coder ma fonction... Smiley biggrin
Elle à la faculté d'enregistrer plusieurs photos de taille différentes. Pratique pour la création de vignettes par exemple Smiley cligne . C'est ici que ca se passe. La documentation est en commentaire...

a+
Modérateur
Graph-Site a écrit :
Oui, enfin ce ue je veux dire, c'est que remplacer les espaces par _


Non, pas un underscore, vaut mieux utiliser un tiret : -

Pourquoi ? Simplement parce que lorsqu'on fait un lien vers le nom d'une image, souvent ce lien est souligné. Les underscores sont difficiles à voir dans le lien. D'ailleurs, au niveau référencement, je pense que l'underscore n'est pas considéré comme un séparateur de mots, contrairement au tiret.

Graph-Site a écrit :

Je t'avoue un truc : je ne sais même pas faire de fonction à ma sauce !


Dépêche-toi d'apprendre ca. Tu vas sauver des heures et des heures de travail redondant. La maintenance est également plus facile. En plus, tu te dis : "hey, je vais peut-être prendre la journée pour faire ma méga-fonction du tonnère qui tue", mais après, tu vas tellement être satisfait de pouvoir la réutiliser à volonté sans le moindre effort de codage. Smiley smile
@ Merkel : mon problème est que jusqu'à présent je ne faisais jamais ou presue de travail redondant...ou alors je me suis toujours débrouillé autrement Smiley smile

agilis, ta fonction est vraiment géniale, bon, je ne comprends pas tout, mais ce qui me fais marrer, c'est que j'ai avancé un peu ce matin, notemment sur la détection de l'extension d'origine, et il se trouve qu'on ne s'y prends pas pareil...tu le fais beaucoup mieux, plus simplement surtout ! Smiley langue
voila comment je renomme mon fichier :

$nom_image=$_FILES['image']['name']; 
$extension=strtolower(substr($nom_image, $nom_image-3, 3));
$nom_image=uniqid(img-gs_);

if ($extension=='jpg' ){$image_name=$nom_image.'.jpg';}
else if ($extension=='gif'){$image_name=$nom_image.'.gif';}
else if ($extension=='png'){$image_name=$nom_image.'.png';}
else {$image_name=$nom_image.'.'.$extension.'.error';} //impossible normalement
move_uploaded_file($image,"images/".$image_name); 


enfin bref, ça fais plaisir de savoir que j'ai encore beucoup de progrès à faire, et ça fait également plaisir de savoir ce qu'on peut faire aund on est bon Smiley smile

agilis, ton site, je trouve le principe vraiment bien Smiley smile
Préviens moi pour son lancement officiel !

EDIT :
fonctions, c'est bon, je sais faire maintenant, ne me reste plus qu'à intégrer ça à ma façon de réflechir quand je code afin de reconnaitre les bonnes occasions de me fatiguer moins Smiley smile lol
EDIT2 : j'ai trouvé la première fonction que je vais faire et qui me servira souvent : une fonction pour traiter les résultats de tous les formulaires de mon site, avant inscription dans la BDD (sécurisation donc, mais aussi BBcode et smilies, et pourquoi pas censure...etc)
En fait je crois qu'une fonction m'aurait été indispensable pour ceci Smiley cligne
Modifié par Graph-Site (08 Aug 2005 - 14:53)
Et pourquoi pas "$_FILES['image']['type']" ? Le type Mime d'un fichier est bien plus pertinant qu'une simple extension. Pour preuve, les utilisateurs mac n'utilisent pas l'extension pour définir un fichier (même si le passage en X le favorise). De même une erreur dans le nommage de l'extension générera une erreur.

Voici les différents types, que tu peux mettre à la place de ta comparasion == :

a écrit :
png = image/png
gif = image/gif
jpg = image/jpeg
jpeg = image/jpeg

Modifié par zzzazzz (08 Aug 2005 - 15:17)
Graph-Site a écrit :
agilis, ta fonction est vraiment géniale
Merci Smiley smile
Graph-Site a écrit :
, bon, je ne comprends pas tout, mais ce qui me fais marrer, c'est que j'ai avancé un peu ce matin, notemment sur la détection de l'extension d'origine, et il se trouve qu'on ne s'y prends pas pareil...tu le fais beaucoup mieux, plus simplement surtout ! Smiley langue
voila comment je renomme mon fichier :

$nom_image=$_FILES['image']['name']; 
$extension=strtolower(substr($nom_image, $nom_image-3, 3));
$nom_image=uniqid(img-gs_);

if ($extension=='jpg' ){$image_name=$nom_image.'.jpg';}
else if ($extension=='gif'){$image_name=$nom_image.'.gif';}
else if ($extension=='png'){$image_name=$nom_image.'.png';}
else {$image_name=$nom_image.'.'.$extension.'.error';} //impossible normalement
move_uploaded_file($image,"images/".$image_name); 
Fais attention aux extension en .jpeg par exemple... Ton script va retourner .peg Smiley confus
Graph-Site a écrit :
agilis, ton site, je trouve le principe vraiment bien Smiley smile
Préviens moi pour son lancement officiel !
Merci, pas de problème !

a+
il me semble même que :

$_FILES['image']['type']!=(1 or 2 or 3)


doit suffire, je viens de retrouver ça dans un bout de code fait il y a plusieurs mois. Je recherche la nomenclature, ca vient Smiley cligne
pour ce qui est du PEG, oui le cas est prévu, mais comme je n'étais pas trop sûr je l'ai viré de mon exemple ici Smiley cligne

Pour ce qui est des macs, je n'était pas aux courant.
J'ai envisagé d'utiliser type, mais je n'y ai pas vraiment vu d'vantage sur le coup (à part le fait que je n'aurait plus eu besoin d'utiliser strtolower() )
merci donc pour
$_FILES['image']['type']!=(1 or 2 or 3)
je vais aller essayer ça Smiley smile


EDIT : merci beaucoup pour votre aide et vos supers conseils, je progresse à grand V aujourd'hui Smiley cligne
@ +
Modifié par Graph-Site (08 Aug 2005 - 15:47)
bonjour à tous excusez moi de réveiller ce post, seulement j'ai un soucis qui rentre en pleine ligne de mire par rapport à ce sujet et j'espérais que quelqu'un pourrait m'aider !

Voila 4 ans que je me tâte de me lancer dans le php, et vla que je me suis lancé y'a 2 semaines et j'ai attaqué ma première base de donnée ! je sais pas comment j'ai fait lol, mais ça avance..car entre mysql, phpmyadmin, php, dreamweaver, flash, photoshop, mon cerveau bouillone anormalement depuis quelques jours...

j'aurais aimé vous demander s'il serait possible de me dire comment faire pour palier à mon pb ! si ça se trouve c'est tout bête ! mais je ne trouve pas comment faire !

en gros je collectionne des vinyls ! rien ne me motivait plus pour apprendre le php de me faire une base de donnée qui va servir Smiley lol

sur un de mes templates nommé "BASE.php" j'y ait ajouté le code suivant afin que mes screenshots soient en thumbnails/miniature sur ma page, avec une simple fonction de popup !

<SCRIPT LANGUAGE="JavaScript">
<!--
function PopupImage(img) {
titre="::: aD².DB :::";
w=open("",'image','width=400,height=400,toolbar=No,scrollbars=no,resizable=yes');
w.document.write("<HTML><HEAD><TITLE>"+titre+"</TITLE></HEAD>");
w.document.write("<SCRIPT language=javascript>function checksize() { if (document.images[0].complete) { window.resizeTo(document.images[0].width+10,document.images[0].height+30); window.focus();} else { setTimeout('checksize()',250) } }</"+"SCRIPT>");
w.document.write("<BODY onload='checksize()' onblur='window.close()' onclick='window.close()' leftMargin=0 topMargin=0 marginwidth=0 marginheight=0>");
w.document.write("<TABLE width='100%' border='0' cellspacing='0' cellpadding='0' height='100%'><TR>");
w.document.write("<TD valign='middle' align='center'><IMG src='"+img+"' border=0 alt='Image bientôt disponible...'>");
w.document.write("</TD></TR></TABLE>");
w.document.write("</BODY></HTML>");
w.document.close();
}
//-->
</SCRIPT>


puis pour lancer la fonction un lien que voici :

<A href="javascript [langue]opupImage('./screenshots/AUDI0_PLUGZ/ID_<?php echo $row_mabd['id']; ?>.jpg')"><img src="./screenshots/AUDI0_PLUGZ/ID_<?php echo $row_mabd['id']; ?>.jpg" alt="Image bientot disponible..." width="150" height="100" border="0" class="image"></a>


en gros j'uploade mes screenshots avec un nom bien spécifique "ID-" suivi du numéro ID du vinyl de ma base

or, le soucis c'est un peu dur à expliquer c'est que j'ai 200 vinyls ! et via ce code là, lorsque j'affiche ma page php, le vinyl ID-4 aura le même screenshot que le ID-14 ou le ID-40 car le chiffre 4 est pris en compte comme ID-4 sur n'importe quelle fiche..je sais pas si je suis clair, il est tard, j'espère que oui !

si quelqu'un peut m'aider je lui en serais reconnaissant !
merci Smiley cligne

j'en profite juste pour vous poser une dernière question que je pense idiote mais bon, voila ma page est faite avec quelques petites requêtes de faites, seulement mes 200 vinyls s'affichent sur ma page en un bloc via mon template, et ça fait un long temps de chargement et ce n'est que le début étant donné que il n'y a encore quasi aucunes infos pour chaque fiche (qui s'affichent donc sur cette même page) soit une description, et un screenshot...serait il possible de faire en sorte que pour chacuns de mes vynils ça me crée une page html distincte au lieu de tout en vrac sur mon unique et lourde page .php ?
Bonjour,

Je ne suis pas un spécialiste Php mais getimagesize() ne retourne pas que la taille de l'image mais aussi le type d'image. Il me semble que l'extension n'est pas prise en compte mais le type et crea de l'image. Et, bonne nouvelle, le format PSD est dans la liste des formats reconnus par la fonction. Voir la page description de getimagesize()

EDIT : Oups j'avions point vu la 2ème page… Il y a redite du coup Smiley cligne
Modifié par zzzazzz (08 Nov 2005 - 08:08)
bonjour
en cherchant sur les moteur de recherche je suis enfin tomber sur un sujet qui convient plus ou moin a mon problem

je vien de monté un petit site en php dont j'utilise un script d'upload

ce que je voulais savoir est-ce que le 'hacker' en question est obligé d'ouvrir le faux fichier pour pouvoir faire des manip

sur mon site on peut envoyer tout tip de fichier mais pas la visualier
uniquement du upload et du download

le genre rapidshare en php

je tien aussi a dire que le genre d'adressage pour telecharger un fichier uploader est du genre php?id=JhGGff546KGG
cela reseemble au nom du repertoire ou a été enregistré le fichier mais pas identique (un autre charabiat).

est ce que ca risque ?

est ce que il peut trouver le repertoir exacte ou a été deposé son fichier grace a son fichier ?

ou bien ce problem perciste uniquement lorsque l'on visualise ce fichier ?

merci a tout le monde de tout les post cars j'ai bien lu depuit le debut
Modifié par furgo (23 Jan 2006 - 10:31)
Ne pas se baser sur l'extension pour vérifier le format d'un fichier. En effet, une extension n'est qu'une extension : on peut très bien uploader un .gif qui se trouve être un objet flash contenant de l'actionscript par exemple (cf un hack sur HFR).
La vérification par type MINE est plus sécurisante, quoiqu'il est possible de le spoofer.

La méthode la plus sûre est d'analyser les premiers octets du fichier uploadé, ceux qui décrivent le format Smiley smile
if( strncmp($data, "\x89PNG", 4) == 0 ) {
    $type = 'image/png';
}
else if( strncmp($data, "GIF8", 4) == 0 ) {
    $type = 'image/gif';
}
else if( strncmp($data, "\xFF\xD8", 2) == 0 ) {
    $type = 'image/jpeg';
}
(merci à Bobe pour ce bout de code ^_^)
Pages :