FTLS.org 
Francais     English
 
 
Accueil
 
 Linux
Introduction
Liens
 
 Initiation
Internet
HTML
CGI
Perl
 
 Archives
Java
Perl Tools
Scripts CGI
Scripts PHP
 
 Calculatrices
HP 48
TI 92
 
 Gratuit du Net
A Gratuit
Comparatifs
Se divertir
 
 Aide Webmasters
Trucs & Astuces
JavaScript
 
 Site
Partenaires
Contact
 
 Powered by
linux
 

Initiation


Introduction au CGI (Common Gateway Interface)



9. Exemples en Perl

    Le Perl étant le langage le plus adapté et le plus simple pour la création de CGI, car il offre l'avantage d'être un script (pas besoin de compilation), un traitement des chaînes de caractères très puissant. C'est pour cela que j'ai choisi de faire les exemples avec.
    Si vous désirez de plus amples renseignements sur ce langage, vous trouverez une petite initiation sur http://www.ftls.org/fr/initiation/perl/
    Bien entendu l'ensemble de ces scripts peuvent être traduit dans un autre langage...

    9.1 Guestbook (livre d'or)

      9.1.1 Principe

          Le script ajoute à l'emplacement spécifié (par <!-- Ajouter Ici-->) d'un fichier les informations entées grâce au formulaire suivant :

      <FORM METHOD=POST ACTION="/cgi-bin/guestbook.pl">
      Nom:<INPUT NAME="name"><BR>
      Localitée:<INPUT NAME="location"><BR>
      <BR>Commentaires:<BR>
      <TEXTAREA NAME="comments">
      </TEXTAREA>
      <INPUT TYPE="SUBMIT" NAME="Ok">
      </FORM>
          Voici le type de fichier résultat.

      <HR>
      Voici les entrée de mon guestbook<BR>
      <BR>
      Essais, essais...<BR>
      <BR>
      <B>Frédéric TYNDIUK<BR>
      Bordeaux, France</B>
      <HR>
      Un commentaire.<BR>
      <BR>
      Bye<BR>
      <BR>
      <B>Frédéric TYNDIUK<BR>
      Bordeaux, France</B>

      9.1.2 Le script

      #!/usr/bin/perl

      require "cgi-lib.pl";
      &ReadParse(*FORM);
      # Recupère les informations provenat du formulaire dans %FORM

      # Chemain complet du fichier guestbook
      $fichier="/home/httpd/html/guestbook.html";

      print "Content-type: text/html\n\n";
      print "<HTML><HEAD><TITLE>Merci</TITLE></HEAD>\n";
      print "<BODY BGCOLOR='#FFFFFF'><H1>Merci d'avoir ajouter votre commentaire</H1>\n";
      print "</BODY></HTML>\n";

      # Remplace tous les \n (retours chariots par <BR>
      chop($FORM{'comments'});
      $FORM{'comments'} =~ s/\n/<BR>\n/g;
      $Result = "$FORM{'comments'}     <B><BR>$FORM{'name'}, $FORM{'location'}</B><BR>     <!-- Ajouter Ici-->\n";

      # Ouvre le fichier
      open(GUESTBOOK,"<$fichier") || &CgiDie ("Erreur d'ouverture de $fichier, Erreur: $!");
      $data = join("", );
      close GUESTBOOK;

      $data =~ s/<!-- Ajouter Ici-->/$Result/;
          # Remplace <!-- Ajouter Ici--> par les informations envoiyée.

      # Sauvegarde du résultat
      open(GUESTBOOK,">$fichier") || &CgiDie ("Erreur d'écriture de $fichier, Erreur: $!");
      print GUESTBOOK $data;
      close GUESTBOOK;

        Cette exemple est simpliste, vous trouverez une version élaborée sur http://www.ftls.org/fr/exemples/cgi/

    9.2 Envoyer un mail

      9.2.1 Le Formulaire

      <FORM METHOD=POST ACTION="/cgi-bin/email.pl"> Name : <INPUT NAME="name"><BR> Addresse : <INPUT NAME="address"><BR> Ville <INPUT NAME="city"><BR> Code Postal <INPUT NAME="zip"><BR> Tel : <INPUT NAME="phone"><BR> E-Mail : <INPUT NAME="email"><BR> <BR> <INPUT TYPE="SUBMIT" VALUE="Envoyer"> <INPUT TYPE="RESET" VALUE="Effacer"> </FORM>

      9.2.2 Script 1

      #!/usr/bin/perl

      require "cgi-lib.pl";
      &ReadParse(%FORM);
      # Recupère les informations provenat du formulaire dans %FORM

      # Ouvre un Pipe avec le commande mail (Unix)
      open(MAIL,"|/usr/sbin/sendmail username\@host.com")     || die "Peut pas ouvrir sendmail : $!\n";

      # Envoie les informations
      print MAIL <<"EOF";
      From: Postmaster\@host.com (Administrateur du mail)
      To: username\@host.com
      Subject: Test Formulaire Mail
      Mime-Version: 1.0\nContent-Type: text/plain; charset=iso-8859-1
      Content-Transfer-Encoding: 8bit

      Salut,

      Ceci est un exemple d'envoie d'E-Mail par formulaire
      Voici les informations envoyée :

          Nom: $FORM{"name"}
          Addresse: $FORM{"address"}
          Ville: $FORM{"city"}
          Code Postal: $FORM{"zip"}
          Tel: $FORM{"phone"}
      Email: $FORM{"email"}

      EOF
      close(MAIL);

      print <<"EOF";
      Content-type: text/html

      <HTML><BODY>
      <H1>Merci $FORM{"name"}.</H1>
      <H2>Les informations ont été envoyée avec sucès via E-Mmail</H2>
      </BODY></HTML>
      EOT

      9.2.3 Script 2

          Perl intègre un certain nombre de module ou package, dont un permettant d'envoyer des Mails voici donc un exemple utilisant le package Mail::Mailer.

      #!/usr/bin/perl

      use Mail::Mailer; # Utilisation du package Mail::Mailer.

      require "cgi-lib.pl";
      &ReadParse(%FORM);
      # Recupère les informations provenat du formulaire dans %FORM

      # Ouvre Mail
      $mailer = Mail::Mailer->new();
      $mailer->open({ From => "Postmaster\@host.com",
              To        => "username\@host.com",
              Subject => "Test Formulaire Mail",
                      }) || die "Can't open: $!\n";


      # Envoie les informations
      print $mailer <<"EOF";


      Salut,

      Ceci est un exemple d'envoie d'E-Mail par formulaire
      Voici les informations envoyée :

          Nom: $FORM{"name"}
          Addresse: $FORM{"address"}
          Ville: $FORM{"city"}
          Code Postal: $FORM{"zip"}
          Tel: $FORM{"phone"}
      Email: $FORM{"email"}

      EOF
      $mailer->close();

      print <<"EOF";
      Content-type: text/html

      <HTML><BODY>
      <H1>Merci $FORM{"name"}.</H1>
      <H2>Les informations ont été envoyée avec sucès via E-Mmail</H2>
      </BODY></HTML>
      EOT

    9.3 Autres exemples

        Dans la section Exemples : Scripts CGI de mon site, se trouve près de 15 scripts CGI qui peuvent vous servir d'exemples, de plus il existe une multitudes de site proposant des annuaires de scripts CGI dans lesquels vous trouverez sûrement votre bonheur.



 
© Copyright 2000 FTLS (Tyndiuk Frédéric). All rights reserved.
Last Update 08/03/2000 - Send all comments to webmaster@ftls.org