[PHP & MySQL] GB Spamschutz

Kimi.
Huhuu leute,
also ich habe mir grad einen Spamschutz in meine Homepage einbauen wollen von: http://www.openwebboard.org/Tutorials/HT...CAPTCHAs_1.html

So, hab auch alles soweit geschafft, ausser den letzten Teil.
Ich soll diesen Code:

php:
1:
2:
3:
if ($_POST['email_address'] !== '') {
    exit('<h1>Es ist ein Fehler aufgetreten!</h1>Sie haben ein Feld ausgefüllt, das nicht ausgefüllt weden darf.');
}


in meine Seite einbinden. Finde aber nicht heraus WO genau. Vielleicht könntet ihr mir ja die Lösung sagen großes Grinsen

Mein gb.php 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:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
<?php
//$_POST['flag']==1, wenn das Formular abgeschickt wurde
if($_POST['flag']==1)
{
//Leerstellen entfernen
$_POST['absender']=trim($_POST['absender']); 
$_POST['mail']=trim($_POST['mail']);
$_POST['hp']=trim($_POST['hp']);
$_POST['text']=trim($_POST['text']);
//evtl. vorhandene HTML-Codes entfernen
$_POST['absender']=strip_tags($_POST['absender']);
$_POST['mail']=strip_tags($_POST['mail']);
$_POST['hp']=strip_tags($_POST['hp']); 
$_POST['text']=strip_tags($_POST['text']); 
//testen, ob alle Felder ausgefüllt sind
if(!$_POST['absender']){$fehler="Bitte gib Deinen Namen an! <br>";}
if(!$_POST['text']){$fehler="Bitte gib eine Nachricht ein! <br>";}
/*
Wenn Fehler vorhanden, die Textausgabe formatieren und $_POST['flag'] zurücksetzen, damit das Formular erneut angezeigt wird
*/
if($fehler)
{
$meldung="".$fehler."";
unset($_POST['flag']);
}
else //wenn alles ok ist, geht es weiter
{
//Zugangsdaten includen
include ("config.inc.php");
//Zeit und Datum ermitteln
$date date("d.m.Y");
$time date("H:i");
//sql-String zusammenbauen
$tabellenname="gb";
$sql="INSERT INTO `gb` ( `id` , `date` , `time` , `name` , `mail` , `hp` , `text` )VALUES ('', '$date', '$time', '".$_POST['absender']."', '".$_POST['mail']."', '".$_POST['hp']."', '".$_POST['text']."');" ;
//Verbindung zur Datenbank
$link mysql_connect("$dbhost""$dbuser""$dbpasswd");
mysql_select_db("$db"$link);
mysql_query($sql$link);
$meldung="Ihre Angaben wurden aufgenommen und werden im Gästebuch eingetragen. <a href="gb.php" target=_self>Weiter</a>";
}
//Ausgeben der Meldung
echo $meldung;
}//Ende $_POST['flag']==1
if(!$_POST['flag'])
{
?>


<html>
<head>
<title>P.hotomoments Kim Kärger</title>
</head>
<body bgcolor="#1e1e1e">
<link rel="stylesheet" href="../CSS/style.css">

<div id="header"> 
<img src="../Grafiken/Photomoments.png" border="0"> 
</div>

<div id="news"> 
<?php
    include("../news.html");
?>
</div>

<div id="menue"> 
<?php
    include("../menue2.html");
?>
</div>


<div id="main"> 

Ich freu mich immer über jeden Gästebucheintrag den Sie mir hinterlassen.
<br>
<br>
<br>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="guestbook">
<input type="hidden" name="flag" value="1">
<table id="table1">
 <tr>
  <td>Ihr Name:</td>
  <td><input type="text" name="absender" value="<?php echo $_POST['absender']; ?>"></td>
 </tr>                                                                                                            
 <tr>
  <td>Ihre E-mailadrese:</td> 
  <td><input type="text" name="mail" value="<?php echo $_POST['mail']; ?>"></td>
 </tr>                                                                                                
 <tr>
  <td>URL zu Ihrer Homepage:</td>
  <td><input type="text" name="hp" value="<?php echo $_POST['hp']; ?>"></td>
 </tr>                                                                                            
 <tr>
  <td>Ihre Nachricht:</td>
  <td><textarea name="text" style="height: 100px; width: 300px;"><?php echo $_POST['text']; ?></textarea>
 </td>
 </tr>
<tr>
<td><label for="blubbeldiblubb">Bitte nicht ausfüllen:</label>
<td><input type="text" name="blubbeldiblubb" id="blubbeldiblubb" size="40" />
</td>
</tr>
</table>
<input type="submit" value="Eintragen">
</form>
<br>
<br>
<br> Die Gästebucheinträge:
<?php
}
?>


<?php    

//Zugangsdaten includen
include ("config.inc.php");   

