Avatar billede brianlvb Nybegynder
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.php
Problemet 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!
Avatar billede boost Nybegynder
02. september 2006 - 10:49 #1
http://www.finalwebsites.com/snippets.php?id=39

Nemmere bliver det nok ikke :)
Avatar billede brianlvb Nybegynder
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>
Avatar billede boost Nybegynder
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>
Avatar billede boost Nybegynder
02. september 2006 - 11:27 #4
Avatar billede brianlvb Nybegynder
02. september 2006 - 12:22 #5
Tak for det! :)

Hvor skal jeg lægge font'en hen?
Avatar billede boost Nybegynder
02. september 2006 - 12:27 #6
Den samme mappe som du har captcha.php i.
Avatar billede boost Nybegynder
03. september 2006 - 20:44 #7
Hvis du kunne bruge mit svar, så husk og acceptere det så spm'et kan lukkes..
Avatar billede brianlvb Nybegynder
03. september 2006 - 20:50 #8
Jeg har accepteret 4 gange nu, men den ændre ikke noget. Tak for svaret! :)
Avatar billede boost Nybegynder
03. september 2006 - 20:53 #9
Det virker da fint, du trykker bare på mit navn i boksen til ventre og derefter på knappen Accepter.
Avatar billede brianlvb Nybegynder
06. september 2006 - 19:59 #10
Jeg får en fejl når jeg prøver at bruge koden fra indlæg #3:
-----------------------------------------------------------------
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /usr/home/web/web110869/gaestebog.php:10) in /usr/home/web/web110869/gaestebog.php on line 38

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/home/web/web110869/gaestebog.php:10) in /usr/home/web/web110869/gaestebog.php on line 38

Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /usr/home/web/web110869/gaestebog.php on line 79
Kunne ikke forbinde: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
-------------------------------------------------------------------------------------

Det skal lige siges at linie 38 i fejlen svarer til linie 2 i gæstebogskoden, som futurebb har skrevet det.

Ved i hvad der går galt?
Avatar billede coderdk Praktikant
11. september 2006 - 19:32 #11
session_start() skal være det første kode der bliver kørt, der må ikke engang være et enkelt lille mellemrum der bliver skrevet ud før den kode.
Plus du kan ikke forbinde til din MySQL, er koden forkert? ;)
Avatar billede brianlvb Nybegynder
11. september 2006 - 21:32 #12
Hmm jeg synes ikke at jeg kan se at der er noget i den stil der er galt.

Jeg har lagt filerne her, hvis der er en af jer der vil være venlig at kigge på dem.
http://www.prebenbjerg.dk/gaestebog.rar

Mvh
Avatar billede boost Nybegynder
12. september 2006 - 16:55 #13
Sorry, havde ikke set at du havde problemer..

Prøv denne: www.futurebb.com/gaestebog.rar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester