Formulaire anti-spam sans captchca
Hors ligneVerso Le 24/05/2013 à 09:51 Profil de Verso Configuration de Verso

Bonjour tout le monde, smiley

 

Cela faisait un moment que je ne vous avais pas posé de question.

 

Voilà  sur un de mes sites j'ai installé un annuaire "YourPHPAnnuraire (catégorizator)" donc un script ancien qui n'est plus mis à jour.

Or depuis un mois le voilà submergé d'inscriptions non conformes, sans aucun doute faites par des robots.(plus de 200 par jour)

J'aimerai installer un anti-spam sans captchca, genre champ caché ou token caché.

Or ce script étant ancien et étant moi-même TRES débutante en PHP je ne parviens pas à trouver ou installer un "truc" qui fonctionne.

Voici le code de ma page submit.php :

 

<?php
//Proposition de site dans l'annuaire

include("data_bd_annuaire.php"); //variables de l'annuaire
include("functions.php"); //fonctions de l'annuaire

$id_cat = isset($_REQUEST['id_cat']) ? (int)$_REQUEST['id_cat'] : 0;

//connexion a la BD
$lk = connection_BD();

if (!empty($id_cat))
{
    //creation des requetes
    $sql = "SELECT cat_name, can_add FROM $T_categories WHERE id = '$id_cat' ";
    //envoi des requetes
    $res = send_sql($sql,"trouver le nom de la catégorie et si on peut proposer un site (annuaire)");
    //pas de fin de la connexion

    if (mysql_num_rows($res)) //si on a bien trouve la catégorie
    {
        $resultat = mysql_fetch_array($res,MYSQL_ASSOC);
        $cat_name = $resultat["cat_name"];
        $can_add = $resultat["can_add"];
    }
    else//on a chipote a la categorie dans l'url
    {
        header("Location: index.php");
        exit;
    }
}
// on va chercher les infos de l'annuaire
$sql_admin = "SELECT use_newsletter, func_mail FROM $T_infos "; //pour afficher la demande d'infos
$res_admin = send_sql($sql_admin,"trouver les infos pour le maximum de présences et l'utilisation de la newsletter");

$resultat_admin = mysql_fetch_array($res_admin,MYSQL_ASSOC);
$use_newsletter = $resultat_admin["use_newsletter"];
$func_mail_ok = $resultat_admin["func_mail"];

?>
<html>
<head>
<title>Soumettre un site dans l'annuaire</title>
<script language="JavaScript" src="js_annuaire.js"></script>
<link type="text/css" href="annuaire.css" rel="stylesheet">
<?php
//fichier qui contient vos meta-tags et tout ce qui doit venir dans la partie HEAD de vos pages
include("meta.php");
?>
</head>
<body>
<?php
//fichier qui contient tout ce qui doit venir avant le code de l'annuaire (menu de gauche....)
include("before.php");