$anzeigen=5//Anzahl der Datensätze, die auf einer Seite angezeigt werden sollen
if($_GET['vor']){$start=$_GET['limit']+$anzeigen;}
if($_GET['back']){$start=$_GET['limit']-$anzeigen;}
if(!$start){$start=0;}  

//Auslesen der Einträge
$tabellenname="gb";
$sql="SELECT id, date, time, name, mail, hp, text FROM $tabellenname ORDER BY id DESC LIMIT ".$start.", ".$anzeigen;
$link mysql_connect("$dbhost""$dbuser""$dbpasswd");
mysql_select_db("$db"$link);
$result mysql_query($sql$link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i]=mysql_fetch_array($result);
}     
         
//Ermitteln, wie viele Einträge vorliegen
$sql1="SELECT COUNT(*) FROM $tabellenname ";
$result1 mysql_query($sql1$link);
$maxmysql_result($result1,0,0); 

//Ausgeben der Einträge   
for($i=0;$i<count($ergebnis);$i++)
{   
$text=nl2br($ergebnis[$i]['text']);

echo ("
<br /><br />
<table id="table1">
  <tr>
    <td>Von:<b> ".$ergebnis[$i]['name']." (<a href="mailto:".$ergebnis[$i]['mail']."">mail</a> | <a href="".$ergebnis[$i]['hp']."" target=_blank>www</a>)</b> schrieb am ".$ergebnis[$i]['date']." um ".$ergebnis[$i]['time']." Uhr: </td>
  </tr>
  <tr>
    <td>".$text."<br></td>
  </tr></table>");
  }   
  

  //Ausgeben der Links vor und zurück     
  echo "<table border="0" width="100%" id="table1">
<tr><td align="left">";
  if($start>=$anzeigen){echo "<a href="".$_SERVER['PHP_SELF']."?limit=".$start."&back=1">Zurück</a>";}
echo "</td><td align="right">";
if($start+$anzeigen<$max-1){echo "<a href="".$SERVER['PHP_SELF']."?limit=".$start."&vor=1">Weiter</a>";}
echo "</tr></table>";     
  
?> 
<br><br><br>
</div>
</body></html>
Ceres
Ich würde jetzt einfach mal schätze, dass es dort drunter kommt:

php:
1:
2:
3:
4:
5:
6:
//testen, ob alle Felder ausgefüllt sind
if(!$_POST['absender']){$fehler="Bitte gib Deinen Namen an! <br>";}
if(!$_POST['text']){$fehler="Bitte gib eine Nachricht ein! <br>";}
if ($_POST['email_address'] !== '') {
    exit('<h1>Es ist ein Fehler aufgetreten!</h1>Sie haben ein Feld ausgefüllt, das nicht ausgefüllt weden darf.');
}
Kimi.
Hmm, nein wenn ich es dort einfüge dann wird mir die Meldung

Es ist ein Fehler aufgetreten!
Sie haben ein Feld ausgefüllt, das nicht ausgefüllt weden darf.

immer angezeigt, egal ob ich das Feld ausfülle oder nicht.



EDIT: // Doch es funktioniert xD Hab den falschen Namen ausversehen angegeben :'D Vielen Dank Herz
Dome
das würde ich spontan mal raten großes Grinsen

achte auf den code ab zeile 17 Augenzwinkern da macht er ja die überprüfung Augenzwinkern
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:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:

<?php
//$_POST['flag']==1, wenn das Formular abgeschickt wurde
if($_POST['flag']==1)
{
//Leerstellen entfernen
$_POST['absender']=trim($_POST['absender']); 
$_POST['mail']=trim($_POST['mail']);
$_POST['hp']=trim($_POST['hp']);
$_POST['text']=trim($_POST['text']);
//evtl. vorhandene HTML-Codes entfernen
$_POST['absender']=strip_tags($_POST['absender']);
$_POST['mail']=strip_tags($_POST['mail']);
$_POST['hp']=strip_tags($_POST['hp']); 
$_POST['text']=strip_tags($_POST['text']); 
//testen, ob alle Felder ausgefüllt sind
if(!$_POST['absender']){$fehler="Bitte gib Deinen Namen an! <br>";}
if(!$_POST['text']){$fehler="Bitte gib eine Nachricht ein! <br>";}
if ($_POST['email_address'] !== '') {
    $fehler "<h1>Es ist ein Fehler aufgetreten!</h1>Sie haben ein Feld ausgefüllt, das nicht ausgefüllt weden darf";
}
/*
Wenn Fehler vorhanden, die Textausgabe formatieren und $_POST['flag'] zurücksetzen, damit das Formular erneut angezeigt wird
*/
if($fehler)
{
$meldung="".$fehler."";
unset($_POST['flag']);
}
else //wenn alles ok ist, geht es weiter
{
//Zugangsdaten includen
include ("config.inc.php");
//Zeit und Datum ermitteln
$date date("d.m.Y");
$time date("H:i");
//sql-String zusammenbauen
$tabellenname="gb";
$sql="INSERT INTO `gb` ( `id` , `date` , `time` , `name` , `mail` , `hp` , `text` )VALUES ('', '$date', '$time', '".$_POST['absender']."', '".$_POST['mail']."', '".$_POST['hp']."', '".$_POST['text']."');" ;
//Verbindung zur Datenbank
$link mysql_connect("$dbhost""$dbuser""$dbpasswd");
mysql_select_db("$db"$link);
mysql_query($sql$link);
$meldung="Ihre Angaben wurden aufgenommen und werden im Gästebuch eingetragen. <a href="gb.php" target=_self>Weiter</a>";
}
//Ausgeben der Meldung
echo $meldung;
}//Ende $_POST['flag']==1
if(!$_POST['flag'])
{
?>


<html>
<head>
<title>P.hotomoments Kim Kärger</title>
</head>
<body bgcolor="#1e1e1e">
<link rel="stylesheet" href="../CSS/style.css">

<div id="header"> 
<img src="../Grafiken/Photomoments.png" border="0"> 
</div>

<div id="news"> 
<?php
    include("../news.html");
?>
</div>

<div id="menue"> 
<?php
    include("../menue2.html");
?>
</div>


<div id="main"> 

Ich freu mich immer über jeden Gästebucheintrag den Sie mir hinterlassen.
<br>
<br>
<br>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="guestbook">
<input type="hidden" name="flag" value="1">
<table id="table1">
 <tr>
  <td>Ihr Name:</td>
  <td><input type="text" name="absender" value="<?php echo $_POST['absender']; ?>"></td>
 </tr>                                                                                                            
 <tr>
  <td>Ihre E-mailadrese:</td> 
  <td><input type="text" name="mail" value="<?php echo $_POST['mail']; ?>"></td>
 </tr>                                                                                                
 <tr>
  <td>URL zu Ihrer Homepage:</td>
  <td><input type="text" name="hp" value="<?php echo $_POST['hp']; ?>"></td>
 </tr>                                                                                            
 <tr>
  <td>Ihre Nachricht:</td>
  <td><textarea name="text" style="height: 100px; width: 300px;"><?php echo $_POST['text']; ?></textarea>
 </td>
 </tr>
<tr>
<td><label for="blubbeldiblubb">Bitte nicht ausfüllen:</label>
<td><input type="text" name="blubbeldiblubb" id="blubbeldiblubb" size="40" />
</td>
</tr>
</table>
<input type="submit" value="Eintragen">
</form>
<br>
<br>
<br> Die Gästebucheinträge:
<?php
}
?>


<?php    

//Zugangsdaten includen
include ("config.inc.php");   

$anzeigen=5//Anzahl der Datensätze, die auf einer Seite angezeigt werden sollen
if($_GET['vor']){$start=$_GET['limit']+$anzeigen;}
if($_GET['back']){$start=$_GET['limit']-$anzeigen;}
if(!$start){$start=0;}  

//Auslesen der Einträge
$tabellenname="gb";
$sql="SELECT id, date, time, name, mail, hp, text FROM $tabellenname ORDER BY id DESC LIMIT ".$start.", ".$anzeigen;
$link mysql_connect("$dbhost""$dbuser""$dbpasswd");
mysql_select_db("$db"$link);
$result mysql_query($sql$link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i]=mysql_fetch_array($result);
}     
         
