Nej det är ingen otur..alla som inte skyddar sin gästbok får problem med detta.
Jag har haft en gästbok på min hemsida i PHP script. Tyvärr tar pokerspam över sidan.
Har jag otur eller......
6 svar · 686 visningar · startad av Sussi54
Jag har haft en gästbok på min hemsida i PHP script. Tyvärr tar pokerspam över sidan.
Har jag otur eller......
Nej det är ingen otur..alla som inte skyddar sin gästbok får problem med detta.
Undviker man detta genom att de som skriver får koda innan de skickar sitt inlägg?
Det är ett sätt. Ett mycket enkelt sätt är t ex att skriva "Skriva tretvåett med siffror" som då alltså ska bli 321. Har skyddat bra på en sida som jag driver.
<HTML>
<HEAD>
<TITLE>Min gästbok</TITLE>
</HEAD>
<BODY>
<H2>Här kan Du tycka till:</H2><div align="right"><a href="index.html"><img src="tunn pil.jpg" border="0"alt="Startsidan"></a></div>
<form action="<?echo $PHP_SELF?>" method="POST">
<textarea cols=40 rows=5 name=note wrap=virtual></textarea>
<input type=submit value="Skicka">
</form>
<?
if(isset($note))
{
$note = htmlspecialchars($note);
$note = nl2br($note);
$fp = fopen("gastbok/notes.txt","a");
fputs($fp,$note.'\<br\>\<br\>');
fclose($fp);
}
?>
<h2>Skrivet i gästboken:</h2>
<?
if (file_exists ("gastbok/notes.txt")) {
readfile("gastbok/notes.txt");
}
?>
</BODY>
</HTML>
Var ska jag skriva 321? Tack för hjälpen :)
<form action="<?echo $PHP_SELF?>" method="POST">
<textarea cols=40 rows=5 name=note wrap=virtual></textarea>
Var god skriv tretvåett med siffror i den här rutan: <input type="text" name="check" value="">
<input type=submit value="Skicka">
</form>
<?
if(isset($note) && $_POST['check'] == 321)
{
$note = htmlspecialchars($note);
$note = nl2br($note);
$fp = fopen("gastbok/notes.txt","a");
fputs($fp,$note.'\<br\>\<br\>');
fclose($fp);
}
?>
Nåt sånt borde funka, sen kan man förstås göra det lite mer avancerat så att man istället slumpar ut vilka siffror man vill ha, annars kanske nån bot lär sig vad som måste stå i ett fält.
Jag passade på att ändra ett par saker till. Jag bytte ut $note mot $_POST['note']) som är det gängse sättet att få fram värdet på formulärelement idag. Jag flyttade även kodblocket till början av sidan, vilket krävs för att man ska kunna skriva ut saker beroende på hur den koden körs.
Övriga ändringar fetmarkerade.
<?PHP
if(isset($_POST['note']))
{
[b]if ($_POST['spamverification'] == '312')[/B]
$note = htmlspecialchars($_POST['note']);
$note = nl2br($note);
$fp = fopen("gastbok/notes.txt","a");
fputs($fp,$note.'<br><br>');
fclose($fp);
[b]}else{
$spamerror = "Du fyllde i verifikationskoden fel. Vänligen försök igen.";
$repost = $_POST['note'];
}[/b]
}
?>
<HTML>
<HEAD>
<TITLE>Min gästbok</TITLE>
</HEAD>
<BODY>
<H2>Här kan Du tycka till:</H2><div align="right"><a href="index.html"><img src="tunn pil.jpg" border="0"alt="Startsidan"></a></div>
<form action="<?echo $PHP_SELF?>" method="POST">
[b]<?PHP
if($spamerror){
echo "<div style=\"background-color: rgb(255, 128, 128)\">$spamerror</div>"
}
?>[/b]
<textarea cols=40 rows=5 name=note wrap=virtual>[b]<?PHP echo $repost; ?>[/b]</textarea><br />
[B]Skriv in TreEttTvå med siffror här: <input name="spamverification" type="text" />[/B]
<input type=submit value="Skicka">
</form>
<h2>Skrivet i gästboken:</h2>
<?
if (file_exists ("gastbok/notes.txt")) {
readfile("gastbok/notes.txt");
}
?>
</BODY>
</HTML>