IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

FORMMAIL


Sujet :

Web Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Par défaut FORMMAIL
    Bonjour!

    Apres de maintes et maintes recherches sur le net, des demandes a droite à gauche dans mes connaissances et beaucoup de temps passé à me creuser la tete, je place mon dernier espoir dans ce forum.
    Le probleme est simple, je ne connais pas le perl, j'ai beau etre doté de la logique informatique et de beaucoup de patience mais j'avoue etre impuissant... Ma seule utilité du perl est l'envoi de formulaire a une adresse mail.
    J'ai cherché à comprendre, je m'y suis énormément interessé, j'ai lu pas mal de topics sur des forums mais j'ai vraiment du mal.
    En gros, ma question est simple, existe t'il des putains de scripts tout faits ou je n'ai qu'a indiquer l'adresse email de destination et l'adresse du répertoire unix sendmail de mon serveur?
    Merci encore, et j'espere à bientot!!

    Fursy

  2. #2
    Membre éclairé Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Par défaut
    Voila un script que j'utilise moi même il marche très bien pour le send mail je sais pas si on peut faire sans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form action="form_mail.cgi" method="post">
    <input type="hidden" name="destinataire" value="tolmail@gnagna.com">
    <input type="hidden" name="requis" value="nom, email, message"> <!-- champq obligatoire -->
     
    <input type="text" name="nom">
    <input type="text" name="email">
    <textarea rows="12" name="message" cols="36"></textarea>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    #!/usr/bin/perl
     
    #---------------------------#
    # DEBUT DE LA CONFIGURATION #
    #---------------------------#
     
    $mailCmd = '/usr/sbin/sendmail';
     
    $page = "page.html";
     
    $remerciement = "Votre message a bien &eacute;t&eacute; envoy&eacute;";
     
    $confirm="non";
     
    $texte_confirm = "Merci de confirmer l'envoi du fomulaire contenant les informations suivantes :<br><br><br>";
     
    # Adresses des sites d'où l'execution de ce script est possible :
    @sites =
    	(
    	'http://TONSITE.COM',
    	);
     
     
     
     
    #------------------------------------#
    #         Programme principale       #
    #------------------------------------#
     
     
    if ($ENV{'HTTP_REFERER'}) 
    {
    foreach $executeur (@sites)
    	{
    	if ($ENV{'HTTP_REFERER'} =~ /$executeur/i) { $url_ok = '1'; last; }
    	}
    }
    else { $url_ok = '1'; }
     
    if ($url_ok != 1) { &erreur ("Vous n'êtes pas autorisé à utiliser ce script à cette adresse<br><a href=$ENV{'HTTP_REFERER'}>$ENV{'HTTP_REFERER'}</a>"); }
     
    read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
    if ($ENV{'QUERY_STRING'})
    	{$buffer = "$buffer\&$ENV{'QUERY_STRING'}";}
    @pairs = split(/&/,$buffer);
    foreach $pair (@pairs) 
      {
      ($name, $value) = split(/=/, $pair);
      $name =~ tr/+/ /;
      $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
      if ($name eq 'destinataire' && ($value)) 
      	{ $destinataire = $value; }
      elsif ($name =~ /email/i && ($value)) { $expediteur = $value; $Form{$name} = "$value"; }
      elsif ($name eq 'sujet' && ($value)) 	{ $sujet = $value; }
      elsif ($name eq 'confirm' && ($value)) { $confirm = $value; }
      elsif ($name eq 'requis' && ($value)) { @requis = split(/\,/,$value); } 
      elsif ($Form{$name} && ($value)) { $Form{$name} = "$Form{$name}, $value"; }
      elsif ($value) { $Form{$name} = $value; }
      }
     
    $domain = $ENV{'SERVER_NAME'};
    $n_script = $ENV{'SCRIPT_NAME'};
     
    $script ="http://$domain$n_script";
     
    if (!$destinataire) { &erreur ("ERREUR : <br><br>Vous n'avez pas donné de destinaire dans votre formulaire<br>Veuillez verifier dans votre formulaire que le champs 'destinataire' y figure bien.<br><br>Utilisez la touche retour de votre navigateur pour retourner au formulaire."); }
    elsif ($destinataire !~ /\S+?\@\S+?(\.\S+?)+/) { &erreur ("ERREUR : <br><br>Le format de l'adresse de destinataire de votre formulaire n'est pas valide.<br>Veuillez verifier dans votre formulaire que le champs caché 'destinataire' y figure bien ou qu'il ne comporte pas d'erreur.<br><br>Utilisez la touche retour de votre navigateur pour retourner au formulaire."); }
    elsif (!$sujet) { $sujet = "Sujet non spécifié"; }
     
    foreach $champs (@requis)
    	{
    	$champs =~ s/^\s+//;
            $champs =~ s/\s+$//;
    	if (!$Form{$champs}) { $erreur++; $liste_champs .= "$champs "; }
    	}
     
    if ($erreur == 1) { &erreur ("Le champs <b>$liste_champs</b> est obligatoire, mais vous ne l'avez pas remplis.<br><br>Utilisez la touche retour de votre navigateur pour retourner au formulaire."); } 
    elsif ($erreur > 1) { &erreur ("Les champs <b>$liste_champs</b> sont obligatoires, mais vous ne les avez pas remplis.<br><br>Utilisez la touche retour de votre navigateur pour retourner au formulaire."); } 
     
    if ($confirm =~ /oui/i)
    {
    $txt .= "$texte_confirm\n";
    $txt .= "<FORM ACTION=$script METHOD=POST>\n";
    $txt .= "<input type=hidden name=confirm value=1>\n";
    $txt .= "<input type=hidden name=destinataire value=\"$destinataire\">\n";
    $txt .= "<input type=hidden name=sujet value=\"$sujet\">\n";
    $txt .= "<input type=hidden name=email value=\"$expediteur\">\n";
    foreach $name (sort {uc($a) cmp uc($b)} keys %Form)
    	{
    	$Form{$name} =~ s'"'&quot;'g;
    	$Form{$name} =~ s/\</&lt;/g;
    	$Form{$name} =~ s/\>/&gt;/g;
    	$Form{$name} =~ s/\r\n/<BR>/g;
    	$txt .= "\n<input type=hidden name=$name value=\"$Form{$name}\">\n";
    	$txt .= "<b>$name</b> :<br>$Form{$name}<br><br>\n";
    	}
    $txt .= "<input type=submit value=\"Confirmer l'envoi\">";
    $_[0]="$txt";
    &erreur;
    }
     
    open MAIL , "|$mailCmd -t" || &erreur ("Ne peux pas ouvrir $mailCmd!");
    print MAIL "To: $destinataire\r\n";
    print MAIL "From: $expediteur\r\n";
    print MAIL "Subject: $sujet\r\n\n"; 
    foreach $name (sort {uc($a) cmp uc($b)} keys %Form)
    	{
    	$Form{$name} =~ s'&quot;'"'g;
    	$Form{$name} =~ s/&lt;/\</g;
    	$Form{$name} =~ s/&gt;/\>/g;
    	$Form{$name} =~ s/<BR>/\n/g;
    	print MAIL "$name :\n$Form{$name}\n\n";	
    	}
    print MAIL "\n\n------------------------------------------------\n";
    print MAIL "Adresse IP de l'expediteur : $ENV{'REMOTE_ADDR'}\n";
    print MAIL "Navigateur utilisé : $ENV{'HTTP_USER_AGENT'}\r\n";
    if ($referer) { print MAIL "Formulaire envoyé de : $ENV{'HTTP_REFERER'}\n"; }
    close(MAIL);
    &erreur ("$remerciement");
    exit;
     
    sub erreur
    {
    print "Content-type: text/html\n\n";
    open(TEMPLATE,"$page");
    while (<TEMPLATE>){ $template .= $_; }
    close(TEMPLATE);
    $template =~ s/%%%MESSAGE%%%/$_[0]/g;
    print $template;
    exit;
    }

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Par défaut
    super!!
    Merci merci merci et merci!
    Quelques petites questions tout de meme.

    Je viens de regarder à la volée le script, et je ne vois aucun endroit où mettre mon adresse email...
    J'ai pu conclure quelques petits trucs

    Toutes les lignes précédées d'un # ne sont que des annotations et ne rentrent pas dans le code à proprement parlé?
    Je suppose que le script repose sur le principe des variables, qui sont ensuite appellées dans le code?
    Tout ceci peut paraitre stupide, mais je ne connais strictement rien en programmation...
    Donc, si mon résonnement est juste, je dois renseigner une variable indiquant l'adresse email a laquelle le script doit etre envoyé?
    Si tu as le temps et surtout la patience, et admettons que tu m'aide beaucoup (pour ne pas dire que tu me le fasse - tu en a deja bien assez fait) voici mon adresse email contact@enfance-graphisme.com et l'adresse du répertoire unixsendmail de mon serveur: usr/sbin/sendmail

    Ensuite, une fois que le script sera fait, je devrais le placer dans le répertoire cgi-bin de mon serveur?
    Dans mon code html, la simple action "formmail -----method:post" suffit?
    Mon formulaire est déja tout fait avec les champs obligatoires etc...
    Je n'ai juste qu'a mettre le <form action="form_mail.cgi" method="post"> dans mon code?

    Il y a une chose que je ne comprends pas (excusez mon ignorance... ), c'est la partie ou l'on renseigne les sites sur lesquels l'execution du script est possible...Quelle est l'utilité? j'imagine bien que ce n'est pas contre le vol du script (qui de toute maniere n'aurai aucun sens et qui en plus, me semble inaccessible vu où il est stocké). Cela veut t'il dire que je peux appeller le script à partir du formulaire d'un autre de mes sites? Si c'est le cas, pourquoi ne pas mettre également le fichier sur le second serveur?

    Pas mal de questions donc, mais je cherche a comprendre, ca m'embeterai d'avoir autant cherché et n'avoir rien appris.
    Quoi qu'il en soit, que tu réponde ou non à ce message, je tiens a te dire un grand merci pour ton aide, et te souhaiter une bonne continuation.

    Merci mille fois.
    Fursy

Discussions similaires

  1. [MySQL] Formmail.php et mysql
    Par PaulK dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 03/03/2010, 18h36
  2. Configuration FORMMAIL-VF
    Par NICOSNE dans le forum Autres langages pour le Web
    Réponses: 2
    Dernier message: 18/10/2008, 22h53
  3. Configuration FORMMAIL-VF
    Par NICOSNE dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/03/2008, 10h02
  4. [Mail] Ajout d'un lien dans un scipt formmail.php
    Par PaulK dans le forum Langage
    Réponses: 1
    Dernier message: 13/11/2007, 22h59
  5. [Mail] formmail
    Par curci dans le forum Langage
    Réponses: 29
    Dernier message: 21/02/2006, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo