Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2011, 22h23   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut fichier joint de tout type dans un mail

Bonsoir,

je souhaite faire un script qui permette à l'utilisateur de joindre à son mail un fichier de tout typr (doc, ppt, xls, txt, gif, jpg, etc., etc.). Je sais que dans le header du mail, il y a une ligne pour préciser le type du fichier joint par ex:
Code php :
$message.= 'Content-Type: image/jpeg; name='.$base."\n";
, mais comment faire ? Par exemple, dans les logiciels de messagerie, il n'est nul besoin de préciser le type du fichier joint...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 22h56   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
en effet.
Les logiciels de messagerie utilisent une détection automatique de mime (finfo) ce qui rend la détection dépendante du paramétrage du serveur ou se base sur l'extension de fichier ce qui est encore plus arbitraire.
La question portait bien sur le mime et pas sur comment faire une pièce jointe?
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 23h04   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
La question portait bien sur le mime et pas sur comment faire une pièce jointe?
Oui, sur le mime (je ne savais pas que ça s'appelait comme ça), car je sais joindre un fichier au mail, si le mime est connu : donc, comment le détecter ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 23h11   #4
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
hum, il va falloir utiliser phpversion() et traiter deux cas...

php 5.3 http://fr.php.net/manual/fr/function.finfo-file.php
avant http://fr.php.net/manual/fr/function...ntent-type.php

si tu n'as pas acces à cette fonction ça va être plus délicat. (au pire tu fais comme tous les site qui gere des cv, liste d'extention autorisée, détection d'extention et association en dur entre extention et mime.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 23h16   #5
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
bonsoir,

il existe, à ma connaissance, 4 façon de faire. Le problème, c'est qu'il est quasi impossible de dire laquelle sera vraiment efficace, c'est pourquoi il faut combiner les tentatives de reconnaissance.
  • MIME detection with Fileinfo PECL extension
  • MIME detection with UNIX file() command (seulement si tu as la main sur un serveur de type Linux ou autre UNIX
  • MIME detection with mime_magic (content_type du document)
  • MIME detection with getimagesize() (seulement pour les images)

je te laisse chercher de l'info sur les moyens de les utiliser en php, il y a pas mal d'exemple sur la toile....

bon courage
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 17h07   #6
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
(au pire tu fais comme tous les site qui gere des cv, liste d'extention autorisée, détection d'extention et association en dur entre extention et mime.
Je prends cette option d'autant plus que je ne sais pas chez quel hébergeur ce sera (je développe pour qqun d'autre). J'ai donc codé un petit truc pour extraire l'extension, mais ça ne marche pas et je ne comprends pas :
mon code :
Code :
1
2
3
4
5
 $format="%s.%s";
 $nom=$_FILES['file']['name'];
 echo "nom=".$nom."<br>";
 $nb=sscanf($nom,$format,$nomfile,$ext);
 echo "ext=".$ext."<br>";
et un résultat :
Qu'est-ce qui ne va pas ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 17h23   #7
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Code :
1
2
$ext='';
if(($p=strrpos($nom,'.'))!==false)$ext=substr($nom,$p+1);
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 17h29   #8
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Bonsoir,

Code :
1
2
3
4
5
6
7
 
$format="%[^.].%s";
 
$nom=$_FILES['file']['name'];
echo "nom=".$nom."<br>";
$nb=sscanf($nom,$format,$nomfile,$ext);
echo "ext=".$ext."<br>";
[edit]
Mais attention, tu récupères le fichier d'un formulaire, rien n'empêche le contributeur de changer l'extension du fichier, et là...

c'est pourquoi il vaut mieux travailler avec les méthodes précédemment citées.
[/edit]

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 17h55   #9
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
J'ai pris ça :
, vu que c'est bcp plus proche de ce que j'avais fait. Mais pourquoi %s.%s ne marche pas ?
(Et tanpis pour l'utilisateur qui changera l'extension du fichier : ça ne se fait pas...au besoin, je rajouterai un msg pour dire que c'est interdit)
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 18h03   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
pour extraire l'extension c'est pathinfo
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 22h27   #11
Membre Expert
 
Inscription : septembre 2010
Messages : 1 234
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 234
Points : 1 554
Points : 1 554
Effectivement si tu ne sais pas sur quel serveur va être héberger le site, il est encore un peu tôt pour utiliser finfo_file qui n'est disponible qu'avec php5.3. Pour l'instant j'utilise aussi le pathinfo qui est très pratique bien que moins sécurisant qu'un finfo_file
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h28.


 
 
 
 
Partenaires

Hébergement Web