include ("haut.php"); //lien divers de l'annuaire (top clics, top votes, ajout,...)
?>
<center>
<span class="titre_annuaire">
Proposer un site
</span>
</center>
<?php
//un visiteur vient de soumettre son site
//il faut qu'il soit valider par l'administrateur et
//il faut aussi lui envoyer un email pour le prevenir que son site est en attente
//donc le nom du webmaster et son email sont importantes et doivent etre remplis
$action = isset($_POST['action']) ? $_POST['action'] : '';
if ($action == "submit")
{
    // recuperation des donnees
    $nom_proprio = isset($_POST['nom_proprio']) ? $_POST['nom_proprio'] : '';
    $email_proprio = isset($_POST['email_proprio']) ? $_POST['email_proprio'] : '';
    $titre = isset($_POST['titre']) ? $_POST['titre'] : '';
    $url = isset($_POST['url']) ? $_POST['url'] : '';
    $description = isset($_POST['description']) ? $_POST['description'] : '';
    $add2newsletter = isset($_POST['add2newsletter']) ? (int)$_POST['add2newsletter'] : 0;
    //verification de tous les champs (on ne quitte pas sechement l'execution en cas d'erreur...)
    est_vide($nom_proprio,"Vous n'avez pas rempli votre nom !",true);
    email_valide($email_proprio,true);
    est_vide($titre,"Vous n'avez pas rempli le titre du site !",true);
    url_valide($url,true);
    est_vide($description,"Vous n'avez pas rempli la description du site !",true);
    est_trop_long($description,255,"Votre description",true);

    //connexion a la BD (va etre utile pour verifier la presence de l'url et avant ca aller chercher les infos de l'admin)
    //on est deja connecte
    //creation de la requete d'administration
    $sql_admin = "SELECT max_presence, auto_validate, email_master, titre_site, url_rep FROM $T_infos ";
    //envoi de la requete
    $res_admin = send_sql($sql_admin,"trouver les infos pour l'ajout du site");

    $result_admin = mysql_fetch_array($res_admin);
    $auto_validate = $result_admin["auto_validate"];
    $email_master = $result_admin["email_master"];
    $titre_site = $result_admin["titre_site"];
    $url_rep = $result_admin["url_rep"];
    $max_presence = $result_admin["max_presence"];

    //on cherche si l'url n'est pas deja presente dans les tables (la fonction exit si probleme)
    if (cherche_presence_url($url,$id_cat,$max_presence))
    {
        ?>
        <br><br>
        <a href="index.php">Retour à l'annuaire</a>
        <?php
        include("after.php");
        exit;
    }

    if (!get_magic_quotes_gpc())
    //on rajoute des slash pour les magic_quote en OFF
    {
        $nom_proprio = addslashes($nom_proprio);
        $titre = addslashes($titre);
        $description = addslashes($description);
    }
    //on enleve les caracteres speciaux et les balises html
    $nom_proprio = $nom_proprio;
    $titre = $titre;
    $description = $description;
    
    //si tous les champs sont biens remplis
    //on peut ajouter le site dans la table des sites en attente de validation
    
    //creation des requetes
    if ($auto_validate)
    //directement accepte et donc dans la table des sites
    { $sql = "INSERT INTO $T_sites (id_cat,titre,description,url,nom_proprio,email_proprio,date_validation) VALUES ('$id_cat','$titre','$description','$url','$nom_proprio','$email_proprio',CURRENT_DATE) "; }
    else //dans la table des sites en attente
    { $sql = "INSERT INTO $T_sites_in_wait (id_cat,titre,description,url,nom_proprio,email_proprio,date_soumission) VALUES ('$id_cat','$titre','$description','$url','$nom_proprio','$email_proprio',CURRENT_DATE) "; }
    $sql_cat_name = "SELECT cat_name FROM $T_categories WHERE id = '$id_cat' ";
    //envoi des requetes
    $ins = send_sql($sql,"soumettre un site !");
    $res_cat_name = send_sql($sql_cat_name,"trouver le nom de la catégorie");
    //fin de la connexion
    mysql_close($lk);
    
    $resultat_cat_name = mysql_fetch_array($res_cat_name,MYSQL_ASSOC);
    
    //message de confirmation au visiteur et au webmaster
    ?>
    <br><br><br>
    <span class="confirm_add_site_annuaire">
    <?php
    if($func_mail_ok)
    //si on sait envoyer des mails
    {
        //creation des messages
        if ($auto_validate)
        {
            $message_vis = "Le site $url que vous venez de proposer a été ajouté dans l'annuaire de $titre_site.\n\n";
            $message_master = "Le site $titre vient d'être proposé et ajouté dans votre annuaire dans la catégorie $resultat_cat_name[cat_name].\n";
            $message_master .= "Vous pouvez le voir en visitant la catégorie à cette adresse :\n";
            $message_master .= "$url_rep/index.php?cat_id=$id_cat\n\n";
        }
        else //l'administrateur doit valider le site
        {
            $nom_categorie = $resultat_cat_name["cat_name"];
            //creation message
            $message_vis = "Vous venez de proposer le site : $url dans l'annuaire de $titre_site.\n\n";
            $message_vis .= "Une fois que le webmaster aura visité votre site, vous recevrez un email si votre site est accepté.\n";
            $message_master = "Le site : $url vient d'être proposé dans l'annuaire dans la catégorie $nom_categorie.";
        }
        //envoi du message au visiteur
        send_mail($email_proprio,"Proposition de site dans l'annuaire de $titre_site",htmlspecialchars($message_vis),$email_master);
        //envoi du message eu webmaster pour le prevenir de la proposition/ajout de site
        send_mail($email_master,"Nouveau site proposé dans l'annuaire",htmlspecialchars($message_master),$email_master);

        if ($auto_validate)
        {
            ?>
            Le site qui vient d'être proposé a été automatiquement accepté et donc ajouté dans la catégorie souhaitée
            <br><br>
            <?php
        }
        else //le site a ete mis en attente
        {
            ?>
            Le site <?php echo htmlspecialchars($url); ?> vient d'être proposé dans l'annuaire de <?php echo htmlspecialchars($titre_site); ?>.
            <br><br>
            Vous recevrez un mail si après visite de votre site le webmaster accepte de l'ajouter dans l'annuaire!
            <?php
        }
        //message au webmaster si le visiteur s'est inscrit a la Newsletter
        if ($add2newsletter != 0)
            send_mail($email_master,"Inscription à la Newsletter","$email_proprio souhaite recevoir la Newsletter",$email_master);        
    }
    else //on ne sait pas envoyer de mail
    {
        if ($auto_validate)
        {
            ?>
            Le site qui vient d'être proposé a été automatiquement accepté et donc ajouté dans la catégorie souhaitée !
            <?php
        }
        else //le site doit etre valide par le webmaster
        {
            ?>
            Le webmaster va visiter votre site et décidera de l'ajouter ou non...
            <br><br>
            Revenez voir dans 3 ou 4 jours pour voir si votre site a été accepté !
            <?php
        }
    }
    ?>
    </span>
    <br><br>
    <a href="index.php">Retour à l'annuaire</a>
    <?php
}
else //on ne doit pas soumettre de formulaire mais bien l'afficher
{
    if (!empty($id_cat) && $can_add != 1)
    //si on ne peut pas ajouter de site dans cette catégorie
    {
        //fin de la connexion
        mysql_close($lk);
        ?>
        <br><br><br>
        <center>
        <span class="can_not_add_annuaire">
        L'administrateur de cette annuaire a décidé de suspendre les propositions de sites dans cette catégorie.
        <br><br>
        Essayez peut être de le proposer dans une sous-catégorie...
        </span>
        </center>
        <?php
    }
    else
    //on peut proposer des sites dans cette categorie
    {
        //on affiche les conditions
        include("conditions.html");
        echo "<br><br>\n";
        ?>
        <center><span class="all_field_required_annuaire">Tous les champs sont obligatoires !</span></center>
        <br><br>
        <table align="center" border=0>
        <tr>
        <td class="text_before_field_add_annuaire">
        <form action="submit_site.php" method="post" name="form2submit">
        <input type="hidden" name="action" value="submit">
        <?php
        if (empty($id_cat))
        {
            //connexion a la BD
            $lk = connection_BD();
            //affichage de la liste des categories
            echo "<center>".show_list_cats("id_cat","",true)."</center>";
        }
        else
        {
            ?>
            <input type="hidden" name="id_cat" value="<?php echo $id_cat; ?>">
            Catégorie : <?php echo htmlspecialchars($cat_name); ?>
            <?php
        } //fin du else

        //fin de la connexion
        mysql_close($lk);
        ?>
        <br><br>
        Votre nom :
        <input type="text" name="nom_proprio" maxlength=50 size=30 class="field_data_add_site_annuaire">
        <br>
        Votre adresse email :
        <input type="text" name="email_proprio" maxlength=75 size=40  class="field_data_add_site_annuaire">
        <br>
        Titre du site :
        <input type="text" name="titre" maxlength=50 size=30 class="field_data_add_site_annuaire">
        <br>
        Url du site :
        <input type="url" name="url" maxlength=150 size=50 value="http://" class="field_data_add_site_annuaire">
        <br><br>
        Description du site :
        <br>
        <textarea name="description" cols=50 rows=5 class="descr_add_site_annuaire"></textarea>
        <br><br>
        <?php
        if ($use_newsletter && $func_mail_ok) //il faut pouvoir recevoir un mail via la fonction mail()
        {
            ?>
            Voulez-vous recevoir notre Newsletter ?
            <input type="checkbox" name="add2newsletter" value=1>
            <br><br><br>
            <?php
        } //fin du if
        ?>
        <center>
        <input type="submit" value="Soumettre le site" onClick="return check_id_cat()" class="submit_form_add_site_annuaire">
        </center>
 
        </form>
        </table>
        <?php
    } //fin du else !can_add
} //fin du else afficher le formulaire

include ("bas.php"); //pied de la page

//fichier qui contient tout ce qui doit venir avant le code de l'annuaire (menu de droite....)
include("after.php");

?>
</body>
</html>

 

Quelqu'un peut-il (elle) m'aider ?

 

D'avance merci de vous pencher sur mon petit soucis.

 

Verso cheeky

Hors ligneLivefoot Le 29/08/2013 à 23:32 Profil de Livefoot Configuration de Livefoot

Salut,

 

J'ai le même problème que toi

 

A tu eu une réponse ?

 

José

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels