Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Verification upload photos par formulai re

12 réponses
Avatar
SAM
Salutatous,

Soit un formulaire avec un champ file nommé 'photo'

Je veux vérifier que c'est bien une image qui est envoyée

$ext_img = $_FILES['photo']['type'];

Le problème :
lors de mes essais certaines photos semblent ne pas communiquer leur
type (en particulier toutes celles de mon APN)

Je pensais que ce truc vérifiait l'extension du fichier et que les
majuscules/minuscules pouvaient faire avorter le machin, mais non.
Par contre un fichier sans extension n'est pas passé non plus.

Pourquoi ça marche pô ?
Une inspection dans un soft d'images montre pour ces photos que :
- le format serait : JPEG/JFIF
- le type de l'image serait : IMG DIGITAL IXUS 860 IS JPEG


Quelle autre soluce pourrait assurer que le fichier uploadé est bien une
image ?

Avec quoi comparer $ext_img pour s'assurer que l'image est bien du JPG,
du GIF, du PNG (pour les choix de post-traitements) ?

Mes essais se font dans mon Apache local en PHP 5.2.4
Au final, le formulaire sera sur un hébergeur en PHP 4.4.3-dev

--
sm

10 réponses

1 2
Avatar
Olivier Miakinen
Bonjour Stéphane,

Le 04/10/2009 10:08, SAM a écrit :

Soit un formulaire avec un champ file nommé 'photo'

Je veux vérifier que c'est bien une image qui est envoyée

$ext_img = $_FILES['photo']['type'];

Le problème :
lors de mes essais certaines photos semblent ne pas communiquer leur
type (en particulier toutes celles de mon APN)



Comme d'hab, je ne pense pas que ce soit une très bonne idée de se baser
sur des infos provenant de l'extérieur, même si ce n'est pas le seul
contrôle.

[...]

Quelle autre soluce pourrait assurer que le fichier uploadé est bien une
image ?



Tu peux regarder du côté des fonctions Exif :
http://fr.php.net/manual/fr/ref.exif.php

Il y a aussi ceci :
http://www.siteduzero.com/tutoriel-3-31523-exif-lire-les-infos-d-une-image.html

Mais tu peux également demander à la bibliothèque GD de lire l'image
comme si c'était du gif, du jpeg ou du png, pour voir si ça marche :
http://fr.php.net/manual/fr/function.imagecreatefromgif.php
http://fr.php.net/manual/fr/function.imagecreatefromjpeg.php
http://fr.php.net/manual/fr/function.imagecreatefrompng.php

Cordialement,
--
Olivier Miakinen
Avatar
Alarch
SAM wrote:

Salutatous,

Soit un formulaire avec un champ file nommé 'photo'

Je veux vérifier que c'est bien une image qui est envoyée

$ext_img = $_FILES['photo']['type'];

Le problème :
lors de mes essais certaines photos semblent ne pas communiquer leur
type (en particulier toutes celles de mon APN)

Je pensais que ce truc vérifiait l'extension du fichier et que les
majuscules/minuscules pouvaient faire avorter le machin, mais non.
Par contre un fichier sans extension n'est pas passé non plus.

Pourquoi ça marche pô ?
Une inspection dans un soft d'images montre pour ces photos que :
- le format serait : JPEG/JFIF
- le type de l'image serait : IMG DIGITAL IXUS 860 IS JPEG


Quelle autre soluce pourrait assurer que le fichier uploadé est bien une
image ?

Avec quoi comparer $ext_img pour s'assurer que l'image est bien du JPG,
du GIF, du PNG (pour les choix de post-traitements) ?

Mes essais se font dans mon Apache local en PHP 5.2.4
Au final, le formulaire sera sur un hébergeur en PHP 4.4.3-dev





