Spam via e-mail formulier
Op mijn website heb ik een PHP Mailformulier staan. Sinds dat formulier online staat komt er ontzettend veel spam vandaan! Berichten van allerlei verschillende ip adressen en soms wel 7 na elkaar. Ik kan dan wel al die IP-Adressen gaan blokkeren op de website maar als er steeds nieuwe IP's gebruikt worden schiet ik dara niks mee op.. is hier wellicht iets tegen te doen?
Zulke mails krijg ik nu wekelijks in mijn postvak:
Naam: John BE-mail: [email protected]: Unknown Onderwerp: Unknown Bericht: <a href= http://hekeke.pochtamt.ru/Busty-indian-babes.htm >Busty indian babes</a> Busty indian babes <a href= http://hekeke.pochtamt.ru/Babe-wet.htm >Babe wet</a> Babe wet <a href= http://hekeke.pochtamt.ru/Sexy-brunette-fucked.htm >Sexy brunette fucked</a> Sexy brunette fucked
Spam.. spam.. spam.. en het kan simpelweg ingevuld worden via www.kermisadviesgroep.nl en dan contact.
Wie kan mij helpen?
Justin
Ten tweede: Voeg een captcha toe.
Ten derde: Wat voor check en dergelijke heb je in je contact formulier staan? Heb je wel een check die kijkt of het een redelijk bestaande email adres is?
Dat was het dan wel.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if($_POST['submitform']) {
$Naam = $HTTP_POST_VARS['Naam'];
$Email = $HTTP_POST_VARS['Email'];
$onderwerp = $HTTP_POST_VARS['onderwerp'];
$bericht = $HTTP_POST_VARS['bericht'];
$functie = $HTTP_POST_VARS['functie'];
// check required fields
$dcheck = explode(",",$require);
while(list($check) = each($dcheck)) {
if(!$$dcheck[$check]) {
$error .= "$dcheck[$check]<br>";
}
}
// check email address
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[[email protected]]+$", $Email))){
$error .= "Onbekent e-mail adres<br>";}
// display errors
if($error) {
?>
if($_POST['submitform']) {
$Naam = $HTTP_POST_VARS['Naam'];
$Email = $HTTP_POST_VARS['Email'];
$onderwerp = $HTTP_POST_VARS['onderwerp'];
$bericht = $HTTP_POST_VARS['bericht'];
$functie = $HTTP_POST_VARS['functie'];
// check required fields
$dcheck = explode(",",$require);
while(list($check) = each($dcheck)) {
if(!$$dcheck[$check]) {
$error .= "$dcheck[$check]<br>";
}
}
// check email address
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[[email protected]]+$", $Email))){
$error .= "Onbekent e-mail adres<br>";}
// display errors
if($error) {
?>
deze pagina goed doorlezen.
En voor de check required fields:
Ik zou ook nog een strlen toevoegen om te kijken of
En voor eventuele spam:
Check of er een bepaald woord in staat gebruik ik eregi
Voor de email adres check zou ik Edit:
Deze pagina voor email adres check ook even: klik en bekijk gelijk even de reacties, want 1 iemand heeft ook nog een host resolver (datgene achter de @) check.
Edit:
De laatste edit voor vandaag :P
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
function email_validator($email)
{
$email_host = explode("@", $email);
$email_host = $email_host[1];
$email_resolved = gethostbyname($email_host);
if($email_resolved == $email_host)
{
$valid = FALSE;
}
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
{
$valid = TRUE;
}
else
{
$valid = FALSE;
}
return $valid;
}
$check_email = email_validator($mail_variabele);
if ($check_email == FALSE)
{
echo "Ongeldig e-mail adres.";
}
else
{
echo "Geldig e-mail adres.";
}
?>
function email_validator($email)
{
$email_host = explode("@", $email);
$email_host = $email_host[1];
$email_resolved = gethostbyname($email_host);
if($email_resolved == $email_host)
{
$valid = FALSE;
}
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
{
$valid = TRUE;
}
else
{
$valid = FALSE;
}
return $valid;
}
$check_email = email_validator($mail_variabele);
if ($check_email == FALSE)
{
echo "Ongeldig e-mail adres.";
}
else
{
echo "Geldig e-mail adres.";
}
?>
En voor de check required fields:
Ik zou ook nog een strlen toevoegen om te kijken of
En voor eventuele spam:
Check of er een bepaald woord in staat gebruik ik eregi
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
Genoeg oplossingen gevonden denk ik! De Captcha ga ik vanavond even proberen toe te passen evenals de mail header injection en de host resolver, erg handig! Heel erg bedankt alvast!
Ik vraag dit niet uit gemakzucht maar echt omdat ik er nog heel wat moeite mee heb! Hieronder post ik het script dat ik momenteel gebruik, wellicht dat het wat rommelig is met de tabellen. Hopelijk kunnen jullie mij vertellen hoe ik het scriptje ertussen kan plaatsen!
Het wordt een beetje rommelig als ik het hele script plaats zag ik, dus hierbij de belangrijkste stukjes:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
if($_POST['submitform']) {
$Naam = $HTTP_POST_VARS['Naam'];
$Email = $HTTP_POST_VARS['email'];
$onderwerp = $HTTP_POST_VARS['onderwerp'];
$bericht = $HTTP_POST_VARS['bericht'];
$functie = $HTTP_POST_VARS['functie'];
// check required fields
$dcheck = explode(",",$require);
while(list($check) = each($dcheck)) {
if(!$$dcheck[$check]) {
$error .= "$dcheck[$check]<br>";
}
}
// check email address
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[[email protected]]+$", $Email))){
$error .= "Onbekent e-mail adres<br>";}
// display errors
if($error) {
?>
<b><font color="Darkred"><br><br>Foutje! U bent het volgende vergeten in te vullen:</b><br>
<?php echo $error; ?><br>
<a href="#" onClick="history.go(-1)">Ga terug</a> en probeer het opnieuw.</font>
if($_POST['submitform']) {
$Naam = $HTTP_POST_VARS['Naam'];
$Email = $HTTP_POST_VARS['email'];
$onderwerp = $HTTP_POST_VARS['onderwerp'];
$bericht = $HTTP_POST_VARS['bericht'];
$functie = $HTTP_POST_VARS['functie'];
// check required fields
$dcheck = explode(",",$require);
while(list($check) = each($dcheck)) {
if(!$$dcheck[$check]) {
$error .= "$dcheck[$check]<br>";
}
}
// check email address
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[[email protected]]+$", $Email))){
$error .= "Onbekent e-mail adres<br>";}
// display errors
if($error) {
?>
<b><font color="Darkred"><br><br>Foutje! U bent het volgende vergeten in te vullen:</b><br>
<?php echo $error; ?><br>
<a href="#" onClick="history.go(-1)">Ga terug</a> en probeer het opnieuw.</font>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
}
else
{
$browser = $HTTP_USER_AGENT;
$ip = $REMOTE_ADDR;
// format message
$message = "Het volgende bericht is verstuurd via het online contact formulier:
Naam: $Naam
E-mail: $Email
Functie: $functie
Onderwerp: $onderwerp
Bericht:
$bericht
-------------Informatie afzender----------------
Browser: $browser
Gebruikers IP: $ip";
// send mail and print success message
mail($recipientemail,"$subject","$message","From: $Name <$Email>");
if($autoresponse == "yes") {
$autosubject = stripslashes($autosubject);
$automessage = stripslashes($automessage);
mail($Email,"$autosubject","$automessage","From: $recipientname <$recipientemail>");
}
echo "$thanks";
}
}
else {
?>
<form name="contactform" action="<?php echo $PHP_SELF; ?>" method="post">
<input type="hidden" name="require" value="Naam,email,onderwerp,bericht">
<table bgcolor="#D3D3D3" border="1" width="480" align="center">
<p>
<tr>
<td valign="top" align="left" width="30%"> Naam *</td>
<td valign="top" width="70%"><input name="Naam" size="25"></td>
</tr><tr>
<td valign="top" align="left"> Functie</td>
<td valign="top"><input name="functie" size="25"></td>
</tr><tr>
<td valign="top" align="left"> E-mail *</td>
<td valign="top"><input name="Email" size="25"></td>
</tr><tr>
<td valign="top" align="left"> Onderwerp *</td>
<td valign="top"><input name="onderwerp" size="50"></td>
</tr><tr>
<td valign="top" align="left"> Bericht *</td>
<td valign="top"><TEXTAREA COLS=50 ROWS=10 NAME="bericht" WRAP=VIRTUAL>
</TEXTAREA>
</td>
</tr>
<tr height="30" border="0">
}
else
{
$browser = $HTTP_USER_AGENT;
$ip = $REMOTE_ADDR;
// format message
$message = "Het volgende bericht is verstuurd via het online contact formulier:
Naam: $Naam
E-mail: $Email
Functie: $functie
Onderwerp: $onderwerp
Bericht:
$bericht
-------------Informatie afzender----------------
Browser: $browser
Gebruikers IP: $ip";
// send mail and print success message
mail($recipientemail,"$subject","$message","From: $Name <$Email>");
if($autoresponse == "yes") {
$autosubject = stripslashes($autosubject);
$automessage = stripslashes($automessage);
mail($Email,"$autosubject","$automessage","From: $recipientname <$recipientemail>");
}
echo "$thanks";
}
}
else {
?>
<form name="contactform" action="<?php echo $PHP_SELF; ?>" method="post">
<input type="hidden" name="require" value="Naam,email,onderwerp,bericht">
<table bgcolor="#D3D3D3" border="1" width="480" align="center">
<p>
<tr>
<td valign="top" align="left" width="30%"> Naam *</td>
<td valign="top" width="70%"><input name="Naam" size="25"></td>
</tr><tr>
<td valign="top" align="left"> Functie</td>
<td valign="top"><input name="functie" size="25"></td>
</tr><tr>
<td valign="top" align="left"> E-mail *</td>
<td valign="top"><input name="Email" size="25"></td>
</tr><tr>
<td valign="top" align="left"> Onderwerp *</td>
<td valign="top"><input name="onderwerp" size="50"></td>
</tr><tr>
<td valign="top" align="left"> Bericht *</td>
<td valign="top"><TEXTAREA COLS=50 ROWS=10 NAME="bericht" WRAP=VIRTUAL>
</TEXTAREA>
</td>
</tr>
<tr height="30" border="0">
Heel erg bedankt alvast,
Justin
Gewijzigd op 01/01/1970 01:00:00 door Justin Groot
"Ongeldig e-mail adres.Bedankt voor het gebruiken van ons online contact formulier!"
Het ene gedeelte geeft dus aan dat het mailadres fout is, het andere gedeelte zegt dat alles ingevuld is en dus verstuurd kan worden. Dat botst maar ik begrijp nog niet hoe ik dit recht kan zetten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if($_POST['submitform']) {
$Naam = $HTTP_POST_VARS['Naam'];
$Email = $HTTP_POST_VARS['Email'];
$onderwerp = $HTTP_POST_VARS['onderwerp'];
$bericht = $HTTP_POST_VARS['bericht'];
$functie = $HTTP_POST_VARS['functie'];
// check required fields
$dcheck = explode(",",$require);
while(list($check) = each($dcheck)) {
if(!$$dcheck[$check]) {
$error .= "$dcheck[$check]<br>";
}
}
// check email address
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[[email protected]]+$", $Email))){
$error .= "Onbekent e-mail adres<br>";}
// display errors
if($error) {
?>
if($_POST['submitform']) {
$Naam = $HTTP_POST_VARS['Naam'];
$Email = $HTTP_POST_VARS['Email'];
$onderwerp = $HTTP_POST_VARS['onderwerp'];
$bericht = $HTTP_POST_VARS['bericht'];
$functie = $HTTP_POST_VARS['functie'];
// check required fields
$dcheck = explode(",",$require);
while(list($check) = each($dcheck)) {
if(!$$dcheck[$check]) {
$error .= "$dcheck[$check]<br>";
}
}
// check email address
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[[email protected]]+$", $Email))){
$error .= "Onbekent e-mail adres<br>";}
// display errors
if($error) {
?>
Dit is het stukje script uit mijn code en hier probeer ik de code die jij hebt genoemd bij toe te voegen.
en ten laatste nog 1 x lol ;p
hebbie nog iets nuttigs dan kevin?
Kevin schreef op 26.01.2007 19:11:
en ten laatste nog 1 x lol ;p
wtf... wat heb jij nou weer kevin?
@ Justin, vervang even $HTTP_POST_VARS[''] door $_POST['']
en vervang
Code (php)
1
2
3
4
5
2
3
4
5
<?php
// check email address
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[[email protected]]+$", $Email))){
$error .= "Onbekent e-mail adres<br>";}
?>
// check email address
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[[email protected]]+$", $Email))){
$error .= "Onbekent e-mail adres<br>";}
?>
door
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
function email_validator($email)
{
$email_host = explode("@", $email);
$email_host = $email_host[1];
$email_resolved = gethostbyname($email_host);
if($email_resolved == $email_host)
{
$valid = FALSE;
}
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
{
$valid = TRUE;
}
else
{
$valid = FALSE;
}
return $valid;
}
$check_email = email_validator($mail_variabele);
if ($check_email == FALSE)
{
echo "Ongeldig e-mail adres.";
}
else
{
echo "Geldig e-mail adres.";
}
?>
function email_validator($email)
{
$email_host = explode("@", $email);
$email_host = $email_host[1];
$email_resolved = gethostbyname($email_host);
if($email_resolved == $email_host)
{
$valid = FALSE;
}
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
{
$valid = TRUE;
}
else
{
$valid = FALSE;
}
return $valid;
}
$check_email = email_validator($mail_variabele);
if ($check_email == FALSE)
{
echo "Ongeldig e-mail adres.";
}
else
{
echo "Geldig e-mail adres.";
}
?>
Verder zou ik het echt niet weten, het ligt in ieder geval niet aan dàt stukje code.
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
Thanks, helaas werkt het nog niet. Het ligt eraan dat er 2x een controle wordt uitgevoerd. Éentje in jouw stukje script waarbij het e-mail adres gecheckt wordt en één verderop in mijn script waarbij de verplichte velden gecontroleerd worden. Op een of andere manier moet dat samengevoegd worden denk ik, de controle in jou gedeelte zegt nu namelijk wel dat het e-mail adres ongeldig is, maar heeft verder geen invloed want het formulier wordt gewoon verstuurd.