[PHP] Livre d'or
FloR3nT
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
FloR3nT Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
FloR3nT Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aimerais inclure un système d'antispam dans mon livre d'or en sorte que si il détecte le spam il l'auto supprime de la base de donnée
voici le code:
merci de vos future réponse !
j'aimerais inclure un système d'antispam dans mon livre d'or en sorte que si il détecte le spam il l'auto supprime de la base de donnée
voici le code:
<style type="text/css">
form, .pages
{
text-align:center;
}
</style>
<form method="post" action="livre.xml">
<div class="block_titre">
<h1 align="center"><u>Livre d'Or</u></h1>
</div>
<div class="block_contenu" style="text-align: center; padding: 20px 0px;"><i>Notre radio vous plaît ?</i> Laissez-nous un message !</div>
<div class="block_contenu" style="text-align: center; font-size: 9px; padding: 20px 150px;">
</div>
<p>
Pseudo : <input name="pseudo" /><br /><br />
Message :<br />
<textarea name="message" rows="8" cols="35"></textarea><br />
<br /><input type="submit" value="Envoyer" />
</p>
</form>
<p class="pages">
<?php
mysql_connect("localhost", "rng", "pass");
mysql_select_db("rng");
// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message
$message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
// On peut enfin enregistrer :o)
mysql_query("INSERT INTO site_livre VALUES('', '" . $pseudo . "', '" . $message . "','". $date ."')");
}
// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 8; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM site_livre');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page(s) : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livre.xml?page=' . $i . '">' . $i . '</a> ';
}
?>
</p>
<?php
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
if (isset($_GET['page']))
{
$page = intval($_GET['page']); // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM site_livre ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($donnees = mysql_fetch_array($reponse))
{
echo '<br /><p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>
merci de vos future réponse !
6 réponses
-
Salut.
Tu peux utiliser Askimet : https://akismet.com/
C'est une sorte de base de données connaissant une partie du spam.
Tu peux en plus ajouter une image contenant un code à recopier (captcha) :
http://www.captcha.fr/
https://www.google.com/recaptcha/about/
Tu peux également utiliser du Javascript pour l'envoie du formulaire.
Les robots spammeurs ne le comprennent pas, donc ils seront bloqués. -
Avion, sais tu que maintenant les robots comprennent le JavaSript. De plus tu peux être un spammeur sans être un robot xD.
-
bonjour,
j'ai installer le captcha,
le seul problème sais que meme si on tape pas le code, le message ce valide...
voici le code mise à jour avec le captcha dedans :)
http://pastebin.com/edjPb1NZ -
Ajoute session_start() avant debut.inc.php
Il faut mieux faire la vérification chk_script() dans la condition suivant le commentaire de l'étape 1.-
-
Est-ce que le fichier debut.inc.php contient du code HTML ?
Si oui, alors le session_start() doit être fait avant.
Il y en a une dans le script du captcha, mais ce script est inclus après, et on ne peut pas lancer une session après l'écriture de caractères.
Et j'ai dit chk_script() au lieu de chk_crypt() ... -
j'ai changer ce que tu viens de me dire,
voilà ce qui en est:
Fatal error: Call to undefined function chk_script() in /home/rng/www/website_pages/guestbook.php on line 8
http://pastebin.fr/9918
la code sessions est déjà dans le debut.inc.php :)
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut,
Il suffit de faire un bon captcha et peu contraignant, donc exit celui qui te demande de lire les lettres. Après tu peux t'amuser à faire des captcha sympa :
- Une image où il doit cliquer sur un endroit précis.
- Une addition ou soustraction.
Ensuite fais toi une liste noir des ip.
Enfin augmente la durée entre 2 formulaire.
En fait tout est réalisable, la seule limite c'est ton imagination ...
La chance aide parfois, le travail toujours ! -
Il y a un truc très bête, tu crée un champ de texte que tu cache avec CSS, et 90% des robots vont automatiquement remplir ce champ. Un visiteur normal ne va pas le remplir puisqu'il ne le verra pas. Donc avant d'enregistrer le message tu ajoute une condition:
if (empty($antirobot))
ect...
C'est moins embêtant qu'un captcha pour le visiteur.