Formmail - sikringen mod spamrobotter

Tags:    php

Jeg har her på siden fundet nedenstående PHP script til formmails.
Det fungerer finrt, men jeg vil gerne undgå at modtage formmails fra spamrobotter og har fundet dette (se // sikring mod spambotter) i et andet script, men hvordan får jeg det inkluderet i nedenstående PHP script?
Jeg vil også gerne undgå, at min e-mail adresse står i en enkelt variabel som her:
$sendto = "min@mail.dk";
Hvordan sammensætter jeg flere variabler til en.
Jeg troede at dette kunne lade sig gøre, men det kan det så ikke:
$sendto = "min"+"@"+"mail.dk";


// sikring mod spambotter

!strpos($_POST['name'], "domæne.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "domæne.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\\r",$_POST['name']) && // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\\n",$_POST['name']) && // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\\n",$_POST['email'])) // tjek, at der ikke er "linjeskift" i "email"


PHP script:

<html>
<body>
<?php

//Checker om brugeren kom fra kontakt.htm

if(!isset($_POST['navn']))
{
header("Location: kontakt.htm"); //Hvis brugeren ikke kom fra kontakt.htm, sender vi ham derhen.
}

else
{ // Hvis brugeren kom fra kontakt.htm, så fortsætter vi.

//Henter data fra formular
$navn = $_POST['navn'];
$mail = $_POST['mail'];
$emne = $_POST['emne'];
$besked = $_POST['besked'];

if(empty($navn) || empty($mail) || empty($emne))
{ //Hvis en af variablerne er tomme, kommer brugeren ikke videre.

echo "Alle felter med * skal udfyldes. <a href='kontakt.html' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";

}

else
{ //Hvis der var noget i alle variabler, går vi videre til næste check.

if(ereg("^.+@.+\\..+$", $mail)) { //Hvis brugerens e-mail er gyldig fortsætter vi.

//Nu skal vi til at sende e-mailen.
//Vi laver lige et par variabler mere

$sendto = "min@mail.dk"; //Den adresse som mailen skal sendes til

//Vi laver en variabel, som indeholder alt det, som skal stå i mailen.
$msg = "Besked fra ".$navn."\\n";
$msg .= "Afsenderens e-mail: ".$mail."\\n";
$msg .= $navn."'s besked er:\\n".$besked."\\n";
$subject = "".$emne;

//Mailen afsendes
if(mail($sendto, $subject, $msg, "From: $mail\\r\\n" . "Reply-To: $mail\\r\\n"))
{

echo "Mailen blev sendt uden problemer";

}
else
{
echo $alle;
echo "Der opstod en fejl. Prøv igen. <a href='kontakt.html' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";

}
}

else
{ //Hvis e-mail adressen ikke har et @ kommer vi med endnu en fejl

echo "Ugyldig e-mail adresse. <a href='kontakt.html' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";

}

}
}
?>
</body>

</html>



4 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
En spambot vil aldrig nogensinde kunne se php-koden og kan derfor ikke få din email derfra. De kan dog godt "besøge" siden og sende en mail ligesom alle andre mennesker vil kunne (det er vel en kontakt-side du laver).



Strings sættes sammen med punktum og ikke med plus. (Det er som Jonas skriver ikke relevant her, da andre ikke kan se din php-kode)

Hvis du vil forhindre robotter i at udfylde formularen og sende den ind, så er det kun fantasien der sætter grænser. Du skal bare lave en eller anden sikring, som ingen andre har lavet.



læs den nyeste php artikel ;D Den handler om sikring mod spambotter



Tak for svarene, som gjorde mig en del klogere.



t