Spam in mijn gastenboek
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
list($Username, $Domain) = split("@",$email);
if(getmxrr($Domain, $MXHost)){
return true;
} else {
if(fsockopen($Domain, 25, $errno, $errstr, 30)){
return true;
} else {
return false;
}
}
} else {
return false;
}
}
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
list($Username, $Domain) = split("@",$email);
if(getmxrr($Domain, $MXHost)){
return true;
} else {
if(fsockopen($Domain, 25, $errno, $errstr, 30)){
return true;
} else {
return false;
}
}
} else {
return false;
}
}
Deze had ik gevonden op één of andere website.
Dit heeft de spam zeker doen afnemen, maar sinds twee dagen is de spam er helemaal terug, ik weet dat ik wss de zoveelste ben die met dit probleem afkom, maar ik slaag er niet in gevonden oplossing op een goede manier te integreren in mijn script.
Eén ding hebben alle spam-berichten gemeen, ze proberen url's te posten door <a href="url>klik</a> in te typen. Ik probeer nu dus een controle uit te voeren op het bericht die een fout geeft als hij dergelijke code tegenkomt, url's moeten in het vak website getypt worden.
Is er iemand die mij daarbij kan helpen? of andere mogelijkheden ziet om de spam terug te dringen.
Hier is mijn volledig script:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?php include('gastenboek.inc'); ?>
<?php
// alle fouten rapporteren
error_reporting (E_ALL);
// functie voor het checken van een geldig e-mailadres
function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
list($Username, $Domain) = split("@",$email);
if(getmxrr($Domain, $MXHost)){
return true;
} else {
if(fsockopen($Domain, 25, $errno, $errstr, 30)){
return true;
} else {
return false;
}
}
} else {
return false;
}
}
?>
<center>
<a name="teken"></a>
<p align="center" style="margin-top: 0; margin-bottom: 0"><b><u><font face="Arial, Helvetica, sans-serif" size="5">Teken het Gastenboek</font></u></b></p>
<p class="MsoNormal"> </p>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="form">
<table>
<tr>
<td colspan="2"><?php
if (isset($_POST['submit'])){
$bericht = nl2br ($_POST['berichtpt']);
if ($_POST['naam'] == ""){
echo "<font color=red face=Arial>Naam niet ingevuld<br></font>";
$naamIs = "false";
} else {
$naamIs = "true";
}
if ($_POST['email'] == ""){
echo "<font color=red face=Arial>E-mail niet ingevuld<br></font>";
$emailIs = "false";
} else {
if (isValidEmail($_POST['email'])){
$emailIs = "true";
} else {
echo "<font color=red face=Arial>E-mail onjuist<br></font>";
$emailIs = "false";
}
}
if ($_POST['berichtpt'] == ""){
echo "<font color=red face=Arial>Bericht niet ingevuld<br></font>";
$berichtIs = "false";
} else {
$berichtIs = "true";
}
if ($naamIs == "true"){
if ($emailIs == "true"){
if ($berichtIs == "true"){
$date = date("F j, Y \a\\t g.i a", time());
// opmaak bericht
$post = "
<p><table border=0 callpadding=1 cellspacing=0 width=100%><tr>
<td align=center><table border=0 width=500 cellpadding=3><tr>
<td width=70><span class=MsoNormal align=justify><font face=Arial><b>Datum:</b></font></span></td>
<td><span class=MsoNormal align=justify><font face=Arial>$date</font></span></td>
</tr><tr>
<td><span class=MsoNormal style4 align=justify><font face=Arial><b>Naam:</b></font></span></td>
<td><span class=MsoNormal align=justify><font face=Arial><a href=mailto:$email>$naam</a></font></span></td>
</tr><tr>
<td><span class=MsoNormal align=justify><font face=Arial><b>Website:</b></font></span></td>
<td><span class=MsoNormal align=justify><font face=Arial><a href=$website target=_blank>$website</a></font></span></td>
</tr><tr>
<td colspan=2><span class=MsoNormal align=justify><font face=Arial>$bericht</font></span></td>
</tr></table></td>
</tr></table>
</p><br><hr><br>
";
// open gastenboek.inc
$inc = "gastenboek.inc";
$book = fopen("$inc", "r+");
// als gastenboek.inc ni ope wilt
if(!$book) die ("<font color=red face=Arial>Fout bij het posten van het gastenboek, probeer later opnieuw. Als dit vaker voorkomt verwittig dan aub de webmaster via Contacts.<br></font>");
// write new entry to top of file
flock($book,1);
$old_data = fread($book, filesize($inc));
rewind($book);
fwrite($book, "$post" . $old_data);
flock($book,3);
fclose($book);
// Opmaak e-mail
$message = "
Automatisch gegenereerde e-mail:
Nieuw bericht in gastenboek zilverenorgel.be:
Naam: $naam
Email: $email
Website: $website
Bericht: $bericht
-----------------------------
";
// zend email
mail("[email protected]","Nieuw bericht in gastenboek","$message","From: $naam <$email>");
// bedankt berichtje en formulier verbergen
echo "<font face=Arial>Bedankt ". $_POST['naam'].", uw bericht werd succesvol gepost</font>";
$okIs = "true";
}
}
}
}
?></td>
</tr>
<?php
if ($okIs == "true"){
echo "<br>";
} else {
?>
<tr>
<td width="70"><span class=MsoNormal align=justify><strong><font face=Arial>Naam:</font></strong></span></td>
<td><input type="text" name="naam" size="40" <?php if (isset($_POST['submit'])){ echo "value=\"".$_POST['naam']."\""; } ?>></td>
</tr><tr>
<td><span class=MsoNormal align=justify><strong><font face=Arial>Email:</font></strong></span></td>
<td><input type="text" name="email" size="40" <?php if (isset($_POST['submit'])){ echo "value=\"".$_POST['email']."\""; } ?>></td>
</tr><tr>
<td><span class=MsoNormal align=justify><strong><font face=Arial>Website:</font></strong></span></td>
<td><input type="text" name="website" size="40" value="http://" <?php if (isset($_POST['submit'])){ echo "value=\"".$_POST['website']."\""; } ?>></td>
</tr><tr>
<td colspan="2"><span class=MsoNormal align=justify><strong><font face=Arial>Bericht:</font></strong></span></td>
</tr><tr>
<td colspan="2"><textarea name="berichtpt" cols="56" rows="10" <?php if (isset($_POST['submit'])){ echo $_POST['berichtpt']; } ?>></textarea></td>
</tr><tr>
<td colspan="2"><input type="submit" value="Verzend" id="button" name="submit">
<input type="reset" value="Begin opnieuw" id="button" name="reset"></td>
</tr>
<?php } ?>
</table>
</form>
</center>
<?php
// alle fouten rapporteren
error_reporting (E_ALL);
// functie voor het checken van een geldig e-mailadres
function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
list($Username, $Domain) = split("@",$email);
if(getmxrr($Domain, $MXHost)){
return true;
} else {
if(fsockopen($Domain, 25, $errno, $errstr, 30)){
return true;
} else {
return false;
}
}
} else {
return false;
}
}
?>
<center>
<a name="teken"></a>
<p align="center" style="margin-top: 0; margin-bottom: 0"><b><u><font face="Arial, Helvetica, sans-serif" size="5">Teken het Gastenboek</font></u></b></p>
<p class="MsoNormal"> </p>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="form">
<table>
<tr>
<td colspan="2"><?php
if (isset($_POST['submit'])){
$bericht = nl2br ($_POST['berichtpt']);
if ($_POST['naam'] == ""){
echo "<font color=red face=Arial>Naam niet ingevuld<br></font>";
$naamIs = "false";
} else {
$naamIs = "true";
}
if ($_POST['email'] == ""){
echo "<font color=red face=Arial>E-mail niet ingevuld<br></font>";
$emailIs = "false";
} else {
if (isValidEmail($_POST['email'])){
$emailIs = "true";
} else {
echo "<font color=red face=Arial>E-mail onjuist<br></font>";
$emailIs = "false";
}
}
if ($_POST['berichtpt'] == ""){
echo "<font color=red face=Arial>Bericht niet ingevuld<br></font>";
$berichtIs = "false";
} else {
$berichtIs = "true";
}
if ($naamIs == "true"){
if ($emailIs == "true"){
if ($berichtIs == "true"){
$date = date("F j, Y \a\\t g.i a", time());
// opmaak bericht
$post = "
<p><table border=0 callpadding=1 cellspacing=0 width=100%><tr>
<td align=center><table border=0 width=500 cellpadding=3><tr>
<td width=70><span class=MsoNormal align=justify><font face=Arial><b>Datum:</b></font></span></td>
<td><span class=MsoNormal align=justify><font face=Arial>$date</font></span></td>
</tr><tr>
<td><span class=MsoNormal style4 align=justify><font face=Arial><b>Naam:</b></font></span></td>
<td><span class=MsoNormal align=justify><font face=Arial><a href=mailto:$email>$naam</a></font></span></td>
</tr><tr>
<td><span class=MsoNormal align=justify><font face=Arial><b>Website:</b></font></span></td>
<td><span class=MsoNormal align=justify><font face=Arial><a href=$website target=_blank>$website</a></font></span></td>
</tr><tr>
<td colspan=2><span class=MsoNormal align=justify><font face=Arial>$bericht</font></span></td>
</tr></table></td>
</tr></table>
</p><br><hr><br>
";
// open gastenboek.inc
$inc = "gastenboek.inc";
$book = fopen("$inc", "r+");
// als gastenboek.inc ni ope wilt
if(!$book) die ("<font color=red face=Arial>Fout bij het posten van het gastenboek, probeer later opnieuw. Als dit vaker voorkomt verwittig dan aub de webmaster via Contacts.<br></font>");
// write new entry to top of file
flock($book,1);
$old_data = fread($book, filesize($inc));
rewind($book);
fwrite($book, "$post" . $old_data);
flock($book,3);
fclose($book);
// Opmaak e-mail
$message = "
Automatisch gegenereerde e-mail:
Nieuw bericht in gastenboek zilverenorgel.be:
Naam: $naam
Email: $email
Website: $website
Bericht: $bericht
-----------------------------
";
// zend email
mail("[email protected]","Nieuw bericht in gastenboek","$message","From: $naam <$email>");
// bedankt berichtje en formulier verbergen
echo "<font face=Arial>Bedankt ". $_POST['naam'].", uw bericht werd succesvol gepost</font>";
$okIs = "true";
}
}
}
}
?></td>
</tr>
<?php
if ($okIs == "true"){
echo "<br>";
} else {
?>
<tr>
<td width="70"><span class=MsoNormal align=justify><strong><font face=Arial>Naam:</font></strong></span></td>
<td><input type="text" name="naam" size="40" <?php if (isset($_POST['submit'])){ echo "value=\"".$_POST['naam']."\""; } ?>></td>
</tr><tr>
<td><span class=MsoNormal align=justify><strong><font face=Arial>Email:</font></strong></span></td>
<td><input type="text" name="email" size="40" <?php if (isset($_POST['submit'])){ echo "value=\"".$_POST['email']."\""; } ?>></td>
</tr><tr>
<td><span class=MsoNormal align=justify><strong><font face=Arial>Website:</font></strong></span></td>
<td><input type="text" name="website" size="40" value="http://" <?php if (isset($_POST['submit'])){ echo "value=\"".$_POST['website']."\""; } ?>></td>
</tr><tr>
<td colspan="2"><span class=MsoNormal align=justify><strong><font face=Arial>Bericht:</font></strong></span></td>
</tr><tr>
<td colspan="2"><textarea name="berichtpt" cols="56" rows="10" <?php if (isset($_POST['submit'])){ echo $_POST['berichtpt']; } ?>></textarea></td>
</tr><tr>
<td colspan="2"><input type="submit" value="Verzend" id="button" name="submit">
<input type="reset" value="Begin opnieuw" id="button" name="reset"></td>
</tr>
<?php } ?>
</table>
</form>
</center>
Alvast bedankt
Hansje
htmlspecialchars overheen halen..
dan worden alle tekens vervangen bijv:
< <
> >
enz..
edit zo krijg je dus ipv een link gewoon de code te zien ;)
voor het outputten moet je er dan worden alle tekens vervangen bijv:
< <
> >
enz..
edit zo krijg je dus ipv een link gewoon de code te zien ;)
Gewijzigd op 01/01/1970 01:00:00 door Leroy Boerefijn
In script lib van PHPhulp staan er wel een aantal, van plaatjes tot sommen.
Ook hier staat een optie om te proberen.
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$string = $bericht;
if (stristr($string, 'href') === FALSE) {
$berichtIs = "true";
} else {
echo "<font color=red face=Arial>Go away, this form is SPAM free<br></font>";
$berichtIs = "false";
}
if (stristr($string, 'href') === FALSE) {
$berichtIs = "true";
} else {
echo "<font color=red face=Arial>Go away, this form is SPAM free<br></font>";
$berichtIs = "false";
}
@Leroy: Dat werkt zonder problemen. Als er nu toch nog spam doorkomt is hij tenminste niet aanklikbaar.
@thijs: ik hou niet zo van captcha, maar de andere optie heb ik wel gebruikt, een extra veld invoegen lijkt mij idd een goed idee.
Nu maar afwachten of de spamstroom stopt...
Bedankt allemaal!
groetjes
Hansje