spam!!!!

Status
Niet open voor verdere reacties.

pakestok

Gebruiker
Lid geworden
16 jun 2007
Berichten
330
Ik heb een php contact script gevonden op internet. en heb het er nu 2 dagen opstaan en heb nu al 73spam mailtjes gekregen. Er zit helemaal niks van een anti-spam ding op het contact script, dus ik dacht ik doe er een captcha op.( voorbeel op www.webco.nl/spam.php )

NU is mijn vraag: hieronder zie je het contact script en het antispam script (captcha)
Kan iemand dit voor mij samenvoegen?

1. het kan dat je eerst naar de captcha gaat en die goed invoert, en dan dat je het contactscript ziet. (maar wel allemaal op dezelfde pagina dus nog steeds op http://www.webco.nl/spam.php

2. Of je vult het contactformulier in en daar onder de captcha en dan op verzenden klikt dat die de captcha ook goedkeurd.

Voor andere oplossingen is ook goed, bovenstaande was mijn idee :P :

Contact script:
PHP:
<? 
// geef e-mail adres op van ontvanger 
$mail_ontv = "info@webco.nl";

// is niet 100% !!! 
function checkmail($mail) 
{ 
    $email_host = explode("@", $mail); 
    $email_host = $email_host['1']; 
    $email_resolved = gethostbyname($email_host); 

    if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail)) 
        $valid = 1; 

    return $valid; 
} 

// als er niet op submit is gedrukt, of als er wel op is gedrukt maar niet alles ingevoerd is 
if (!$_POST['submit'] || $_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp'])) 
{ 
    if ($_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))   
    { 
        echo "Je bent je naam, e-mail adres, onderwerp of bericht vergeten in te vullen. Ook kan het zijn "; 
        echo "dat je een verkeerd e-mail adres hebt ingevuld.<p>"; 
    } 
      
    // form + tabel 
    echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"; 
    echo "<form method=\"POST\" ACTION=\"" . $_SERVER['PHP_SELF'] . "\">"; 
      
    // naam 
    echo "<tr><td>Naam:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>"; 
      
    // space 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
    // mail 
    echo "<tr><td>E-mail adres:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"mail\" value=\"" . $_POST['mail'] . "\"></td></tr>"; 
      
    // space 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
    // mail 
    echo "<tr><td>Onderwerp:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"onderwerp\" value=\"" . $_POST['onderwerp'] . "\"></td></tr>"; 
      
    // space 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
    // mail 
    echo "<tr><td>Bericht:</td></tr>"; 
    echo "<tr><td><TEXTAREA name=\"msggs\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</TEXTAREA></td></tr>"; 
      
    // space 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
    // button 
    echo "<tr><td>&nbsp;</td></tr>"; 
    echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>"; 
      
    // sluit form + tabel 
    echo "</form>"; 
    echo "</table>"; 
} 
// versturen naar 
else 
{      
    // set datum 
    $datum = date("d.m.Y H:i"); 
      
    // set ip 
    $ip = $_SERVER['REMOTE_ADDR']; 
      
    $inhoud_mail = "===================================================\n"; 
    $inhoud_mail .= "Ingevulde contact formulier\n"; 
    $inhoud_mail .= "===================================================\n\n"; 
    
    $inhoud_mail .= $_SERVER['SCRIPT_URI'] . "\n\n";

    $inhoud_mail .= "Naam: " . $_POST['naam'] . "\n"; 
    $inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n"; 
    $inhoud_mail .= "Bericht:\n"; 
    $inhoud_mail .= $_POST['msggs'] . "\n\n"; 
      
    $inhoud_mail .= "Verstuurd op " . $datum . " via het ip " . $ip . "\n\n"; 
      
    $inhoud_mail .= "===================================================\n\n"; 
    
   
    
    $headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
    
    $headers = stripslashes($headers);
    $headers = str_replace("\n", "", $headers); // Verwijder \n 
    $headers = str_replace("\r", "", $headers); // Verwijder \r 
    $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes 
    
    $_POST['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n 
    $_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r 
    $_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes 
     
    mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers); 
     
    echo "<h1>Je e-mail is verstuurd</h1>";
    
    echo "<p>Bedankt voor het versturen van een e-mail. Je zult zo spoedig mogelijk een antwoord "; 
    echo "krijgen indien dit nodig is.</p>"; 
     
    echo "<p>We nemen alles serieus en zullen vertrouwelijk omgaan met de informatie "; 
    echo "die we binnen krijgen. Je e-mail adres zal nooit aan derden worden verstrekt.</p>"; 
} 
?>

Captcha:
PHP:
<?php

/********************************************************\
*                                                        *
*                   © Herjan Treurniet                   *
*                  [email]herjan@treurniet.com[/email]                  *
*  Mag vrij gebruikt worden mits dit blokje blijf staan  *
*          en je je aan de GNU/GPL-regels houdt          *
*                                                        *
\********************************************************/

/********************************************************\
*                                                        *
*                         Config                         *
*                                                        *
\********************************************************/

$margin = 15; // Hoe groot moeten de figuurtjes zijn?
$rows = 2; // Hoeveel rijen wil je onder elkaar?
$space = 6; // Hoeveel ruimte wil je tussen de figuurtjes?
$blocks = 6; // Hoeveel figuurtjes wil je per rij?

//Alle waarden zijn in pixels!!

/********************************************************\
*                                                        *
*                      Einde config                      *
*                                                        *
\********************************************************/

if(isset($_GET['image'])) //Kijk of het plaatje gemaakt moet worden
    {
        
        header("Content-type: image/gif"); //Vertel de browser dat het een plaatje is
        session_start(); //Start de sessie
        
        $space = floor($space/2); //Bereken de ruimte tussen de blokjes
        $width = $blocks * ($margin+(2*$space)); //Bereken de totale breedte van het plaatje
        $height = $rows * ($margin+(2*$space)); //Bereken de totale hoogte van het plaatje
        $img = imagecreatetruecolor($width, $height); //Maak een plaatje
        $white = imagecolorallocate($img, 255, 255, 255); //Maak de kleur wit
        $colors['red'] = imagecolorallocate($img, 255, 0, 0); //Maak de kleur rood
        $colors['blue'] = imagecolorallocate($img, 0, 0, 255); //Maak de kleur blauw
        $colors['green'] = imagecolorallocate($img, 0, 200, 0); //Maak de kleur groen
        imagefill($img, 0, 0, $white); //Maak het plaatje helemaal wit
        $left = 0; //Zet de margin vanaf de linkerkant op 0
        $used = array(); //Maak een array waarin het script kan zetten hoe vaak hij elk figuur heeft gebruikt
        $row = 0; //Vertel het script dat hij bij de eerste rij is
        $rows--; //Haal 1 van het aantal rijen af, want het script begint bij 0 ipv 1
        $blocknr = 0; //Vertel het script dat het het 0de blokje van het geheel is
        
        for($i = 0; $i < $blocks; $i++) //Voer voor alle figuurtjes het volgende script uit
            {
                 $number = $_SESSION['captcha']['touse'][$blocknr]; //Haal uit de sessie wat voor figuurtje hij moet maken
                switch($number) //Voer wat expressions uit met $number
                    {
                        case 0: //Als $number 0 is
                            imagefilledrectangle($img, ($left+$space), ($row*($margin+(2*$space))+$space), ($left+$margin+$space), ($row*($margin+(2*$space))+$margin+$space), $colors[array_rand($colors)]); //Maak een vierkantje
                            $used['vierkantjes']++; //Stop in een variabele dat je vierkantje een keer gebruikt hebt
                            $last = 'vierkantjes'; //Zeg dat het laatstgebruikte figuurtje een vierkantje is
                        break; //Einde van "Als $number 0 is"


                        case 1: //Als $number 1 is
                            imagefilledellipse($img, ($left+$space+floor($margin/2)), ($row*($margin+(2*$space))+$space+floor($margin/2)), $margin, $margin, $colors[array_rand($colors)]); //Maak een rondje
                            $used['rondjes']++; //Stop in een variabele dat je rondje een keer gebruikt hebt
                            $last = 'rondjes'; //Zeg dat het laatstgebruikte figuurtje een rondje is
                        break; //Einde van "Als $number 1 is"


                        case 2: //Als $number 2 is
                            $points = array(
                                ($left+$space), ($row*($margin+(2*$space))+$margin+$space),
                                ($left+$space+floor($margin/2)), ($row*($margin+(2*$space))+$space),
                                ($left+$margin+$space), ($row*($margin+(2*$space))+$margin+$space)
                            ); //Stop alle punten voor de driehoek in een array
                            imagefilledpolygon($img, $points, 3, $colors[array_rand($colors)]); //Maak een driehoekje
                            $used['driehoekjes']++; //Stop in een variabele dat je driehoekje een keer gebruikt hebt
                            $last = 'driehoekjes'; //Zeg dat het laatstgebruikte figuurtje een driehoekje is
                        break; //Einde van "Als $number 2 is"
                    } //Einde van de expressions voor $number
                $left += $margin+(2*$space); //Zet de left-margin van het plaatje omhoog
                if($i == ($blocks-1) && $row < $rows) //Als dit het laatste figuurtje van de rij is
                    {
                        $i = -1; //Vertel het script dat het het -1de figuurtje is (geen idee waarom het met 0 niet werkt :S)
                        $row++; //Vertel het script dat hij bij de volgende rij is
                        $left = 0; //Zet de margin vanaf de linkerkan weer op 0
                    }
                $blocknr++; //Vertel het script dat hij bij het volgende blokje is
            }
        
        //print_r($_SESSION);
        
        imagegif($img); //Output de image naar de browser
        imagedestroy($img); //Verwijder het plaatje uit het geheugen
        exit(); //Stop het script
    }

session_start(); //Start de sessie

if($_SERVER['REQUEST_METHOD'] == "POST") //Als je deze pagina opent door te posten
    {
        $howmany = $_POST['howmany']; //Stop het gegeven antwoord in een variabele
        if(!ctype_digit($_POST['howmany'])) //Kijk of het gegeven antwoord wel een getal is
            {
                echo 'Hee, wel een getal invoeren!!'; //Zoniet, laat het de client weten...
                exit(); //...en beëindig het script!
            }
        $answer = ''.$_SESSION['captcha']['used'][$_SESSION['captcha']['shape']].''; //Stop het goede antwoord als string in een variabele
        if($answer == $howmany) //Als het gegeven antwoord gelijk is aan het goede antwoord
            {
                echo 'Goed, hier is de link naar het contactscript, om spam te voorkomen: [url]http://www.webco.nl/';[/url] //Laat de client weten dat het antwoord goed is
            }
        else //Als het gegeven antwoord niet gelijk is aan het goede antwoord
            {
                echo 'Fout<br />
Je zei: '.$howmany.'<br />
Het was: '.$answer; //Laat de client weten dat het antwoord fout is en vertel hem het goede antwoord
            }
    }
else //Als je deze pagina niet bereikt door te posten
    {
        unset($_SESSION['captcha']); //Gooi de oude gegevens weg
         for($i = 0; $i < $blocks * $rows; $i++) //Voer voor elk figuurtje dit script uit:
             {
                $_SESSION['captcha']['touse'][$i] = rand(0, 2); //Bepaal welk figuurtje het wordt
                switch($_SESSION['captcha']['touse'][$i]) //Voer wat expressions uit met het figuurtje
                    {
                        case 0: //Als figuurtje 0 is
                            $used['vierkantjes']++; //Stop in een variabele dat er een vierkantje is gebruikt
                            $lastshape = 'vierkantjes'; //Stop in een variabele dat het laatstgebruikte figuurtje een vierkantje is
                        break; //Einde van "Als figuurtje 0 is"


                        case 1: //Als figuurtje 1 is
                            $lastshape = 'rondjes'; //Stop in een variabele dat er een rondje is gebruikt
                            $used['rondjes']++; //Stop in een variabele dat het laatstgebruikte figuurtje een rondje is
                        break; //Einde van "Als figuurtje 1 is"


                        case 2: //Als figuurtje 2 is
                            $lastshape = 'driehoekjes'; //Stop in een variabele dat er een driehoekje is gebruikt
                            $used['driehoekjes']++; //Stop in een variabele dat het laatstgebruikte figuurtje een driehoekje is
                        break; //Einde van "Als figuurtje 2 is"
                    } //Einde van de expressions voor het figuurtje
                if($i == ($blocks * $rows - 1)) //Als dit het laatste blokje is
                    {
                        $_SESSION['captcha']['shape'] = $lastshape; //Stop in de sessie wat het laatste figuurtje is
                    }
            }
        $_SESSION['captcha']['used'] = $used; //Stop in de sessie hoe vaak elk figuurtje gebruikt is
        echo '
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
    <img src="'.$_SERVER['PHP_SELF'].'?image" alt="Plaatje" /><br /><br />
    Hoeveel '.$_SESSION['captcha']['shape'].' zie je in het plaatje hierboven?
    <input type="text" name="howmany" maxlength="5" size="2" /><br /><br />
    <input type="submit" value="Volgende">
</form>
'; //Echo het formulier
    }

?>
 
Laatst bewerkt door een moderator:
Misschien kun je beter een contact script zoeken met een geintegreerde captcha?
 
maar bij mij werkte het wel dus...

maar ok ik heb dus geprobeert dat in elkaar te proppen maar ik kwam er niet uit om het in 1 pagina te zetten
 
hoe kan het dat het bij jou wel werkt dan?, wat heb je gedaan?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan