CGI: probleme html (firefox) et upload - Perl - Programmation
Marsh Posté le 16-06-2005 à 10:55:01
il faut que tu indique le type de document que tu envoi.
en haut de ton scrip, le premier print doit etre:
print "Content-Type: text/html\n\n";
en fait IE a "deviné" qu'il s'agissait de HTML, mais normalement il aurait du faire comme firefox et l'afficher tel quel
Marsh Posté le 16-06-2005 à 10:56:23
Tout d'abord, tu ferais mieux d'utiliser le module CGI en PERL, cela te faciliterait grandement la tache.
Voir : http://www.cpan.org
Ainsi, ton code avec le module CGI donnerait :
Code :
|
Ensuite, ta question est un problème HTML et non PERL. Ton script HTML regorge d'erreurs, par exemple le formulaire non terminé, pas de titre à la page, pas de nom de formulaire, et l'en-tête ne me parait pas correct.
Dans n'importe quelle page HTML, je vois plutôt un en-tête du style :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
Marsh Posté le 16-06-2005 à 11:04:49
pospos a écrit : il faut que tu indique le type de document que tu envoi. |
putain mais je vais pas bien moi en ce moment...
javais pas vu que le print text/html y etait deja...
desolé (remarque c'est peut etre un prob de majuscules? faut capitaliser Content-Type)
Marsh Posté le 16-06-2005 à 11:21:04
pospos a écrit : il faut que tu indique le type de document que tu envoi. |
J'ai donné ce renseignement.
Citation : module CGI en PERL |
Excuse moi Elmoricq, j'ai pas mit tout mon script perl car sinon ça aurait été trop big, mais j'utilise bien le module CGI, sans pour autant l'exploité comme toi.
Mon code html est effectivement très basic, mais c'etait juste pour un test. Par le biais de CGI Firefox et internet explorer fonctionne correctement.
Merci
Marsh Posté le 16-06-2005 à 11:25:12
Tu est obliger de mettre des print a gogo dans ce cas la ?
Je ne connais pas perl, mais je trouve cela exessif pour un meme résultat.
print " code html " ;
Marsh Posté le 16-06-2005 à 11:36:31
Badze a écrit : Tu est obliger de mettre des print a gogo dans ce cas la ? |
On peut même écrire ça de façon chouette de la manière suivante :
Code :
|
Marsh Posté le 16-06-2005 à 14:39:25
Merci pour ce rappel Elmoricq, c'est vrai que c'est bien utile comme ça
Autre question... peut on faire du php à la place du html?
Car en fait, j'ai une page html composé d'un formulaire et d'un champ permettant l'upload d'un fichier. Lorsque je valide mon formulaire, je lance mon script perl qui récupère les variables de mon formulaire. Après un traitement de mes variables, mon script a besoin ensuite du fichier que j'ai uploadé. Avant j'utilisé une page php pour traiter l'upload:
Code :
|
D'ou ma question, est ce que je peux mettre ce code dans mon script perl pour permettre l'upload de mon fichier lors de la validité de mon formulaire?
Marsh Posté le 16-06-2005 à 14:42:06
Oula suis fatigué, en fait je devrais plutot me tourner sur un moyen d'upload des fichier via perl... Une petit recherche s'impose....
Marsh Posté le 16-06-2005 à 14:43:14
Pourquoi ne gères-tu pas l'upload directement dans ton script PERL ?
EDIT : alors pour gérer l'upload, il faut :
1. Déclarer le formulaire HTML en "multipart", avec la ligne suivante :
Code :
|
2. Déclarer un champ pour que l'utilisateur définisse le fichier à importer :
Code :
|
(il y a d'autres propriétés de disponible, je pense notament à un filtre d'extensions il me semble)
3. Récupérer le fichier si l'utilisateur a soumis le formulaire avec son fichier de défini :
Code :
|
Toute la documentation sur le module CGI est accessible sur le site de CPAN :
http://search.cpan.org/~jhi/perl-5.8.0/lib/CGI.pm
Marsh Posté le 16-06-2005 à 17:07:04
Merci Elmoricq pour ton aide mais se que tu me suggères ne correspond pas tout à fait à mes attentes.
Apres une petit recherche et quelques essais, voila ou j'en suis.
Mon formulaire de test:
Code :
|
Mon script .pl pour l'upload que je vais rajouter par la suite au reste de mon script perl:
Code :
|
Le script fonction sauf qu'au lieu de garder le nom du fichier, il change son nom du style:
cgi-lib.2016.1. Comment faire pour que le nom du fichier reste intact lors de l'upload?
Merci
Marsh Posté le 16-06-2005 à 17:18:14
Code :
|
Ce module est dépassé et obsolète depuis... ouh la... trooooop longtemps !
Il faut utiliser CGI, et surtout pas cgi-lib, qui aurait dû se perdre dans les limbes de l'oubli voila quelques années.
Tiens, vu que CPAN a l'air de ne pas répondre aujourd'hui, j'ai trouvé la documentation en français, elle m'a l'air complète :
http://perl.enstimac.fr/ModulesFr/CGI.html
Marsh Posté le 16-06-2005 à 18:57:34
Bon il existe un module CGI::upload:
Code :
|
Maintenant comment l'utiliser avec un formulaire envoyé par html? ça je ne sais pas trop...
Marsh Posté le 16-06-2005 à 10:38:21
Bonjour à tous.
J'utilise un script perl pour recupérer les variables d'un formulaire afin ensuite d'executer des requetes via le module DBI de perl.
Cependant j'ai un petit problème avec Firefox à ce niveau:
Sous Internet Explorer, ma page html s'affiche correctement, le navigateur comprent le code html, tandis que sous firefox, il ne lie pas le code, il l'affiche juste.
Y-a t'il un probleme avec firefox et ce type d'utilisation?
Comment remédier à ce probleme?
Merci
Message édité par suomi le 16-06-2005 à 17:07:54