Je te copie une méthode que je sors justement d'une classe d'upload
d'images, ce n'est certainement pas imparable, mais au moins ça ne se fie
pas simplement au type MIME, car si on ne contrôle que l'extention, il
suffit de renommer un fichier openoffice.odt en openoffice.jpg pour que ta
vérification ne serve plus à rien. Tu peux regarder et teste à partir de
ça. (comme c'est une méthode de classe on ne lui passe pas de paramètre,
elle récupère l'identifiant d'image par des propriétés de la fonction
($this->temporay_name etc. qui sont des infos qu'on récupèr dans php pour
les uploads, le début de la méthode publique t'indique ce que sont ces
propriétés :

public function verifUploadImage ($upload_array,$directory
$image_max_size)
{
# -- Le nom du fichier original sur la machine source -- #
$this->original_name = $upload_array['name'];
# -- Le type MIME du fichier, si le navigateur a fourni cette information.
Par exemple, "image/gif" -- #
$this->mime_type = $upload_array['type'];
# -- La taille du fichier envoyé, en octet -- #
$this->image_size = $upload_array['size'];
# -- Le nom temporaire du fichier qui sera chargé sur la machine
serveur -- #
$this->temporary_name = $upload_array['tmp_name'];
# -- erreurs sur l'upload -- #
$this->upload_error = $upload_array['error'];
# -- on contrôle la qualité du téléchargement du fichier -- #
...
}

Et voici la méthode qui tente de vérifier si une image annoncée en est bien
une.

private function verifImage () {
/**
La vérification des fichiers binaires d'image se fait en contrôlant la
signature hexadécimale de début de fichier.
En analysant des images existantes il semble qu'en hexadécimal les débuts
de fichiers soient les suivants :
Jpeg : FFD8FF
PNG : 89504E470D
Gif : 474946383961 (Gif89) et 474946383761 (Gif87)
*/
$suf_mime = eregi_replace("^.*/","",$this->mime_type);
if(file_exists($this->temporary_name)) {
$id = fopen($this->temporary_name,'rb');
$buffer = fread($id,6);
fclose($id);
}
$signature = bin2hex ($buffer);
$image_ok = false;
$result = array();
$suffixe = '';
if (substr($signature,0,6) == 'ffd8ff') {
$image_ok = true;
$info_message = "<li>La signature (".substr($signature,0,6).") de l'image
d'origine ".$this->original_name." atteste que c'est une image .jpg. Son
type mime annoncé était ".$this->mime_type."</li>n";
$suffixe = '.jpg';
}
elseif (substr($signature,0,10) == '89504e470d') {
$image_ok = true;
$info_message = "<li>La signature (".substr($signature,0,10).") de l'image
d'origine ".$this->original_name." atteste que c'est une image .png. Son
type mime annoncé était ".$this->mime_type."</li>n";
$suffixe = '.png';
}
elseif (substr($signature,0,12) == '474946383961' ||
substr($signature,0,12) == '474946383761') {
$image_ok = true;
$info_message = "<li>La signature (".substr($signature,0,12).") de l'image
d'origine ".$this->original_name." atteste que c'est une image .gif. Son
type mime annoncé était ".$this->mime_type."</li>n";
$suffixe = '.gif';
}
else {
$warning_message = "<li>!!!ALERTE : Ce fichier n'est pas à format d'image
reconnu par l'application. Son type mime est ".$this->mime_type.".</li>n";
}
$result[0] = $image_ok;
$result[1] = $info_message;
$result[2] = $warning_message;
$result[3] = $suffixe;
return $result;
} // fin de méthode verifImage

Si ça peut t'aider...

Cordialement

--
Marc
Avatar
Dominique Ottello
SAM écrivait :

Avec quoi comparer $ext_img pour s'assurer que l'image est bien du JPG,
du GIF, du PNG (pour les choix de post-traitements) ?



Utiliser exif_imagetype()
Documentation ici :
http://fr2.php.net/manual/fr/function.exif-imagetype.php
--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Technologie aéronautique : http://aviatechno.free.fr (http://ottello.net)
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr
Avatar
Alarch
Dominique Ottello wrote:

SAM écrivait :

Avec quoi comparer $ext_img pour s'assurer que l'image est bien du JPG,
du GIF, du PNG (pour les choix de post-traitements) ?



Utiliser exif_imagetype()
Documentation ici :
http://fr2.php.net/manual/fr/function.exif-imagetype.php



encore une fonction que j'avais ratée ! Je vais essayer ça tout de suite
tiens.
Avatar
SAM
Le 10/4/09 3:12 PM, Alarch a écrit :
SAM wrote:

Salutatous,

Soit un formulaire avec un champ file nommé 'photo'

Je veux vérifier que c'est bien une image qui est envoyée

$ext_img = $_FILES['photo']['type'];

Le problème :
lors de mes essais certaines photos semblent ne pas communiquer leur
type (en particulier toutes celles de mon APN)





Ha! j'ai oublié de dire qu'il serait bien que je connaisse (d'avance ?)
le poids du fichier. Free semble n'autoriser que 2Mo en upload.

De laisser envoyer 2Mo pour que l'upload errorise ce n'est pas sympa
pour l'expéditeur.

Je te copie une méthode que je sors justement d'une classe d'upload
d'images, ce n'est certainement pas imparable, mais au moins ça ne se fie
pas simplement au type MIME, car si on ne contrôle que l'extention, il



À la lecture des remarques d'Olivier ce $_FILES[] ne serait que des
infos envoyées par le navigateur. Si ça peut être un indicateur, pour
sûr ce n'est pas à prendre pour argent comptant. Les extensions non
plus, bien évidement.

Tu peux regarder et teste à partir de ça.



Je regarde, je regarde, mais ... je comprends pas tout !!

(comme c'est une méthode de classe on ne lui passe pas de paramètre,
elle récupère l'identifiant d'image par des propriétés de la fonction
($this->temporay_name etc. qui sont des infos qu'on récupèr dans php pour
les uploads, le début de la méthode publique t'indique ce que sont ces
propriétés :



Une petite ligne exemple ?
Que je comprenne comment on se sert de ces fonctions.

$upload_array ? qu'est-ce ? $_FILES ?
Si c'est ça, au moins pire du pire je ne récupère que le nom original.

public function verifUploadImage ($upload_array,$directory
$image_max_size)
{


(snip)
}

Et voici la méthode qui tente de vérifier si une image annoncée en est bien
une.

private function verifImage () {
/**
La vérification des fichiers binaires d'image se fait en contrôlant la
signature hexadécimale de début de fichier.
En analysant des images existantes il semble qu'en hexadécimal les débuts
de fichiers soient les suivants :
Jpeg : FFD8FF
PNG : 89504E470D
Gif : 474946383961 (Gif89) et 474946383761 (Gif87)
*/
$suf_mime = eregi_replace("^.*/","",$this->mime_type);



... heu ... et si mime_type n'est pas connu ?

if(file_exists($this->temporary_name)) {
$id = fopen($this->temporary_name,'rb');
$buffer = fread($id,6);
fclose($id);
}
$signature = bin2hex ($buffer);
$image_ok = false;
$result = array();


(snip)
$result[0] = $image_ok;
$result[1] = $info_message;
$result[2] = $warning_message;
$result[3] = $suffixe;
return $result;
} // fin de méthode verifImage

Si ça peut t'aider...



J'ai copié-collé dans un de mes forms de test d'upload et ...
ça n'affiche plus rien ... doit avoir une erreur dans le php.
(j'ai dû en désactiver la fonction car je n'ai pas de warning php)
(et je ne sais comment le remettre)

Cordialement



Merci.
Ne me reste qu'à comprendre comment on s'en sert ;-)
(je suis archi neuneu en php)

--
sm
Avatar
SAM
Le 10/4/09 3:12 PM, Olivier Miakinen a écrit :
Bonjour Stéphane,



Bonsoir Olivier,

Tu vois je tente encore une fois de m'y mettre. ;-)
(et tt de suite ça merdouille)

Le 04/10/2009 10:08, SAM a écrit :
Soit un formulaire avec un champ file nommé 'photo'





C'est pour mettre sur un site pages perso chez Free.

Je veux vérifier que c'est bien une image qui est envoyée

$ext_img = $_FILES['photo']['type'];

Le problème :
lors de mes essais certaines photos semblent ne pas communiquer leur
type (en particulier toutes celles de mon APN)



Comme d'hab, je ne pense pas que ce soit une très bonne idée de se baser
sur des infos provenant de l'extérieur, même si ce n'est pas le seul
contrôle.



Benoitement je pensais que ce $_FILES était de la magie PHP qui
analysait le fichier présenté (au moins son début où je pense qu'il
indique quoi qu'il est).

Quelle autre soluce pourrait assurer que le fichier uploadé est bien une
image ?



Tu peux regarder du côté des fonctions Exif :
http://fr.php.net/manual/fr/ref.exif.php



Ha! il me semble que j'avais entrevu ça (ou qque chose d'approchant)
mais je suppose qu'alors on uploade *tout* le fichier avant de l'autopsier ?

Ça m'ennuie un peu car l'upload autorisé est de 2Mo et de nos jours les
APN font facilement des images >5Mo. Il faudrait pouvoir savoir un peu
d'avance le poids du fichier, non ?
Ce que $_FILES['fichier']['size'] devait indiquer (sauf pour mes
photos, ce dont je les remecie sinon j'eusse fait confiance).

N'y a t'il pas moyen d'uploader un p'tit bout, de faire la vérif et, si
le poids (calculable par largeur/hauteur s'il n'est pas directement
donné) est dans la limite, reprendre ou continuer l'upload ?

Je crois aussi qu'il y a un timeout à 60 (secondes ?),
info() me dit :
max_execution_time 30
max_input_time 60
upload_max_filesize 2M
upload_tmp_dir no value <- que veut-ce dire ?
et pour l'exif :
EXIF Support enabled
EXIF Version 1.4 $Id: exif.c,v 1.118.2.37.2.4
2006/01/01 13:46:52 sniper Exp $
Supported EXIF Version 0220
Supported filetypes JPEG,TIFF
et pas de PNG ? de GIF ?


Il y a aussi ceci :
http://www.siteduzero.com/tutoriel-3-31523-exif-lire-les-infos-d-une-image.html



Ç'est super intéressant, mébon je veux juste savoir si c'est une image ;-)
Juste savoir si on n'essaie pas d'uploader une savonnette.
Et bien sûr avant de l'avoir sous le pied, avant de l'accepter.

Mais tu peux également demander à la bibliothèque GD de lire l'image
comme si c'était du gif, du jpeg ou du png, pour voir si ça marche :



Je pensais à ça pour la suite (redimensionnement en particulier).

http://fr.php.net/manual/fr/function.imagecreatefromgif.php
http://fr.php.net/manual/fr/function.imagecreatefromjpeg.php
http://fr.php.net/manual/fr/function.imagecreatefrompng.php

Cordialement,



à ++ je passe au post d'Alarch (qui m'a l'air de causer chinois).
--
sm
Avatar
Alarch
SAM wrote:


Ha! j'ai oublié de dire qu'il serait bien que je connaisse (d'avance ?)
le poids du fichier. Free semble n'autoriser que 2Mo en upload.

De laisser envoyer 2Mo pour que l'upload errorise ce n'est pas sympa
pour l'expéditeur.


[snip]
Merci.
Ne me reste qu'à comprendre comment on s'en sert ;-)
(je suis archi neuneu en php)



Ben tout le monde débute un jour, moi je fais un peu de php depuis des
années et à chaque fois qu'Olivier me répond c'est une page du manuel que
j'avais loupée, donc bien que sachant faire quelques trucs, je reste bien
en deça de gens comme lui, pour dire qu'on est toujours le neuneu de
quelqu'un ! ;-)

Déjà tu devrais lire en détail cette page et celles qui en dépendent.

http://fr.php.net/manual/fr/features.file-upload.php

Première chose pour limiter la taille modifier le php.ini, si tu es sous
Linux ou BSD c'est un fichier qui est dans le répertoire des configs c'est
à dire /etc, chez moi il est là : /etc/php5/cgi/php.ini mais comme tu as
sans doute php en module apache il est sans doute dans un autre répertoire
de /etc/ pour le trouver tu fais
find /etc -name "php.ini"
dans une console.

Je ne sais pas si l'on peut avoir la taille du fichier à envoyer avant de
l'envoyer, du moins du côté php, sans doute javascript pourrait t'envoyer
l'info côté client pour éviter de lancer tout le bazard si c'est voué à
échouer.

Je t'avais répondu de façon rapide ne sachant pas l'habitude que tu avais de
php. C'était pour te donner une idée générale des vérifs à faire. Et après
la réponse de Dominique, il faudrait remplacer mes bidouillages binaires
par le contôle des infos exim.

Sinon l'upload en php renvoit un tableau de données, comme tu le verras dans
la page que je t'indique. C'est ce qui te permet le traitement à la
réception.

Du coup il vaut peut-être mieux que tu essayes de pondre ton code toi même
si tu veux comprendre. Ma classe est un peu compliquée, elle fait d'autres
trucs comme tatouer l'image avec GD etc. et elle fait appel à des fichiers
de configuration externe car elle n'a pas été pensée pour être distribuée
hors de l'appli. Je veux bien te l'envoyer en privé (c'est gros), mais je
ne sais pas si mon code est assez propre pour des visées pédagogiques !

Bon courage et dis-nous la suite
Avatar
SAM
Le 10/5/09 12:16 PM, Alarch a écrit :
SAM wrote:

Ha! j'ai oublié de dire qu'il serait bien que je connaisse (d'avance ?)
le poids du fichier. Free semble n'autoriser que 2Mo en upload.

De laisser envoyer 2Mo pour que l'upload errorise ce n'est pas sympa
pour l'expéditeur.


[snip]
Merci.
Ne me reste qu'à comprendre comment on s'en sert ;-)
(je suis archi neuneu en php)



Ben tout le monde débute un jour,



Ça doit faire au moins 5 sinon 8 ans que je débute.
À chaque fois que je tente qque chose ça merdouille immanquablement.
Je tente un peu de dépatouiller la chose et devant la complexité du PHP,
le nombre de façons d'aborder le blème, les confusions des manuels en
lignes et commentaires associés (en pas fr ceux-là) je laisse en général
tomber, jusqu'à la prochaine idée (de 6 mois à 1 an).

à chaque fois qu'Olivier me répond c'est une page du manuel que
j'avais loupée,



Oh! Ce n'est pas parce que j'ai vu la page que j'ai compris comment m'en
servir ou que ça n'a pas kkbouillé encore pire ;-)

Déjà tu devrais lire en détail cette page et celles qui en dépendent.

http://fr.php.net/manual/fr/features.file-upload.php



Houlala !
Mais mon pôvre, ça doit bien faire 15 fois que je la regarde ;-)
Mais ils commencent par $_FILES['lefichier']
qui, chez moi, capote ... (au moins pour certaines de mes photos)

Je tourne en rond.
Je tourne en rond.
Je ne tourne plus en rond !!! cf tt en bas

Première chose pour limiter la taille modifier le php.ini, si tu es sous



Non je n'ai pas accès chez Free à l'ini qui est à 2Mo pour l'upload.

Je ne sais pas si l'on peut avoir la taille du fichier à envoyer avant de
l'envoyer, du moins du côté php, sans doute javascript pourrait t'envoyer
l'info côté client pour éviter de lancer tout le bazard si c'est voué à
échouer.



Non, JavaScript ne peut pas faire ça.
Et puis ce n'est pas + sérieux que d'accepter le fichier tel quel.

Sinon l'upload en php renvoit un tableau de données, comme tu le verras dans
la page que je t'indique. C'est ce qui te permet le traitement à la
réception.

Je veux bien te l'envoyer en privé (c'est gros), mais je
ne sais pas si mon code est assez propre pour des visées pédagogiques !



J'ai trouvé un truc qui me semble pas mal fait :
<http://www.miasmatech.net/scripts/upload/upload.php>
tant pour la qualité des vérifs que pour la pédagogie :
<http://www.miasmatech.net/scripts/article/article_content.php?article_id=2>
(je crois que je vais commencer à comprendre ce que classe veut dire)

mais le truc est pour PHP.5
me reste à trouver pour PHP.4

Bon courage et dis-nous la suite



Pour l'heure, rien de nouveau!

Le code :
print_r($_FILES['fichier']);
me donne :
Array
(
[name] => IMG_0647.JPG
[type] =>
[tmp_name] =>
[error] => 1
[size] => 0
)

et :
$mesg = 'Erreur! ';
$err = $_FILES['fichier']['error'];
switch($err) {
case 0: $mesg.='0 = tout est OK';
break;
case 1: $mesg.='1. Le fichier téléchargé excède la taille de
upload_max_filesize, configurée dans le php.ini.';
break;
case 2: $mesg.='2. Le fichier téléchargé excède la taille de
MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML. ';
break;
case 3: $mesg.='3. Le fichier n'a été que partiellement téléchargé.';
break;
case 4: $mesg.='4. Aucun fichier n'a été téléchargé.';
break;
case 6: $mesg.='6. Un dossier temporaire est manquant. Introduit en
PHP 4.3.10 et PHP 5.0.3.';
break;
case 7: $mesg.='7. Échec de l'écriture du fichier sur le disque.
Introduit en PHP 5.1.0.';
break;
case 8: $mesg.='8. L'envoi de fichier est arrêté par l'extension.
Introduit en PHP 5.2.0.';
break;
}
echo '<p>'.$mesg.'</p>';

Me donne :
Erreur! 1. Le fichier téléchargé excède la taille de
upload_max_filesize, configurée dans le php.ini.

Arrrggghhhh !
Éclair de génie (si, si !).
Après avoir combattu mon blocage sur les absents du $_FILES,
j'ai quand même vérifié l'ini de mon PHP ... l'upload y était limité là
aussi à 2Mo :-(
Passé à 6Mo, c'est maintenant OK, mes photos sont correctement analysées
par $_FILES

Ils pourraient tt de même prévenir que ['error'] peut cacher le reste ! :-(


S'cusez pour le dérangement.
Mébon, j'ai un peu du mal avec la philosophie PHP.
--
sm
Avatar
Alarch
SAM wrote:


Me donne :
Erreur! 1. Le fichier téléchargé excède la taille de
upload_max_filesize, configurée dans le php.ini.



Ben oui si il le dit ! Même si chez Free on ne peut pas le changer on doit
pouvoir le connaître.

Arrrggghhhh !
Éclair de génie (si, si !).
Après avoir combattu mon blocage sur les absents du $_FILES,
j'ai quand même vérifié l'ini de mon PHP ... l'upload y était limité là
aussi à 2Mo :-(
Passé à 6Mo, c'est maintenant OK, mes photos sont correctement analysées
par $_FILES

Ils pourraient tt de même prévenir que ['error'] peut cacher le reste !
:-(



Il me semble que dans ton cas ['error'] ne cachait rien mais au contraire
contenait les bonnes réponses non ?

Extrait de la doc :
"La variable MAX_FILE_SIZE ne peut pas spécifier une taille de fichier plus
grande que la taille qui a été fixée par **upload_max_filesize**, dans le
**php.ini**. La valeur par défaut est 2 megaoctets.
Si une limite de mémoire est activée, une plus grande valeur de
memory_limit peut être nécessaire. Assurez-vous d'avoir défini une valeur
pour memory_limit assez grande.
Si la valeur de max_execution_time est trop petite, le temps d'exécution du
script peut excéder cette valeur. Assurez-vous d'avoir défini une valeur
pour max_execution_time assez grande."

Donc c'est bien dans php.ini qu'il faut commencer par mettre son nez...

et puis les erreurs détaillées ici :

http://fr.php.net/manual/fr/features.file-upload.errors.php


S'cusez pour le dérangement.
Mébon, j'ai un peu du mal avec la philosophie PHP.



Là je ne sais pas si c'est vraiment une question de philosophie Php ça. Mais
tant mieux si ça marche.
Avatar
SAM
Le 10/5/09 6:01 PM, Alarch a écrit :
SAM wrote:


Me donne :
Erreur! 1. Le fichier téléchargé excède la taille de
upload_max_filesize, configurée dans le php.ini.



Ben oui si il le dit ! Même si chez Free on ne peut pas le changer on doit
pouvoir le connaître.



Oui, on le connait (je l'avais précisé de presqu'entrée de jeu).
C'est même mon 2è principal soucis.

Arrrggghhhh !
Éclair de génie (si, si !).
Après avoir combattu mon blocage sur les absents du $_FILES,





J'ai touj des blocages comme ça en PHP, je n'arrive pas bien à en
démêler les ficèles qui sont vraiment bien emberlificotées.

j'ai quand même vérifié l'ini de mon PHP ... l'upload y était limité là
aussi à 2Mo :-(
Passé à 6Mo, c'est maintenant OK, mes photos sont correctement analysées
par $_FILES

Ils pourraient tt de même prévenir que ['error'] peut cacher le reste !
:-(



Il me semble que dans ton cas ['error'] ne cachait rien mais au contraire
contenait les bonnes réponses non ?



Non juste une, les autres à vide.
Que l'on tourne ça comme l'on veut, en cas d'erreur il semblerait que
les autres items de $_FILES (sauf le nom d'origine) ne sont plus
relevés/communiqués.
Et ... bêtement (maintenant que je crois avoir capté) je voulais tt de
même obtenir ces renseignements. Le truc-bidulle m'enduisant d'erreur et
me faisant croire que j'avais un pb avec les fichiers.

Extrait de la doc :
"La variable MAX_FILE_SIZE ne peut pas spécifier une taille de fichier plus
grande que la taille qui a été fixée par **upload_max_filesize**, dans le
**php.ini**. La valeur par défaut est 2 megaoctets.



Boudiou! je n'ai peut-être pas lu/retenu tte la doc ! ;-)
C'est où ?

Si une limite de mémoire est activée, une plus grande valeur de
memory_limit peut être nécessaire. Assurez-vous d'avoir défini une valeur
pour memory_limit assez grande.



Ha ben non ça j'ai pas fait non plus. Qd même, si l'upload est limité
par ini, la mémoire doit bien en être avertie, non ? Qu'est-ce que c'est
que ces systèmes assistés ?!

Si la valeur de max_execution_time est trop petite, le temps d'exécution du
script peut excéder cette valeur. Assurez-vous d'avoir défini une valeur
pour max_execution_time assez grande."

Donc c'est bien dans php.ini qu'il faut commencer par mettre son nez...



Sauf qu'au final je n'aurai pas la main sur ce dernier.

et puis les erreurs détaillées ici :

http://fr.php.net/manual/fr/features.file-upload.errors.php



C'est bien en testant l'erreur que j'ai eu la solution (l'éblouissement).

S'cusez pour le dérangement.
Mébon, j'ai un peu du mal avec la philosophie PHP.



Là je ne sais pas si c'est vraiment une question de philosophie Php ça. Mais
tant mieux si ça marche.



Si je comprends bien, le PHP c'est tout simple mais si on veut que ça
fonctionne un peu il en faut 300 lignes juste pour mettre une photo sur
un site.
Et surtout on n'est pas aidé par tous les exemples fournis sur les
"sites d'aides" et qui ne sont pas satisfaisants (sinon même dangereux).

Bon, dès que j'ai un peu avancé avec mon machin, je viendrai le
soumettre à votre sagacité (en espérant que je n'aurai pas plus de 30
lignes)(va falloir écrire petit !)


Une question :
les vérifications par exif on les fait sur le fichier temporaire ?

Une autre :
je ne me souviens plus comment on explique au php.ini
que l'on veut les raccourcis
<? au lieu de <?php
et
<?= au lieu de <?php echo

--
sm
1 2