App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
[PHP] Spam-Schutz für einfaches Gästebuch
- Ersteller Maxefix
- Erstellt am
Hallo,
ich hab mal wieder ein paar Probleme. Ich nutze auf mehreren Seiten das mtGästebuch von michatronic.de/ (allerdings nicht die aktuelle Version). Soweit so gut, das Gästebuch ist IMO nicht schlecht. Schön kompakt und einfach aufgebaut. Problem ist nur, dass jetzt ein Spambot mein Gästebuch entdeckt hat und da selbiges keinen Spam-Schutz wie Captcha hat, ist das äußerst suboptimal -> ~100 Spameinträge pro Tag.
Deshalb wollte ich so ein Captcha einbaun. Hab auch ein Tutorial gefunden. Ich hab jetzt auch versucht das einzubauen, aber funktionieren tuts nicht. Die Testinstallation ist hier zu finden. Der Inhalt der index.php sieht so aus:
Meine Bitte: Kann das mal bitte jemand anschaun und mir da weiterhelfen? Hab halt wenig Lust wieder nen anderes Gästebuch zu suchen, vorallem da die meisten mir viel zu aufwendig sind (viele Funktionen brauch ich gar nicht).
Vielen Dank für eure Hilfe.
MFG Max
ich hab mal wieder ein paar Probleme. Ich nutze auf mehreren Seiten das mtGästebuch von michatronic.de/ (allerdings nicht die aktuelle Version). Soweit so gut, das Gästebuch ist IMO nicht schlecht. Schön kompakt und einfach aufgebaut. Problem ist nur, dass jetzt ein Spambot mein Gästebuch entdeckt hat und da selbiges keinen Spam-Schutz wie Captcha hat, ist das äußerst suboptimal -> ~100 Spameinträge pro Tag.
Deshalb wollte ich so ein Captcha einbaun. Hab auch ein Tutorial gefunden. Ich hab jetzt auch versucht das einzubauen, aber funktionieren tuts nicht. Die Testinstallation ist hier zu finden. Der Inhalt der index.php sieht so aus:
PHP:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="de-DE" lang="de-DE" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; iso-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="expires" content="0" />
<title>Gästebuchtitel</title>
</head>
<body>
<h1>Gästebuch</h1>
<?
if(!$_GET['action']) {
print "<p><a href=\"?action=add\">Klicke hier um dich ins Gästebuch einzutragen</a></p>\n"; }
require("config.inc.php");
$action = $_GET['action'];
if($action == '') {
$daten = mysql_query("SELECT count(id) as gesamt from $db_table");
$count = mysql_fetch_array($daten);
// SEITENFUNKTION!
$page = $_GET['page'];
$number = $count[gesamt];
if($page == '') {
$page = 0; }
$seiten = floor($number/$proseite);
$start = $page * $proseite;
$sql = "SELECT * FROM $db_table ORDER BY id DESC LIMIT ".$start.", ".$proseite."";
$result = @mysql_query($sql, $db);
$ende = $start + $proseite;
if($ende>$number){ $ende = $number; }
if($number == 0) {
print "<p>Zur Zeit sind keine Einträge vorhanden!</p>\n"; }
elseif($number == 1) {
print "<p>Zur Zeit ist ".$number." Eintrag vorhanden!</p>\n"; }
else {
print "<p>Zur Zeit sind ".$number." Einträge im Gästebuch</p>\n"; }
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)) {
$row[text] = nl2br($row[text]);
$row[text] = stripslashes($row[text]);
$row[kommentar] = nl2br($row[kommentar]);
$row[kommentar] = stripslashes($row[kommentar]);
$date = strtotime($row[datum]);
$date = date("d.m.Y", $date);
$time = strtotime($row[uhrzeit]);
$time = date("H:i", $time);
/* Ausgabe-Template */
print "<div>".$row[name];
$mail = $row[email];
if($mail == '') {
print ""; }
else {
print " <a href=\"mailto:".$row[email]."\"><img src=\"email.gif\" width=\"16\" height=\"17\" alt=\"eMail\" /></a>"; }
$homepage = $row[homepage];
if($homepage == '') {
print ""; }
elseif(strtolower(substr($homepage, 0, 7)) == "http://") {
print " <a href=\"".$row[homepage]."\"><img src=\"homepage.gif\" width=\"16\" height=\"16\" alt=\"Homepage\" /></a>"; }
else {
print " <a href=\"http://".$row[homepage]."\"><img src=\"homepage.gif\" width=\"16\" height=\"16\" alt=\"Homepage\" /></a>"; }
print " schrieb am ".$date." um ".$time." Uhr:\n";
print "<p>\n".$row[text]."\n";
$kommentar = $row[kommentar];
if($kommentar == '') {
print ''; }
else {
print "<br /><br /><i>Kommentar des Administrators:</i><br />".$row[kommentar]."\n"; }
print "</p></div>\n";
}
if ($page>0) {
$i=$page-1;
echo "<a href=\"?page=$i\">Zurück</a>";
}
if ($page<$seiten) {
$i=$page+1;
echo "<a href=\"?page=$i\">Weiter</a>";
}
}
/* Ende des Ausgabe-Templates */
elseif($action == 'add') {
?>
<h2>Eintragen:</h2>
<form method='post' action='?action=save'>
<p>
<label for="name">Name*:</label><br />
<input type="text" name="name" id="name" size="50" /><br />
<label for="email">eMail Adresse:</label><br />
<input type="text" name="email" id="email" size="50" /><br />
<label for="homepage">Homepage:</label><br />
<input type="text" name="homepage" id="homepage" size="50" /><br />
<label for="text">Eintrag*:</label><br />
<textarea cols="40" rows="10" name="text" id="text"></textarea><br />
<label for="loesung"><img src="bar.php?<?php echo SID; ?>" alt="captcha" /></label><br />
<input type="text" name="loesung" id="loesung" size="6" /><br />
<input type="submit" value="Abschicken" name="submit" /> <input type="reset" value="Zurücksetzen" name="reset" /><br />
<input type="hidden" name="<?php session_name(); ?>" value="<?php session_id(); ?>" />
* Pflichtfelder
</p>
</form>
<p><a href="./">Zurück</a></p>
<?
} elseif($action == 'save') {
if(empty($_POST['name']) OR empty($_POST['text'])) {
$zurueck = "<br /><a href='javascript:history.back(-1)'>Zurück</a>";
$fehler = "<b>Fehler</b><br />";
if(empty($_POST['name'])) {
$fehler .= "- Bitte gebe einen Namen ein!<br />"; }
if(empty($_POST['text'])) {
$fehler .= "- Bitte gebe einen Kommentar ein!<br />"; }
if($_SESSION['loesung'] != $_POST['loesung']) {
$fehler .= "- Falsche Lösung eingegeben!<br />"; }
else {
$fehler .= ""; }
}
print $fehler."".$zurueck;
if($fehler == '') {
$timestamp = mktime();
$time = date("H:i:s", $timestamp);
$datum = date("Y-m-d", $timestamp);
$_POST['text'] = htmlspecialchars($_POST['text'], ENT_QUOTES);
$sql = "INSERT $db_table (id, name, email, homepage, text, kommentar, uhrzeit, datum) VALUES ('', '$_POST[name]', '$_POST[email]', '$_POST[homepage]', '$_POST[text]', '', '$time', '$datum')";
$ergebnis = @mysql_query($sql);
print "<p>Eintrag erfolgreich!</p>
<p><a href=\"./\">Weiter</a></p>";
} }
?>
<p><a href="admin.php">Adminbereich</a></p>
<p><a href="http://www.michatronic.de">Gästebuch © 2006 by www.michatronic.de</a></p>
</body>
</html>
Meine Bitte: Kann das mal bitte jemand anschaun und mir da weiterhelfen? Hab halt wenig Lust wieder nen anderes Gästebuch zu suchen, vorallem da die meisten mir viel zu aufwendig sind (viele Funktionen brauch ich gar nicht).
Vielen Dank für eure Hilfe.
MFG Max
feelx
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 4.870
- Renomée
- 74
- Standort
- near Zurich
- Mein Laptop
- Macbook Pro 15.4" 2.26 GHz
- Prozessor
- Intel Core i7-920
- Mainboard
- Asus Rampage II Extreme
- Kühlung
- Noctua NH-U12P
- Speicher
- 6 x 2GB Corsair 1333
- Grafikprozessor
- Zotac Geforce 260 (200b)
- Display
- 26", NEC 2690 WUXI, 1920x1200
- HDD
- 1 TB - WD1002 FBYS
- Optisches Laufwerk
- Lite-on - lautes ding :)
- Soundkarte
- X-FI Supreme
- Gehäuse
- LianLi PC A17, 2x NB Multiframe S-Series MF12-S1
- Netzteil
- Enermax 82+Modu - 625W
- Betriebssystem
- Vista 64bit / Ubuntu 64bit
- Verschiedenes
- Beim DVD-Brenner musste es schnell gehen (Lieferbar und günstig sein.) , Suche aber was leiseres
Hi
Verdacht: Fehlen bei der bar.php etwa die <?php ............ ?> Tags? Eine Ausgabe wie hier, kann ja so ned funktionieren... http://playground.maxefix.de/gb/bar.php
Verdacht: Fehlen bei der bar.php etwa die <?php ............ ?> Tags? Eine Ausgabe wie hier, kann ja so ned funktionieren... http://playground.maxefix.de/gb/bar.php
Oh, das wars. Peinlich peinlich Jetzt funktioniert schonmal das Bild, aber selbst wenn man was falsches eingibt funktioniert allesVerdacht: Fehlen bei der bar.php etwa die <?php ............ ?> Tags? Eine Ausgabe wie hier, kann ja so ned funktionieren... http://playground.maxefix.de/gb/bar.php
MFG Max
feelx
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 4.870
- Renomée
- 74
- Standort
- near Zurich
- Mein Laptop
- Macbook Pro 15.4" 2.26 GHz
- Prozessor
- Intel Core i7-920
- Mainboard
- Asus Rampage II Extreme
- Kühlung
- Noctua NH-U12P
- Speicher
- 6 x 2GB Corsair 1333
- Grafikprozessor
- Zotac Geforce 260 (200b)
- Display
- 26", NEC 2690 WUXI, 1920x1200
- HDD
- 1 TB - WD1002 FBYS
- Optisches Laufwerk
- Lite-on - lautes ding :)
- Soundkarte
- X-FI Supreme
- Gehäuse
- LianLi PC A17, 2x NB Multiframe S-Series MF12-S1
- Netzteil
- Enermax 82+Modu - 625W
- Betriebssystem
- Vista 64bit / Ubuntu 64bit
- Verschiedenes
- Beim DVD-Brenner musste es schnell gehen (Lieferbar und günstig sein.) , Suche aber was leiseres
Hi
Hmmm... irgendwas mit der Session ID klappt nicht...
Beim Formular steht nämlich das hidden input feld wie folgt im Quellcode:
Eigentlich sollte beim Name ja der Session Name und bei der ID die Session ID eingetragen sein...
Wenn ich übermittle kommt laut http-header auch nur das an:
nicht aber die Session-Infos.
Weiss aber momentan nicht weshalb?!?
Aber selbst wenn - die Bedingung
dürfte ja trotzdem nicht erfüllt sein (also session_loesung UND post_loesung müssen beide leer sein, sonst käme ja ein "FEHLER" und die variable $fehler wäre nicht leer - und folglich würde der Eintrag nicht eingetragen...
bau mal nen echo $_SESSION['loesung'] und echo $_POST['loesung'] dazu ein... dann weiss man mindestens was die variablen enthalten... (vermutlich beide leer?)
Aber mir ist noch ned klar weshalb die session_Id bzw _name nicht im hidden input feld eingetragen werden... hmhmhmmmmmmmmmm
Hmmm... irgendwas mit der Session ID klappt nicht...
Beim Formular steht nämlich das hidden input feld wie folgt im Quellcode:
HTML:
<input type="hidden" name="" value="" />
Wenn ich übermittle kommt laut http-header auch nur das an:
Code:
name=feelx&email=&homepage=&text=gleich+noch+ein+Test+%3B%29&[COLOR=Red]loesung=866585[/COLOR]&submit=Abschicken&=
Weiss aber momentan nicht weshalb?!?
Aber selbst wenn - die Bedingung
PHP:
if($_SESSION['loesung'] != $_POST['loesung'])
bau mal nen echo $_SESSION['loesung'] und echo $_POST['loesung'] dazu ein... dann weiss man mindestens was die variablen enthalten... (vermutlich beide leer?)
Aber mir ist noch ned klar weshalb die session_Id bzw _name nicht im hidden input feld eingetragen werden... hmhmhmmmmmmmmmm
feelx
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 4.870
- Renomée
- 74
- Standort
- near Zurich
- Mein Laptop
- Macbook Pro 15.4" 2.26 GHz
- Prozessor
- Intel Core i7-920
- Mainboard
- Asus Rampage II Extreme
- Kühlung
- Noctua NH-U12P
- Speicher
- 6 x 2GB Corsair 1333
- Grafikprozessor
- Zotac Geforce 260 (200b)
- Display
- 26", NEC 2690 WUXI, 1920x1200
- HDD
- 1 TB - WD1002 FBYS
- Optisches Laufwerk
- Lite-on - lautes ding :)
- Soundkarte
- X-FI Supreme
- Gehäuse
- LianLi PC A17, 2x NB Multiframe S-Series MF12-S1
- Netzteil
- Enermax 82+Modu - 625W
- Betriebssystem
- Vista 64bit / Ubuntu 64bit
- Verschiedenes
- Beim DVD-Brenner musste es schnell gehen (Lieferbar und günstig sein.) , Suche aber was leiseres
hmm... das heisst, dass die beiden nicht den gleicen inhalt haben? Dann müsste doch auch die entsprechende Bedingung greifen und entsprechend "Falsche Lösung" auslösen
So - ich widme mich nun auch noch einer komplexen Sache... einem komlexen Rotwein bis später
So - ich widme mich nun auch noch einer komplexen Sache... einem komlexen Rotwein bis später
So, hab den Fehler gefunden. Diese Zeile war der Übeltäter:
Nur wenn der Name und der Eintrag gefehlt hat, wurden die $_POST und $_SESSION-Variablen verglichen. So hab ich das Problem jetzt gelöst:
Und Danke für deine Hilfe
MFG Max
PHP:
if(empty($_POST['name']) OR empty($_POST['text'])) {
...
PHP:
if(empty($_POST['name']) OR empty($_POST['text']) OR $_SESSION['loesung'] != $_POST['loesung']) {
...
Na dann zum WohlSo - ich widme mich nun auch noch einer komplexen Sache... einem komlexen Rotwein bis später
Und Danke für deine Hilfe
MFG Max
feelx
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 4.870
- Renomée
- 74
- Standort
- near Zurich
- Mein Laptop
- Macbook Pro 15.4" 2.26 GHz
- Prozessor
- Intel Core i7-920
- Mainboard
- Asus Rampage II Extreme
- Kühlung
- Noctua NH-U12P
- Speicher
- 6 x 2GB Corsair 1333
- Grafikprozessor
- Zotac Geforce 260 (200b)
- Display
- 26", NEC 2690 WUXI, 1920x1200
- HDD
- 1 TB - WD1002 FBYS
- Optisches Laufwerk
- Lite-on - lautes ding :)
- Soundkarte
- X-FI Supreme
- Gehäuse
- LianLi PC A17, 2x NB Multiframe S-Series MF12-S1
- Netzteil
- Enermax 82+Modu - 625W
- Betriebssystem
- Vista 64bit / Ubuntu 64bit
- Verschiedenes
- Beim DVD-Brenner musste es schnell gehen (Lieferbar und günstig sein.) , Suche aber was leiseres
oh... da oben hab ich gar nicht geschaut congrats! und hoffe, du hast auch noch einen grund anzustossen
Thx, aber muss noch nen anderes Captcha suchen. Des was ich da hab sieht ja nicht allzu professionell aus.oh... da oben hab ich gar nicht geschaut congrats! und hoffe, du hast auch noch einen grund anzustossen
MFG Max
PS: Zum Anstossen hab ich leider kein Grund, aber egal
So, hab doch noch nen Problem. Und zwar wenn man das erste mal das Gästebuch aufruft kommt folgender Fehler: "XML parsing failed: not well-formed"
Und zwar liegt des daran, das alle Links ein "&ganzvieilekomischezahlen" hinten dran ham. Ich denk des liegt an dem Befehl "session_start()", aber was kann ich dagegen tun?
MFG Max
EDIT: OK, mit der Funktion ini_set() konnte ich das Problem lössen
Und zwar liegt des daran, das alle Links ein "&ganzvieilekomischezahlen" hinten dran ham. Ich denk des liegt an dem Befehl "session_start()", aber was kann ich dagegen tun?
MFG Max
EDIT: OK, mit der Funktion ini_set() konnte ich das Problem lössen
Zuletzt bearbeitet:
feelx
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 4.870
- Renomée
- 74
- Standort
- near Zurich
- Mein Laptop
- Macbook Pro 15.4" 2.26 GHz
- Prozessor
- Intel Core i7-920
- Mainboard
- Asus Rampage II Extreme
- Kühlung
- Noctua NH-U12P
- Speicher
- 6 x 2GB Corsair 1333
- Grafikprozessor
- Zotac Geforce 260 (200b)
- Display
- 26", NEC 2690 WUXI, 1920x1200
- HDD
- 1 TB - WD1002 FBYS
- Optisches Laufwerk
- Lite-on - lautes ding :)
- Soundkarte
- X-FI Supreme
- Gehäuse
- LianLi PC A17, 2x NB Multiframe S-Series MF12-S1
- Netzteil
- Enermax 82+Modu - 625W
- Betriebssystem
- Vista 64bit / Ubuntu 64bit
- Verschiedenes
- Beim DVD-Brenner musste es schnell gehen (Lieferbar und günstig sein.) , Suche aber was leiseres
btw: welches captcha hast du jetzt verwendet? Ich fand das alte ganz gut... (gut leserlich z.B.)
Hab des alte drin gelassen weil ich keine Lust mehr hatte was anderes zu suchen. Aber jetzt hab ich ein anderes "Problem": Ich versteh des mit den Sessions nicht so ganz. Wenn man das Gästebuch das erste mal besucht haben alle Links ein &SID hinten dran. Wenn ich ein zweites mal drauf zugreif (bzw aktualisier) sind die Links wieder normal. Wenn ich die Cookies für die Seite lösch und nochmal drauf geh sind die komischen Links wieder da. Was hat das zu bedeuten bzw warum ist das so?btw: welches captcha hast du jetzt verwendet? Ich fand das alte ganz gut... (gut leserlich z.B.)
MFG Max
danysahne333
Lieutnant
- Mitglied seit
- 19.12.2005
- Beiträge
- 87
- Renomée
- 1
- Standort
- Cottbus
- Prozessor
- Intel Core2Duo 4600 @ 3,0 Ghz (Standard-VCore)
- Mainboard
- ABIT Fatal1ty FP-IN9 SLI
- Kühlung
- Boxed
- Speicher
- 3x1024 MB OCZ PC2-6400 Vista Upgrade
- Grafikprozessor
- Asus 9600 GT
- Display
- 19", Acer 1440x900
- Soundkarte
- onboard 7.1 HD
- Gehäuse
- MS-Tech
- Betriebssystem
- Windows Vista Ultimate x86
- Webbrowser
- IE 7
- Schau Dir das System auf sysprofile.de an
Das hat mit der Cookie/Session-funktion und zu tun. Heisst wenn kein Cookie gesetzt werden kann wird automatisch an alle Links die Session-ID angehangen.
Zum Thema Captcha biete ich seid längerer Zeit selbst eins an. Ist sehr gefragt und gut bewertet!
www.cb-talk.de/captcha.html <- der Link
Zum Thema Captcha biete ich seid längerer Zeit selbst eins an. Ist sehr gefragt und gut bewertet!
www.cb-talk.de/captcha.html <- der Link
Eine simple möglichkeit spambots auszusperren ist auch, einfach eine checkbox die man anhaken muss.
Klappt meistens.
Checkbox hört sich noch komfortabler an, als meine Lösung: http://www.abi2006badkoen.de/index.php?action=gb_eintragen
Klappt jedenfalls optimal.
flO
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 2K
- Antworten
- 3
- Aufrufe
- 7K
- Antworten
- 5
- Aufrufe
- 7K