8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J ai un gros problème, sur mon site www.tamarynhendler.be , j ai depuis hier soir qqun qui poste des liens de sites porno..

Je pense que c est surement ce qu on apelle un BOT, robot automatique qui poste ce genre de choses, c est evidemment très embetant, puisque on voit une 50aine de liens de sites qui portent un nom porno ...

N y aurait il pas un moyen d empecher ce genre de choses?? je suis débutant dans tout ce qui est php et d ailleurs ce livre d or c est quelqu un qui me l a codé mais qui est actuellement en vacances

J aimerai vraiment pouvoir empecher ce genre de choses pour ne pas devoir tjrs effacer ce genre de messages Smiley decu si quelqu un peut m aider à améliorer la securité de mon livre d or je luis en serai extremement reconnaissant

Merci d avance pour vous intéresser à mon problème
Modifié par tony k (15 Aug 2007 - 13:18)
Bonjour,

Ce n'est pas trop le sujet de ce forum mais ...
Il faudrait se retourner vers la fonction htmlentities() de php pour éviter les inclusions de html dans ton formulaire.
Sinon pour les robots une solution simple, rajouter au formulaire une question évidente du style quelle est la "3eme lettre du mot tennis" qu'un robot pour l'instant est incapable de déchiffrer et un contrôle de la réponse avant enregistrement du formulaire...
Modifié par ghost (12 Aug 2007 - 14:48)
merci ghost pourtant justement cette fonction htmllenties existe dans mon formulaire Smiley ohwell

je vous propose de jeter un oeil au code php de ce formulaire et de me conseiller sur ce que je pourrai modifier, ca m aiderait vraiment énormément Smiley ravi

et si ce sujet n est pas à la bonne section je suis désolé n hésitez pas à le déplacer dans la bonne section , comme je suis débutant je suis attiré par le nom de cette section Smiley lol

<?php
mysql_connect("sql2.power-heberg.net", "tamarynhendler", "beatmast");
mysql_select_db("tamarynhendler");

// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------

if (isset($_POST['pseudo']) AND isset($_POST['localisation']) AND isset($_POST['message']))
{
   
    $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
    $localisation = htmlentities($_POST['localisation'], ENT_QUOTES);
    $message = stripslashes($_POST['message']);
;
   
    // On peut enfin enregistrer :o)
    mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $localisation . "','" . $message . "','".time()."')");
}

// --------------- 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 = 20; // 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 livreor');
$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 : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="livre_dor.php?page=' . $i . '">' . $i . '</a> ';
}

?>

<p />

<?php
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

if (isset($_GET['page']))
{
    $page = $_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 livreor ORDER BY timestamp DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

while ($donnees = mysql_fetch_array($reponse))
{
$message = nl2br($donnees['message']);

		//Balises pour les smileys
$message = preg_replace ('!:smile:!isU',' <img src="smilies/smile.png" alt="" /> ',$message);
$message = preg_replace ('!:D!isU',' <img src="smilies/heureux.png" alt="" /> ',$message);
$message = preg_replace ('!;D!isU',' <img src="smilies/clin.png" alt="" /> ',$message);
$message = preg_replace ('!:p!isU',' <img src="smilies/langue.png" alt="" /> ',$message);
$message = preg_replace ('!:lol:!isU',' <img src="smilies/rire.gif" alt="" /> ',$message);
$message = preg_replace ('!:euh:!isU',' <img src="smilies/unsure.gif" alt="" /> ',$message);
$message = preg_replace ('!:triste:!isU',' <img src="smilies/triste.png" alt="" /> ',$message);
$message = preg_replace ('!:o!isU',' <img src="smilies/huh.png" alt="" /> ',$message);
$message = preg_replace ('!:colere:!isU',' <img src="smilies/mechant.png" alt="" /> ',$message);
$message = preg_replace ('!o_O!isU',' <img src="smilies/blink.gif" alt="" /> ',$message);
$message = preg_replace ('!:hihi:!isU',' <img src="smilies/hihi.png" alt="" /> ',$message);
$message = preg_replace ('!:siffle:!isU',' <img src="smilies/siffle.png" alt="" /> ',$message);

		//Balises pour gras,  italic
$message = preg_replace('!\<gras>(.+)\</gras>!isU', '<strong>$1</strong>', $message);
$message = preg_replace('!\<italic>(.+)\</italic>!isU', '<span style="font-style: italic;">$1</span>', $message);

	     //Balises pour taille
$message = preg_replace('!\<tpetit>(.+)\</tpetit>!isU', '<span style="font-size: x-small;">$1</span>', $message);
$message = preg_replace('!\<petit>(.+)\</petit>!isU', '<span style="font-size: small;">$1</span>', $message);
$message = preg_replace('!\<moyen>(.+)\</moyen>!isU', '<span style="font-size: medium;">$1</span>', $message);
$message = preg_replace('!\<grand>(.+)\</grand>!isU', '<span style="font-size: large;">$1</span>', $message);
$message = preg_replace('!\<tgrand>(.+)\</tgrand>!isU', '<span style="font-size: x-large;">$1</span>', $message);
$message = preg_replace('!\<geant>(.+)\</geant>!isU', '<span style="font-size: xx-large;">$1</span>', $message);

    echo '<div class="livre_dor"> <p class="pseudo_livre_dor">By <strong>' . $donnees['pseudo'].  '</strong>, the ' . date('d/m/Y - H\hi', $donnees['timestamp']). ' from ' . $donnees['localisation']. ':</br><p class="message">' . $message . '</p>
</div>';

}

mysql_close(); // On ferme la connexion à Mysql
?>
ok merci ghost voila déja je l espère une chose de réglé

maintenant peux tu peut etre me dire comment je peux ajouter cette ligne supplémentaire qui permettrait d eviter les BOT??

qu est ce que je dois ecrire comme code et ou?

Désolé c est certainement des notions élémentaires mais je dois bien avouer que je suis une bulle en php néammoins si tu as un script bien expliqué qui peut répondre à ma question ca me va aussi Smiley cligne

merci d avance
En manière de blocage de lien, le plus efficace est sans doute :

if (substr_count($message, "http://")>1) die("Dehors le spam");
merci quentin, a vrai dire j ai réussi à empecher ca mais ce robot continue quand meme a venir écrire des codes dans le guestbook et dans ces codes on retrouve des mots vulgaires... avec le code que tu m as donné ou puis je inclure cela dans mon formulaire??

Je souhaiterai aussi le cas échéant pouvoir ajouter un code à taper pour que la personne puisse poster son message dans mon livre d or (comme me l a suggéré ghost) mais comment puis je faire ca??

qqun peut il m expliquer ce que je dois ajouter dans mon livre d or pour réaliser ca?
Modifié par tony k (12 Aug 2007 - 18:40)
j ai finalement utilisé un système de code à recopier apellé cryptograph, j espère que celui ci va maintenant pouvoir empecher les bots