2012-03-20 18:15:53 +01:00
< ? php
//-----------------------------------------------------------
2013-11-05 17:23:47 +01:00
// Title : Email Poubelle
2012-03-20 18:15:53 +01:00
// Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html
2013-11-05 17:23:47 +01:00
// Author : David Mercereau - david [aro] mercereau [.] info
2012-03-20 18:15:53 +01:00
// Home : http://poubelle.zici.fr
2013-08-08 10:54:47 +02:00
// Date : 08/2013
2013-11-05 17:23:47 +01:00
// Version : 1.0
// Depend : Postifx (postmap command) php-pdo
2012-03-20 18:15:53 +01:00
//-----------------------------------------------------------
include_once ( './conf.php' );
2013-11-05 17:23:47 +01:00
define ( 'VERSION' , '1.0' );
2012-03-20 18:15:53 +01:00
2013-11-04 19:28:30 +01:00
//////////////////
// Init & check
//////////////////
if ( DEBUG ) {
error_reporting ( E_ALL );
ini_set ( 'display_errors' , 'On' );
echo '<div class="highlight-2">Debug activé</div>' ;
print_r ( $_REQUEST );
}
2013-11-05 17:23:47 +01:00
if ( defined ( DOMAIN )) {
exit ( '<div class="highlight-1">Erreur : Problème de configuration</div>' );
}
// check writable work directory
if ( ! is_writable ( DATA )) {
exit ( '<div class="highlight-1">Erreur : le répertoire de travail ne peut pas être écrit. Merci de contacter l\'administrateur</div>' );
}
2013-11-04 19:28:30 +01:00
// check alias file is_writable
2012-08-05 16:32:46 +02:00
if ( ! is_writable ( FICHIERALIAS )) {
2013-11-04 19:28:30 +01:00
exit ( '<div class="highlight-1">Erreur : le fichier d\'alias ne peut pas être écrit. Merci de contacter l\'administrateur</div>' );
2013-08-08 10:54:47 +02:00
}
2013-11-04 19:28:30 +01:00
// check blacklist file is_writable
2013-08-08 10:54:47 +02:00
if ( defined ( 'BLACKLIST' ) && ! is_readable ( BLACKLIST )) {
2013-11-04 19:28:30 +01:00
exit ( '<div class="highlight-1">Erreur : un fichier de blacklist est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur</div>' );
2013-08-08 10:54:47 +02:00
}
2013-11-04 19:28:30 +01:00
// check aliasdeny file is_writable
2013-08-08 10:54:47 +02:00
if ( defined ( 'ALIASDENY' ) && ! is_readable ( ALIASDENY )) {
2013-11-04 19:28:30 +01:00
exit ( '<div class="highlight-1">Erreur : un fichier d\'alias interdit est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur</div>' );
}
// Connect DB
2013-11-05 17:23:47 +01:00
try {
if ( preg_match ( '/^sqlite/' , DB )) {
$dbco = new PDO ( DB );
} else {
$dbco = new PDO ( DB , DBUSER , DBPASS );
}
$dbco -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
} catch ( PDOException $e ) {
die ( 'Connexion à la base ' . $e -> getMessage ());
}
// Create DB if not exists
try {
// status : 0=not verified - 3=disable - 5=active
$create = $dbco -> query ( " CREATE TABLE IF NOT EXISTS " . DBTABLEPREFIX . " alias (
id INTEGER PRIMARY KEY AUTO_INCREMENT ,
status INTEGER ( 1 ) NOT NULL ,
alias CHAR ( 150 ) NOT NULL UNIQUE ,
email CHAR ( 150 ) NOT NULL ,
dateCreat DATETIME NOT NULL ,
dateExpir DATETIME ,
comment TEXT ); " );
} catch ( PDOException $e ) {
echo '<div class="highlight-1">Erreur à l\'initialisation des tables. Merci de contacter l\'administrateur ' ;
if ( DEBUG ) { $e -> getMessage (); }
echo '</div>' ;
die ();
2012-08-05 16:32:46 +02:00
}
2013-11-04 19:28:30 +01:00
//////////////////
// Function
//////////////////
// Verification des emails
2012-08-05 16:32:46 +02:00
function VerifMXemail ( $email ) {
2013-11-04 19:28:30 +01:00
if ( CHECKMX ) {
$domaine = explode ( '@' , $email );
$r = new Net_DNS2_Resolver ( array ( 'nameservers' => array ( NS1 , NS2 )));
try {
$result = $r -> query ( $domaine [ 1 ], 'MX' );
} catch ( Net_DNS2_Exception $e ) {
return false ;
}
if ( $result -> answer ) {
return true ;
} else {
return false ;
}
} else {
return true ;
}
2012-05-15 21:29:38 +02:00
}
2012-08-05 16:32:46 +02:00
2013-11-04 19:28:30 +01:00
// postmap command
2012-08-05 16:32:46 +02:00
function UpdateVirtualDB () {
2013-11-05 17:23:47 +01:00
// @todo : créer le ficheir à partir de la base
//echo exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return);
2012-03-20 18:15:53 +01:00
}
2013-11-04 19:28:30 +01:00
// add new alias
2013-11-05 17:23:47 +01:00
function AjouterAlias ( $status , $alias , $email , $life , $comment ) {
global $dbco ;
$dateCreat = date ( 'Y-m-d H:i:s' );
if ( $life == 0 ) {
$dateExpir = NULL ;
} else {
$dateExpir = date ( 'Y-m-d H:i:s' , time () + $life );
}
$insertcmd = $dbco -> prepare ( " INSERT INTO " . DBTABLEPREFIX . " alias (status, alias, email, dateCreat, dateExpir, comment)
VALUES ( $status , '$alias' , '$email' , '$dateCreat' , '$dateExpir' , '$comment' ) " );
$insertcmd -> execute ();
if ( ! $insertcmd ) {
echo '<div class="highlight-1">Erreur pendant l\'ajout dans la base. Merci de contacter l\'administrateur ' ;
if ( DEBUG ) {
print_r ( $dbco -> errorInfo ());
}
echo '</div>' ;
} else {
return $dbco -> lastInsertId ();
}
// @todo : a faire
2012-03-20 18:15:53 +01:00
UpdateVirtualDB ();
}
2013-11-04 19:28:30 +01:00
// delete new alias
2012-08-05 16:32:46 +02:00
function SupprimerAlias ( $alias , $email ) {
2013-11-05 17:23:47 +01:00
// @todo : a faire
UpdateVirtualDB ();
}
// update alias status
function UpdateStatusAlias ( $id , $alias_full , $status ) {
global $dbco ;
try {
$updatecmd = $dbco -> prepare ( " UPDATE " . DBTABLEPREFIX . " alias SET status = $status WHERE id = $id AND alias = ' $alias_full ' " );
$updatecmd -> execute ();
} catch ( PDOException $e ) {
echo " DB error : " , $e -> getMessage ();
die ();
}
2012-03-20 18:15:53 +01:00
UpdateVirtualDB ();
}
2013-11-04 19:28:30 +01:00
// parse file for blacklist and aliasdeny
2013-08-08 10:54:47 +02:00
function parseFileRegex ( $file , $chaine ) {
$return = false ;
$handle = fopen ( $file , 'r' );
while ( ! feof ( $handle )) {
$buffer = fgets ( $handle );
$buffer = str_replace ( " \n " , " " , $buffer );
if ( $buffer ) {
if ( ! preg_match ( '/^(#|$|;)/' , $buffer ) && preg_match ( $buffer , $chaine )) {
$return = true ;
break ;
}
}
}
fclose ( $handle );
return $return ;
}
2013-11-04 19:28:30 +01:00
// Check blacklistemail
2013-08-08 10:54:47 +02:00
function BlacklistEmail ( $email ) {
if ( defined ( 'BLACKLIST' )) {
return parseFileRegex ( BLACKLIST , $email );
} else {
return false ;
}
}
2013-11-04 19:28:30 +01:00
// check aliasdeny
2013-08-08 10:54:47 +02:00
function AliasDeny ( $alias ) {
if ( defined ( 'ALIASDENY' )) {
return parseFileRegex ( ALIASDENY , $alias );
} else {
return false ;
}
}
2013-11-04 19:28:30 +01:00
//// A FAIRE :
// list alias
2013-08-08 10:54:47 +02:00
function ListeAlias ( $email ) {
2013-11-05 17:23:47 +01:00
// @todo : a faire
2013-08-08 10:54:47 +02:00
return ( $alias );
}
2013-11-05 17:23:47 +01:00
function SendEmail ( $recipient , $sujet , $message ) {
$header = 'From: ' . EMAILFROM . '\n' ;
$header .= 'MIME-Version: 1.0\n' ;
if ( preg_match ( '#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#' , $recipient )) {
$header = str_replace ( '\n' , '\r\n' , $header );
$message = str_replace ( '\n' , '\r\n' , $header );
}
mail ( $recipient , EMAILTAGSUJET . ' ' . $sujet , $message , $header );
}
function urlGen ( $act , $id , $alias_full ) {
$idUrl = base64_encode ( $id . ';' . $alias_full );
if ( URLREWRITE_DEBUT && URLREWRITE_FIN ) {
return URLREWRITE_DEBUT . $idUrl . URLREWRITE_FIN ;
} else {
return URLPAGE . " ?act= " . $act . " &value= " . $idUrl ;
}
}
//////////////////
// Admin function
//////////////////
function CheckUpdate () {
//$doc = file_get_contents('http://poubelle.zici.fr/ep_checkupdate');
//echo $doc;
}
2013-11-04 19:28:30 +01:00
//////////////////
// Start program
//////////////////
2012-03-20 18:15:53 +01:00
2013-11-04 19:28:30 +01:00
// Valid email process
2013-11-05 17:23:47 +01:00
if ( isset ( $_GET [ 'act' ]) && $_GET [ 'act' ] == 'validemail' && isset ( $_GET [ 'value' ])) {
$idUrl = explode ( ';' , base64_decode ( $_GET [ 'value' ]));
echo $dbco -> query ( " SELECT COUNT(*) FROM " . DBTABLEPREFIX . " alias WHERE id = ' " . $idUrl [ 0 ] . " ' AND status = 0 " ) -> fetchColumn ();
if ( $dbco -> query ( " SELECT COUNT(*) FROM " . DBTABLEPREFIX . " alias WHERE id = ' " . $idUrl [ 0 ] . " ' AND status = 0 " ) -> fetchColumn () != 0 ) {
UpdateStatusAlias ( $idUrl [ 0 ], $idUrl [ 1 ], 5 );
echo '<div class="highlight-3">Votre email poubelle <b>' . $idUrl [ 1 ] . '</b> est maintenant actif</div>' ;
2012-03-20 18:15:53 +01:00
} else {
2013-11-05 17:23:47 +01:00
echo '<div class="highlight-1">Erreur : ID introuvable ou déjà validé</div>' ;
2012-03-20 18:15:53 +01:00
}
2013-11-05 17:23:47 +01:00
} elseif ( isset ( $_GET [ 'dis' ])) {
// @todo fa faire
} elseif ( isset ( $_GET [ 'del' ])) {
// @todo fa faire
2013-11-04 19:28:30 +01:00
// list email process
2013-11-05 17:23:47 +01:00
} elseif ( isset ( $_GET [ 'list' ])) {
2013-08-08 10:54:47 +02:00
$email = strtolower ( $_REQUEST [ 'email' ]);
if ( ! filter_var ( $email , FILTER_VALIDATE_EMAIL )) {
echo '<div class="highlight-1">Erreur : Adresse email incorrect</div>' ;
} else if ( ! VerifMXemail ( $email )) {
echo '<div class="highlight-1">Erreur : Adresse email incorrect (2)</div>' ;
} else if ( ! preg_match ( '#\n[a-z0-9]+@' . DOMAIN . ' ' . $email . '#' , file_get_contents ( FICHIERALIAS ))) {
echo '<div class="highlight-1">Vous n\'avez encore aucun alias d\'actif</div>' ;
} else {
2013-11-05 17:23:47 +01:00
$header = 'From: ' . EMAIL_FROM . '\n' ;
$header .= 'MIME-Version: 1.0\n' ;
$message = 'Liste de vos redirections poubelles : \n' ;
2013-08-08 10:54:47 +02:00
foreach ( ListeAlias ( $email ) as $alias ) {
2013-11-05 17:23:47 +01:00
$message .= ' * ' . $alias . '\n' ;
2013-08-08 10:54:47 +02:00
}
2013-11-05 17:23:47 +01:00
$message .= 'Pour supprimer un email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n' ;
$message .= " \t * " . URLPAGE . '\n' ;
SendEmail ( $email , 'Liste des alias' , $message );
2013-11-04 19:28:30 +01:00
echo '<div class="highlight-3">Un email vous a été adressé avec la liste de vos emails poubelles actifs.</div>' ;
2013-08-08 10:54:47 +02:00
}
2013-11-05 17:23:47 +01:00
// Form
} elseif ( isset ( $_POST [ 'email' ]) && isset ( $_POST [ 'alias' ])) {
$alias = strtolower ( $_POST [ 'alias' ]);
$email = strtolower ( $_POST [ 'email' ]);
$domain = $_POST [ 'domain' ];
$life = $_POST [ 'life' ];
$comment = $_POST [ 'comment' ];
// Check form
2012-03-20 18:15:53 +01:00
if ( ! filter_var ( $email , FILTER_VALIDATE_EMAIL )) {
echo '<div class="highlight-1">Erreur : Adresse email incorrect</div>' ;
2012-05-15 21:29:38 +02:00
} else if ( ! VerifMXemail ( $email )) {
echo '<div class="highlight-1">Erreur : Adresse email incorrect (2)</div>' ;
2012-03-20 18:15:53 +01:00
} else if ( ! preg_match ( '#^[\w.-]+$#' , $alias )) {
2013-11-05 17:23:47 +01:00
echo '<div class="highlight-1">Erreur : Format de l\'email poubelle incorrect</div>' ;
} else if ( ! preg_match ( '#' . $domain . '#' , DOMAIN )) {
echo '<div class="highlight-1">Erreur : ce domain n\'est pas pris en charge</div>' ;
2013-08-08 10:54:47 +02:00
} else if ( AliasDeny ( $alias )) {
2012-08-05 16:32:46 +02:00
echo '<div class="highlight-1">Erreur : email poubelle interdit</div>' ;
2013-08-08 10:54:47 +02:00
} else if ( BlacklistEmail ( $email )) {
2013-11-04 19:28:30 +01:00
echo '<div class="highlight-1">Erreur : vous avez été blacklisté sur ce service</div>' ;
2013-11-05 17:23:47 +01:00
// add
} elseif ( isset ( $_POST [ 'add' ])) {
if ( $dbco -> query ( " SELECT COUNT(*) FROM " . DBTABLEPREFIX . " alias WHERE alias = ' " . $alias . '@' . $domain . " ' " ) -> fetchColumn () != 0 ) {
2013-11-04 19:28:30 +01:00
echo '<div class="highlight-1">Erreur : cet email poubelle est déjà utilisé</div>' ;
2012-03-20 18:15:53 +01:00
} else {
2013-11-05 17:23:47 +01:00
if ( $dbco -> query ( " SELECT COUNT(*) FROM " . DBTABLEPREFIX . " alias WHERE email = ' " . $email . " ' AND status = 5 " ) -> fetchColumn () != 0 ) {
AjouterAlias ( 5 , $alias . '@' . $domain , $email , $life , $comment );
echo '<div class="highlight-3">Votre email poubelle <b>' . $alias . '@' . $domain . ' > ' . $email . '</b> est maintenant actif</div>' ;
2012-03-20 18:15:53 +01:00
} else {
2013-11-05 17:23:47 +01:00
$lastId = AjouterAlias ( 0 , $alias . '@' . $domain , $email , $life , $comment );
$message = " Confirmation de la création de votre redirection email poubelle : " ;
$message = $alias . '@' . $domain . ' => ' . $email . " \n " ;
$message = " Cliquer sur le lien ci-dessous pour confirmer : \n " ;
$message .= " \t * " . urlGen ( 'validemail' , $lastId , $alias . '@' . $domain ) . " \n " ;
$message .= " Pour suspendre temporairement cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n " ;
$message .= " \t * " . urlGen ( 'dis' , $lastId , $alias . '@' . $domain ) . " \n " ;
$message .= " Pour supprimer cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n " ;
$message .= " \t * " . urlGen ( 'del' , $lastId , $alias . '@' . $domain ) . " \n " ;
SendEmail ( $email , 'Confirmation alias ' . $alias , $message );
2013-11-04 19:28:30 +01:00
echo '<div class="highlight-2">Votre email (' . $email . ') nous étant inconnu, une confirmation vous a été envoyé par email.</div>' ;
2012-03-20 18:15:53 +01:00
}
}
2013-11-05 17:23:47 +01:00
// delete
} else if ( isset ( $_POST [ 'del' ])) {
if ( $id = $dbco -> query ( " SELECT id FROM " . DBTABLEPREFIX . " alias WHERE email = ' " . $email . " ' AND alias = ' " . $alias . '@' . $domain . " ' " ) -> fetchColumn ()) {
$message = " Confirmation de la création de votre redirection email poubelle : " ;
$message = $alias . '@' . $domain . ' => ' . $email . " \n " ;
$message = " Cliquer sur le lien ci-dessous pour confirmer la suppression : \n " ;
$message .= " \t * " . urlGen ( 'del' , $id , $alias . '@' . $domain ) . " \n \n " ;
$message .= " Sinon pour suspendre temporairement cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : \n " ;
$message .= " \t * " . urlGen ( 'dis' , $id , $alias . '@' . $domain ) . " \n " ;
SendEmail ( $email , 'Suppression de l\'alias ' . $alias , $message );
echo '<div class="highlight-2">Un email de confirmation vient de vous être envoyé.</div>' ;
2012-03-20 18:15:53 +01:00
} else {
2013-11-05 17:23:47 +01:00
echo '<div class="highlight-1">Erreur : impossible de trouver cet email poubelle</div>' ;
}
// disable
} else if ( isset ( $_POST [ 'dis' ])) {
// @todo a faire
if ( $return = DisableAlias ( $alias . '@' . $domain , $email )) {
echo '<div class="highlight-3">Votre email poubelle <b>' . $alias . '@' . $domain . '</b> est maintenant suspendu !</div>' ;
} else {
echo '<div class="highlight-1">Erreur : ' . $return . '</div>' ;
2012-03-20 18:15:53 +01:00
}
}
2013-11-05 17:23:47 +01:00
if ( isset ( $_POST [ 'memory' ])) {
setcookie ( " email " , $email , time () + 31536000 );
} else if ( isset ( $_COOKIE [ 'email' ])) {
unset ( $_COOKIE [ 'email' ]);
}
2012-03-20 18:15:53 +01:00
}
2013-11-04 19:28:30 +01:00
// Close connexion DB
2013-11-05 17:23:47 +01:00
$dbco = null ;
2013-11-04 19:28:30 +01:00
//////////////////
// Printing form
//////////////////
2013-11-05 17:23:47 +01:00
2012-03-20 18:15:53 +01:00
?>
2013-11-05 17:23:47 +01:00
2012-03-20 18:15:53 +01:00
< form action = " <?= URLPAGE?> " method = " post " >
2013-11-05 17:23:47 +01:00
< div id = " form-email " >
< label for = " email " > Votre email réel : </ label >
< input type = " text " name = " email " < ? php if ( isset ( $_COOKIE [ 'email' ])) { echo 'value="' . $_COOKIE [ 'email' ] . '"' ; } ?> id="input-email" size="24" border="0" onkeyup="printForm()" onchange="printForm()" />
< input class = " button2 " type = " submit " name = " list " id = " button-list " value = " Lister " />
< input type = " checkbox " name = " memory " id = " check-memory " < ? php if ( isset ( $_COOKIE [ 'email' ])) { echo 'checked="checked" ' ; } ?> /> Mémoriser
</ div >
< div id = " form-alias " >
< label for = " alias " > Nom de l ' email poubelle : </ label >
< input type = " text " name = " alias " id = " input-alias " size = " 24 " border = " 0 " onkeyup = " printForm() " onchange = " printForm() " placeholder = " Ex : jean-petiteannonce " /> @< ? php
$domains = explode ( ';' , DOMAIN );
if ( count ( $domains ) == 1 ) {
echo DOMAIN . '<input type="hidden" value="' . DOMAIN . '" name="domain" id="input-domain" />' ;
} else {
echo '<select name="domain" id="input-domain">' ;
foreach ( $domains as $one_domain ) {
echo '<option value="' . $one_domain . '">' . $one_domain . '</option>' ;
}
echo '</select>' ;
}
?>
< select name = " life " id = " input-life " >
< option value = " 0 " > Illimité </ option >
< option value = " 7200 " > 2 heure </ option >
< option value = " 21600 " > 6 heures </ option >
< option value = " 86400 " > 1 jour </ option >
< option value = " 604800 " > 7 jours </ option >
< option value = " 1296000 " > 15 jours </ option >
< option value = " 2592000 " > 30 jours </ option >
< option value = " 7776000 " > 90 jours </ option >
</ select >
</ div >
< div id = " form-comment " >
< label for = " comment " > Un commentaire pour l ' ajout ? ( pour votre mémoire ) </ label >
< input type = " text " name = " comment " size = " 54 " placeholder = " Ex : Inscription sur zici.fr " />
</ div >
< div id = " form-submit " >
< input class = " button " type = " submit " id = " button-add " name = " add " value = " Activer " /> -
< input class = " button " type = " submit " id = " button-dis " name = " dis " value = " Susprendre " /> -
< input class = " button " type = " submit " id = " button-del " name = " del " value = " Supprimer " />
</ div >
2012-03-20 18:15:53 +01:00
</ form >
2013-11-05 17:23:47 +01:00
< script type = " text/javascript " >
function validateEmail ( email ) {
var re = /^ (([ ^<> ()[ \ ] \\ . ,; : \s @ \ " ]+( \ .[^<>()[ \ ] \\ .,;: \ s@ \" ]+)*)|( \" .+ \" ))@(( \ [[0-9] { 1,3} \ .[0-9] { 1,3} \ .[0-9] { 1,3} \ .[0-9] { 1,3} \ ])|(([a-zA-Z \ -0-9]+ \ .)+[a-zA-Z] { 2,})) $ /;
return re . test ( email );
}
function printForm () {
console . log ( " appel de la fonction : " + document . getElementById ( 'input-email' ) . value + document . getElementById ( 'input-alias' ) . value );
if ( validateEmail ( document . getElementById ( 'input-email' ) . value ) && document . getElementById ( 'input-alias' ) . value != '' ) {
console . log ( " Les 2 sont OK " );
document . getElementById ( 'input-alias' ) . disabled = false ;
document . getElementById ( 'input-domain' ) . disabled = false ;
document . getElementById ( 'button-list' ) . disabled = false ;
document . getElementById ( 'button-add' ) . disabled = false ;
document . getElementById ( 'button-dis' ) . disabled = false ;
document . getElementById ( 'button-del' ) . disabled = false ;
document . getElementById ( 'input-life' ) . disabled = false ;
document . getElementById ( 'form-comment' ) . style . display = " block " ;
} else if ( validateEmail ( document . getElementById ( 'input-email' ) . value )) {
console . log ( " email ok " );
document . getElementById ( 'input-alias' ) . disabled = false ;
document . getElementById ( 'input-domain' ) . disabled = false ;
document . getElementById ( 'button-list' ) . disabled = false ;
document . getElementById ( 'input-life' ) . disabled = false ;
document . getElementById ( 'form-comment' ) . style . display = " display " ;
document . getElementById ( 'button-add' ) . disabled = true ;
document . getElementById ( 'button-dis' ) . disabled = true ;
document . getElementById ( 'button-del' ) . disabled = true ;
document . getElementById ( 'input-life' ) . disabled = true ;
document . getElementById ( 'form-comment' ) . style . display = " none " ;
} else {
console . log ( " rien OK " );
document . getElementById ( 'input-alias' ) . disabled = true ;
document . getElementById ( 'input-domain' ) . disabled = true ;
document . getElementById ( 'button-list' ) . disabled = true ;
document . getElementById ( 'button-add' ) . disabled = true ;
document . getElementById ( 'button-dis' ) . disabled = true ;
document . getElementById ( 'button-del' ) . disabled = true ;
document . getElementById ( 'input-life' ) . disabled = true ;
document . getElementById ( 'form-comment' ) . style . display = " none " ;
}
}
printForm ();
</ script >
2013-11-04 19:28:30 +01:00
< p > Version < ? = VERSION ?> - Créé par David Mercereau sous licence GNU GPL v3</p>
< p > Télécharger et utiliser ce script sur le site du projet < a target = " _blank " href = " http://forge.zici.fr/p/emailpoubelle-php/ " > emailPoubelle . php </ a ></ p >