#!/usr/bin/perl
use strict;
use vars qw(%form %CONF $VERSION $DATA_DIR $FONT);
print "Content-type: text/html\n\n"; # On affiche l'en-tête HTML indispensable
##### CONFIG ###################################
$VERSION='2.0'; # 30/04/2003
$DATA_DIR='pg-recommander-data';
################################################
##############################################################################
# Ceci est un script CGI en Perl, réalisé par Sébastien Joncheray. #
# Vous pouvez l'utiliser gratuitement, à la condition expresse et #
# non négociable de ne pas le modifier du tout, ni de le réutiliser/recopier #
# en tout ou partie, revendre, louer, redistribuer, etc. #
# Un droit d'utilisation gratuite vous est accordé. Tous les autres droits #
# sont réservés. Toute contrefacon fait l'objet de poursuites. Nous vous #
# fournissons gratuitement ce script de qualité,merci de respecter le travail#
# de l'auteur. Pour nous contacter si besoin, voyez sur www.perl-gratuit.com #
##############################################################################
# IL EST PAR-DESSUS TOUT INTERDIT DE MODIFIER LES MENTIONS DE L'AUTEUR #
# (COPYRIGHT, SITE DE L'AUTEUR,ETC). CELA EST LA CONTREPARTIE DE LA GRATUITé #
##############################################################################
# De nombreux autres scripts perl en francais, sont disponibles gratuitement #
# sur notre site : http://www.perl-gratuit.com #
# #
# En cas de difficultés d'installations veuillez consultez les FAQs et autres#
# sections d'aide sur www.perl-gratuit.com, avant d'envoyer un E-Mail SVP... #
##############################################################################
# Tous droits de modification/distribution/vente strictement réservés #
##############################################################################
%form=&receive_getpost;
&init;
if(($form{'email_dest'} ne '') || ($form{'email_visiteur'} ne '') || ($form{'nom_dest'} ne '') || ($form{'nom_visiteur'} ne '')) { # Si envoi du formulaire
##################################
#### Quelques vérifications : ####
##################################
if ($form{'nom_visiteur'} eq '') { &print_out("$CONF{thefont}You did not write your name..."); }
if ($form{'email_visiteur'} eq '') { &print_out("$CONF{thefont}You did not write your email adress..."); }
if ($form{'nom_dest'} eq '') { &print_out("$CONF{thefont}You did not write the recipient name..."); }
if ($form{'email_dest'} eq '') { &print_out("$CONF{thefont}You did not write the recipient email adress..."); }
## on vérifie les adresses E-Mail données
if (!&verify_email($form{'email_visiteur'})) { &print_out("$CONF{thefont}Your email adress $form{'email_visiteur'} is not correct."); }
if (!&verify_email($form{'email_dest'})) { &print_out("$CONF{thefont}The recipient email adress $form{'email_dest'} is not correct."); }
## On vérifie que le message personnalisé n'est pas trop important:
if (length($form{'message'}) > 2000) { &print_out("$CONF{thefont}The personnal message you wrote is to long (2000 caract. maximum)."); }
$form{'message'}=~ s/\r\n/\n/g;
#### Envoi Email au destinataire ####
if (length($form{'message'}) > 5) { # si message perso, on l'ajoute
$CONF{'MESSAGE_DEST'}.="\n\nMESSAGE ADDED BY [nom_visiteur]:\n".('-' x 30)."\n$form{'message'}\n";
}
&send_email($CONF{'EMAIL_WEBMASTER'},$form{'email_dest'},'Recommanded site',&remplir_template($CONF{'MESSAGE_DEST'}));
### Envoi confirmation visiteur si besoin ###
if ($CONF{'NOTIFY_VISITEUR'} == 1) {
&send_email($CONF{'EMAIL_WEBMASTER'},$form{'email_visiteur'},'Recommanded site',&remplir_template($CONF{'MESSAGE_VISITEUR'}));
}
### Envoi notification webmaster si besoin ###
if ($CONF{'NOTIFY_WEBMASTER'} == 1) {
&send_email($CONF{'EMAIL_WEBMASTER'},$CONF{'EMAIL_WEBMASTER'},'[PG-RECOMMANDER]',"
Ceci est un E-Mail automatique de PG-RECOMMANDER pour vous informer que
$form{'nom_visiteur'} ($form{'email_visiteur'})
a recommandé votre site à :
$form{'nom_dest'} ($form{'email_dest'})\n
Adresses sauvegardées sans doublon, stats mises à jour.\n
Fin du message.");
}
#### SAUVEGARDE INFOS VISITEUR ####
{
my $buf=quotemeta($form{'email_visiteur'});
if (open(COLLVRW,"+<$DATA_DIR/collecte_visiteur.dat")) {
flock(COLLVRW,2);
seek(COLLVRW,0,0);
if ( scalar(grep(/^$buf\|/, $CONF{thefont}
Thank you $form{'nom_visiteur'} ! Bienvenue dans l'auto-installation de "$CONF{'CGI_NAME'}" ! $FONT Vous éxécutez ce script CGI Perl pour la première fois.
Afin de faciliter la mise en place de ce script sur votre site, l'installation-configuration
est guidée et automatisée par étapes successives. Un fichier de configuration va être créé,
un choix de mot de passe administrateur vous sera demandé, puis une page de choix de configuration
vous sera présentée. Nous vous conseillons fortement ensuite de consulter la section de documentation
inclue.
On your demande, an email has been send to $form{'nom_dest'} ($form{'email_dest'}) on your name to recommand this site.
RETURN
error reading post data
"); die("Error reading 'POST' data\n"); }
} elsif ($ENV{'REQUEST_METHOD'} eq 'GET') {
$data=$ENV{'QUERY_STRING'};
}
foreach $pair (split('&',$data)) {
my ($name,$value)=split('=',$pair);
$name=~ tr/\0//d; $value=~ tr/\0//d;
$name =~ tr/+/ /; $name =~ s/%([0-9a-fA-F]{2})/chr hex($1)/ge;
$value=~ tr/+/ /; $value=~ s/%([0-9a-fA-F]{2})/chr hex($1)/ge;
$postdata{$name}=$value;
}
return %postdata;
}
################################################
#### ATTENTION, réutilisation/recopie du ####
#### code source interdite et illégale ####
################################################
sub print_out {
my ($msg)=@_;
## ATTENTION, si vous modifiez ou supprimez les lignes ci-dessous, vous ne #
## respectez pas les conditions d'utilisation gratuite de ce programme, et #
## vous vous en servez de manière illégale ! Merci de respecter le travail #
## de l'auteur ! Merci de votre compréhension. #
my $out=$CONF{'TEMPLATE_STD'} || (print "Le modèle d'affichage aux visiteurs est absent.
Veuillez vous rendre dans l'administration, section de paramétrage : vérifiez et validez la configuration SVP." and exit(0));
$out=~ s/\[message\]/$msg/gs || (print "Le modèle d'affichage aux visiteurs ne contient pas le tag spécial [message]
Veuillez vous rendre dans l'administration, section de paramétrage : vérifiez et validez la configuration SVP." and exit(0));print "$out$message
Ce script n'est pas fait pour fonctionner sur serveur windows! mail non envoyé!
" and return;}
open (MAIL, "|$CONF{'MAILPROG'} -t -oi -oem");# Appel du programme sendmail (PIPE)
print MAIL ("To: $to\n");
print MAIL ("From: $from\n");
print MAIL ("Subject: $subject\n\n");
print MAIL ("$message");
close (MAIL); # On referme le canal de communication avec sendmail, et le mail part...
}
################################################
#### ATTENTION, réutilisation/recopie du ####
#### code source interdite et illégale ####
################################################
sub remplir_template {
my ($msg)=@_;
## ATTENTION, si vous modifiez ou supprimez les lignes ci-dessous, vous ne #
## respectez pas les conditions d'utilisation gratuite de ce programme, et #
## vous vous en servez de manière illégale ! Merci de respecter le travail #
## de l'auteur ! Si vous souhaitez modifier ces lignes, il vous faudra #
## aquérir une licence payante. Merci de votre compréhension. #
$msg=~ s/\[email_dest\]/$form{email_dest}/gs;
$msg=~ s/\[email_visiteur\]/$form{email_visiteur}/gs;
$msg=~ s/\[nom_dest\]/$form{nom_dest}/gs;
$msg=~ s/\[nom_visiteur\]/$form{nom_visiteur}/gs;
$msg.="\n\n\n".'_' x 46 ."\nPG-RECOMMANDER. Script CGI Perl of recommandation\navailable on http://www.perl-gratuit.com \n";
return ($msg);
## ATTENTION, si vous modifiez ou supprimez les lignes ci-dessus, vous ne #
## respectez pas les conditions d'utilisation gratuite de ce programme, et #
## vous vous en servez de manière illégale ! Merci de respecter le travail #
## de l'auteur ! Si vous souhaitez modifier ces lignes, il vous faudra #
## aquérir une licence payante. Merci de votre compréhension. #
}
################################################
################################################
####### #######
####### ADMINISTRATION #######
####### #######
################################################
sub init {
%CONF=();
$CONF{'CGI_NAME'}='PG-Recommander'; # Nom du CGI: NE PAS CHANGER SINON ERREURS...(noms images)
$CONF{'CGI_DESC'}="Recommandation de votre site"; # Description du CGI: NE PAS CHANGER SINON ERREURS...
$CONF{'IMGCGI_URL'}='http://img-scripts.perl-gratuit.com';
$CONF{'SERVER_NAME'}=($ENV{'SERVER_NAME'} || $ENV{'HTTP_HOST'});
$CONF{'CGI_URL'}=($ENV{'REQUEST_URI'} || $ENV{'SCRIPT_NAME'});
$CONF{'CGI_URL'}=~ s/\?.*//gs;
$CONF{'CGI0_URL'}="http://".$CONF{'SERVER_NAME'}.$CONF{'CGI_URL'}; # URL complète, à utiliser pour visiteurs only (valeur par défaut)
$FONT="";
## Vérif que le répertoire des données existe ##
if (! -e "$DATA_DIR") {
&msg_fin("ERREUR !","Pour faire fonctionner ce CGI, il vous faut créer, dans le répertoire où se trouve
ce script, le sous-répertoire $DATA_DIR
N'oubliez pas de lui attribuer CHMOD 777 (tous droits de lecture,écriture,éxécution)
si votre serveur est de type Unix.
Pour plus d'informations sur 'CHMOD', voyez sur notre site dans les fiches pratiques/FAQ.");
}
## Vérif que le fichier de configuration existe ##
if (! -e "$DATA_DIR/config.dat") {
open(TESTW,">$DATA_DIR/config.dat") || (&msg_fin("ERREUR !","Impossible de créer le fichier $DATA_DIR/config.dat : $!
Vérifiez le CHMOD 777 du répertoire $DATA_DIR"));
close(TESTW);
eval{ chmod(0777,"$DATA_DIR/config.dat");};
&msg_fin("Auto-installation",qq|
Toute cette procédure vous permet une mise en place aisée, sans besoin d'intervenir manuellement
dans les fichiers et répertoires de données de ce script.
$FONTVeuillez maintenant actualiser cette page pour continuer SVP...
(cliquez sur le bouton "Actualiser" de votre navigateur)
Conditions d'utilisation gratuite :
$FONT Au bas des pages générées par ce script vous verrez un copyright et la mention de l'auteur (nom et lien vers notre site).
Un droit d'utilisation gratuite de ce script CGI Perl vous est accordé à la condition expresse de ne pas le modifier du tout (y compris et tout particulièrement ces copyrights et mentions de l'auteur), ni de le réutiliser/recopier en tout ou partie, revendre, louer, redistribuer, etc. Tous les droits autres que l'utilisation gratuite sont réservés (nous contacter au besoin).
Tout simplement, merci de respecter le travail de l'auteur afin que nous puissions continuer à vous proposer de tels scripts.
$FONTVeuillez maintenant actualiser cette page pour continuer SVP...
(cliquez sur le bouton "Actualiser" de votre navigateur)
Sécurité de votre répertoire des données
$FONT Certains serveurs peu ou mal sécurisés permettent l'accès, le listing et la consultation des fichiers à l'intérieur de la section "cgi-bin" des sites hébergés.
Afin d'empêcher tout accès par la navigateur dans votre répertoire des données $DATA_DIR un fichier spécial ".htaccess" vient d'être automatiquement créé avec les directives-serveurs adéquates.
Selon votre serveur, il se peut que vous ne puissiez pas voir le .htaccess par FTP. Dans ce cas, consultez la page d'informations correspondante dans la section Fiches Pratiques de notre site.
$FONTVeuillez maintenant actualiser cette page pour continuer SVP...
(cliquez sur le bouton "Actualiser" de votre navigateur)
| $CONF{'CGI_NAME'} : $titre |
$tip
|
| Script CGI Perl gratuit disponible sur perl-gratuit.com. v$VERSION © |
| Vos paramètres : | |
| $FONT E-Mail administrateur : | $FONT $tmpl{EMAIL_WEBMASTER} |
| $FONT Notifications au Webmaster : | $FONT $tmpl{NOTIFY_WEBMASTER} |
| $FONT Notifications au visiteur : | $FONT $tmpl{NOTIFY_VISITEUR} |
| $FONT Emplacement sendmail : | $FONT $tmpl{MAILPROG} |
| $FONT Police de caractères : | $FONT $tmpl{FONT_FACE}, taille:$tmpl{FONT_SIZE}, couleur:$tmpl{FONT_COLOR} |
| $FONT Adresses collectées : | $FONT $tmpl{nb_visiteur} adresses de visiteurs $tmpl{nb_dest} adresses de destinataires |
$FONT Choisissez votre nouveau mot de passe Administrateur de ce script (4 à 8 caractères).
\n"); } ################################################ #### ATTENTION, réutilisation/recopie du #### #### code source interdite et illégale #### ################################################ sub admin_changepass_do { if (length($form{'new_passwd'}) < 4) { &msg_fin("ERREUR !","Le mot de passe $form{new_passwd} fait moins de 4 caractères, ce qui est dangereux !");} if ($form{'new_passwd'} ne $form{'new_passwdbis'}) { &msg_fin("ERREUR !","Les deux cases de mot de passe ne sont pas identiques");} $CONF{'CPASSWD'}=crypt($form{'new_passwd'},'aa'); open (PASSW,">$DATA_DIR/passwd.dat") || (&msg_fin("ERREUR !","Impossible d'enregistrer dans le fichier $DATA_DIR/passwd.dat ($!), veuillez vérifier le chmod 777 du répertoire $DATA_DIR: $!")); print PASSW "$CONF{'CPASSWD'}"; close (PASSW); eval{ chmod(0666,"$DATA_DIR/passwd.dat");}; $form{'PASSWD'}=$form{'new_passwd'}; &msg_fin("Mot de passe Administrateur modifié", "\n"); } ################################################ #### ATTENTION, réutilisation/recopie du #### #### code source interdite et illégale #### ################################################ sub admin_param { my (%tmpl); if (!$CONF{'config_param'}) { $CONF{'NOTIFY_WEBMASTER'}=1; $CONF{'NOTIFY_VISITEUR'}=1; $CONF{'FONT_FACE'}='Arial'; $CONF{'FONT_SIZE'}=2; $CONF{'FONT_COLOR'}='#000000'; $CONF{'MESSAGE_DEST'}=qq|[nom_dest],\n\n[nom_visiteur] ([email_visiteur]) vous envoie\nce message pour vous recommander d'aller voir le site:\nhttp://www.votre-site-ici.com\n\nVous trouverez sur ce site :\n - des infos sur...\n - des services concernant...\nVous souhaitant bonne visite,\n\nLe webmaster|; $CONF{'MESSAGE_VISITEUR'}=qq|[nom_visiteur],\n\nCeci est un E-Mail automatique pour confirmer que suite\nà votre demande, un E-Mail à été envoyé à [nom_dest]\n([email_dest]) pour recommander le site :\nhttp://www.votre-site-ici.com\n\nEn vous remerciant,\n\nLe Webmaster.\n|; } # default-getback template if ($CONF{'TEMPLATE_STD'} eq '') { $CONF{'TEMPLATE_STD'}=qq|\n\n$FONT Le mot de passe pour l'accès Administrateur a été modifié et est maintenant $form{'new_passwd'}. Attention, il est sauvegardé de façon cryptée. Vous ne pourrez pas (ce programme non plus) le décrypter. Si vous l'oubliez, lorsque vous tenterez d'accéder ici avec un mauvais mot de passe, un message vous expliquera comment faire.
\n\n
$FONT Paramètres de configuration enregistrés avec succès !
Cette page vous indique en temps réel s'il existe une version plus récente de ce script CGI Perl sur notre site perl-gratuit.com. Si vous constatez que c'est le cas, vous pouvez aller y consulter le détail des ajouts ou corrections éventuelles de ce CGI, et télécharger/installer la nouvelle version.
| Version utilisée ici : | $VERSION |
| Dernière version disponible : | ![]() |
$FONT
Remarque éventuelle sur la dernière version :
Vous trouverez la dernière version disponible sur Perl-Gratuit.com
Informations sur l'utilisation de $CONF{CGI_NAME} :
Accès à l'administration :
Pour accéder à la section d'administration de $CONF{CGI_NAME} rendez-vous à l'URL exacte :
http://$ENV{SERVER_NAME}$CONF{CGI_URL}?admin
Mettez cette URL dans vos favoris pour ne pas l'oublier ! Votre mot de passe sera ensuite demandé.
Intégration dans votre site :
Vous avez deux manières possibles d'intégrer ce CGI à votre site web :
- Soit vous faites un lien direct vers l'URL de ce script CGI Perl, celui-ci affichera alors le
formulaire demandant les informations nécessaires.
URL : $CONF{'CGI0_URL'}
- Soit vous recopiez et intégrez dans une ou plusieurs de vos pages web, le formulaire dont le code HTML est
indiqué ci-dessous. Libre à vous d'en personnaliser l'apparence, mais attention à ne pas modifier les champs:
Copyright - Licence d'utilisation :
Un droit d'utilisation gratuite de ce script CGI Perl vous est accordé à la condition expresse de ne pas
le modifier du tout, ni de le réutiliser ou recopier en tout ou partie, revendre, louer, redistribuer, etc.
Tous les droits autres que l'utilisation gratuite sont réservés (nous contacter au besoin).
Toute contrefaçon ou autre violation des droits de propriété intellectuelle fait l'objet de poursuites.
IL EST PAR-DESSUS TOUT INTERDIT DE MODIFIER LES MENTIONS DE L'AUTEUR (COPYRIGHT, NOM ET LIEN VERS LE SITE
DE L'AUTEUR,ETC). CECI EST LA CONTREPARTIE DE LA GRATUITÉ.
Tout simplement, merci de respecter le travail de l'auteur... afin que nous puissions continuer à vous
proposer de tels scripts CGI Perl.
Version PRO disponible :
Ce script CGI existe en version PRO, dédiée à un usage professionnel. Principales caractéristiques :
- aucune mention de l'auteur ni copyright visible par le visiteur.
- personnalisation complète de l'affichage pour une bonne intégration à votre site.
- assistance, support technique privilégié et ultra-prioritaire, documentation complète en ligne.
- installation offerte sur demande.
- nombreuses fontionnalités supplémentaires, etc...
Pour consulter le détail de la version PRO de ce script CGI Perl et en acquérir éventuellement une licence,
merci de vous rendre sur notre autre site: Perl-PRO.com
\n"; print "
" if (($form{'export_format'}==4) || ($form{'export_format'}==1));
## Liste :
open (COLLR,"$DATA_DIR/collecte\_$form{'export_type'}.dat") || (&msg_fin("ERREUR !","Impossible de lire $DATA_DIR/collecte\_$form{'export_type'}.dat: $!"));
while ($line=) {
chomp($line);
($email,$nom)=split(/\|/o,$line);
if ($form{'export_format'}==1) { # importation dans PG-MailingList PRO
print "$line\n";
} elsif ($form{'export_format'}==2) { # Outlook/Outlook Express
print "$nom<$email>; ";
} elsif ($form{'export_format'}==3) { # Netscape Mail
print "$nom<$email>, ";
} elsif ($form{'export_format'}==4) { # CSV
print "$email\t$nom\n",
}
$nb++;
}
close(COLLR);
#### Fin de la page
print " " if (($form{'export_format'}==4) || ($form{'export_format'}==1));
print ("$FONT Cette section vous indique depuis quelles pages de votre site les visiteurs ont utilisé le formulaire de recommandation.
Nombre total d'utilisations de ce CGI: $total
| $_ | $stats{$_} (". int(0.5+($stats{$_}/$total)*100) ." %) |
$FONT Les statistiques ont été réinitialisées avec succès !