02. september 2006 - 10:41
Der er
12 kommentarer og
1 løsning
Antispam image eller alternativ? Hvordan?
Jeg har lavet en meget simpel gæstebog - Den her:
http://prebenbjerg.dk/gaestebog.phpProblemet er bare, at den bliver fuldstændig bombarderet med spam, som i kan se.
Jeg fandt en hjemmeside med et antispam image (
http://www.theblog.ca/?p=21), som bruger noget der hedder Wordpress, men jeg kan ikke lige helt overskue hvad det er jeg skal gøre med det...
Hvis det er et antispam image, der er løsningen på mit spamproblem, er der så ikke én der vil være venlig at guide mig lidt igennem hvordan jeg skal integrere et antispam image på min gæstebog.
Jeg er ikke så rutineret i PHP-programmering, så det skal helst ikke være alt for kompliceret.
På forhånd tak!
02. september 2006 - 11:20
#2
Hvor er det meningen at den kode den skal stå henne?
Det her er hvad der står i gæstebogen:
<?php
if(isset($_GET['action']) AND $_GET['action'] == "insert") {
//Tjekker og formaterer date og indsætter det i databasen
$navn = $_POST['navn'];
$email = $_POST['email'];
$besked = nl2br($_POST['besked']);
$tid = time();
$ip = $_SERVER["REMOTE_ADDR"];
$link = mysql_connect('localhost', 'XXXXXX', 'XXXXXXX');
if (!$link) {
die('Kunne ikke forbinde: ' . mysql_error());
}
mysql_select_db('XXXXXX', $link);
$insert = mysql_query("INSERT INTO web110869 (navn, email, besked, time, ip) VALUES ('$navn', '$email',
'$besked', '$tid', '$ip')");
if($insert) {
echo "Beskeden er tilføjet til gæstebogen";
}else {
echo "Der gik noget galt, kontakt webmaster!";
mysql_error();
}
}elseif(isset($_GET['action']) AND $_GET['action'] == "add") {
//Formular til tilføjelse af data
?>
<form action="gaestebog.php?action=insert" method="post" name="gæstebog">
Navn: <input type="text" name="navn" size="24" /><br />
Email: <input type="text" name="email" size="24" />
<p>Besked:<br />
<textarea name="besked" rows="4" cols="40"></textarea></p>
</form>
<?php
}else {
//Hvis alt andet, vises gæstebogen
$link = mysql_connect('localhost', 'XXXXX', 'XXXXX');
if (!$link) {
die('Kunne ikke forbinde: ' . mysql_error());
}
mysql_select_db('XXXXXX', $link);
$query = mysql_query("SELECT navn, email, besked, tid, ip FROM XXXXXXX ORDER BY tid ASC");
while($row = mysql_fetch_assoc($query)) {
echo "<hr>";
echo "<a href=\"mailto:".$email."\">Besked af: ".$navn."</a><br/>";
echo "Dato: ".date("r", $tid)."";
echo $besked;
}
echo "<a href=\"Gaestebog.php?action=add\">Skriv indlæg</a>";
}
?></div>
<p> </p>
02. september 2006 - 11:27
#3
Lav en ny fil som du kalder for captcha.php
I den skal denne kode være:
<?php
session_start();
$imgX = 60;
$imgY = 20;
$image = imagecreatetruecolor(60, 20);
$backgr_col = imagecolorallocate($image, 238,239,239);
$border_col = imagecolorallocate($image, 208,208,208);
$text_col = imagecolorallocate($image, 0,0,0);
imagefilledrectangle($image, 0, 0, 60, 20, $backgr_col);
imagerectangle($image, 0, 0, 59, 19, $border_col);
$font = $_SERVER['DOCUMENT_ROOT'].'/VeraSe.ttf';
$font_size = 11;
$angle = 0;
$box = imagettfbbox($font_size, $angle, $font, $_SESSION['rand_code']);
$x = (int)($imgX - $box[4]) / 2;
$y = (int)($imgY - $box[5]) / 2;
imagettftext($image, $font_size, $angle, $x, $y, $text_col, $font, $_SESSION['rand_code']);
header("Content-type: image/png");
imagepng($image);
imagedestroy ($image);
?>
Ret din gæstebog til dette:
<?php
session_start();
if (empty($_SESSION['rand_code'])) {
$_SESSION['rand_code'] = substr(str_shuffle('0123456789'),0,6);
}
if(isset($_GET['action']) && $_GET['action'] == "insert" && !empty($_POST['validator']) && $_POST['validator'] == $_SESSION['rand_code']) {
//Tjekker og formaterer date og indsætter det i databasen
$navn = $_POST['navn'];
$email = $_POST['email'];
$besked = nl2br($_POST['besked']);
$tid = time();
$ip = $_SERVER["REMOTE_ADDR"];
$link = mysql_connect('localhost', 'XXXXXX', 'XXXXXXX');
if (!$link) {
die('Kunne ikke forbinde: ' . mysql_error());
}
mysql_select_db('XXXXXX', $link);
$insert = mysql_query("INSERT INTO web110869 (navn, email, besked, time, ip) VALUES ('$navn', '$email',
'$besked', '$tid', '$ip')");
if($insert) {
echo "Beskeden er tilføjet til gæstebogen";
}else {
echo "Der gik noget galt, kontakt webmaster!";
mysql_error();
}
unset($_SESSION['rand_code']);
}elseif(isset($_GET['action']) AND $_GET['action'] == "add") {
//Formular til tilføjelse af data
?>
<form action="gaestebog.php?action=insert" method="post" name="gæstebog">
<img src="captcha.php" alt="CAPTCHA image" width="60" height="20" vspace="1" align="top" /><br />
<input type="text" name="validator" id="validator" size="6" /><br />
Navn: <input type="text" name="navn" size="24" /><br />
Email: <input type="text" name="email" size="24" />
<p>Besked:<br />
<textarea name="besked" rows="4" cols="40"></textarea></p>
</form>
<?php
}else {
//Hvis alt andet, vises gæstebogen
$link = mysql_connect('localhost', 'XXXXX', 'XXXXX');
if (!$link) {
die('Kunne ikke forbinde: ' . mysql_error());
}
mysql_select_db('XXXXXX', $link);
$query = mysql_query("SELECT navn, email, besked, tid, ip FROM XXXXXXX ORDER BY tid ASC");
while($row = mysql_fetch_assoc($query)) {
echo "<hr>";
echo "<a href=\"mailto:".$email."\">Besked af: ".$navn."</a><br/>";
echo "Dato: ".date("r", $tid)."";
echo $besked;
}
echo "<a href=\"Gaestebog.php?action=add\">Skriv indlæg</a>";
}
?></div>
<p> </p>