//Ermitteln, wie viele Einträge vorliegen
$sql1="SELECT COUNT(*) FROM $tabellenname ";
$result1 mysql_query($sql1$link);
$maxmysql_result($result1,0,0); 

//Ausgeben der Einträge   
for($i=0;$i<count($ergebnis);$i++)
{   
$text=nl2br($ergebnis[$i]['text']);

echo ("
<br /><br />
<table id="table1">
  <tr>
    <td>Von:<b> ".$ergebnis[$i]['name']." (<a href="mailto:".$ergebnis[$i]['mail']."">mail</a> | <a href="".$ergebnis[$i]['hp']."" target=_blank>www</a>)</b> schrieb am ".$ergebnis[$i]['date']." um ".$ergebnis[$i]['time']." Uhr: </td>
  </tr>
  <tr>
    <td>".$text."<br></td>
  </tr></table>");
  }   
  

  //Ausgeben der Links vor und zurück     
  echo "<table border="0" width="100%" id="table1">
<tr><td align="left">";
  if($start>=$anzeigen){echo "<a href="".$_SERVER['PHP_SELF']."?limit=".$start."&back=1">Zurück</a>";}
echo "</td><td align="right">";
if($start+$anzeigen<$max-1){echo "<a href="".$SERVER['PHP_SELF']."?limit=".$start."&vor=1">Weiter</a>";}
echo "</tr></table>";     
  
?> 
<br><br><br>
</div>
</body></html>
Oli
Hi,

kleine Anmerkung: Dass das nicht auszufüllende Feld email_adress oder so heißt, ist Absicht. Wenn du das auf blubbeldiblubb umbenennst wird das auch kein Spambot ausfüllen, weil er das Feld nicht zuordnen kann.

LG