php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.12.2007, 20:05  
Erfahrener Benutzer
 
Registriert seit: 12.12.2007
Beiträge: 137
TeazY befindet sich auf einem aufstrebenden Ast
TeazY eine Nachricht über ICQ schicken TeazY eine Nachricht über MSN schicken
Standard Spamschutz bei Formaular verarbeitung

Servus liebe leuts,

wie immer in den letzten tagen habe ich mal wieder eine Frage. Diesmal handelt es sich um eine Spam verhinderung. Und zwar im folgenden beispiel:

Ich habe ein Kontakt-Formular geschrieben. Nachdem man alles erfolgreich ausgefüllt und abgeschickt hat und die email dann auch versendet wurde bekommt der User eine Erfolgsbestätigung in form einer echo ausgabe. Nur leider wars das dann auch schon. Wenn der user jetzt die seite neu lädt bzw. F5 auf seiner Tastatur Festklebt (um es mal krass auszudrücken) wird die email immer weider (bei jedem seite-aktuallisieren) erneut abgeschickt. Das heisst der User könnte ganz einfach per F5 Taste mein Postfach vollspammen und ich darf dann am ende Sortieren.

Um dies zu verhindern suche ich eine effektive Lösung. Was würdet Ihr mir empfehlen? Ich dachte an eine art IP Sperre für ca. 5 minuten oder so. Doch bevor ich da loscode wollt eich trotzdem nochmal nach lösungswegen nachfragen. Evtl. gibt es ja noch etwas besseres als eine IP Sperre.

Desweiteren würde ich gern eine automatische weiterleitung nach dem absenden des Formulars erstellen. Doch das geht soweit ich weiss nur im headbereich mit html, oder? könnt ihr mir da evtl. auch noch was empfehlen bittew? Danke schonmal im voraus.

P.S.: Die Eingabe im Formular habe ich schon halbwegs vor spam geschützt, bzw. eingegrenzt. Die Pflichtpfelder dürfen nciht leer sein und auch das eingabeformat (email überprüfung mit regex etc.) habe ich drin. Es geht also nur um diese reload sperre.
TeazY ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.12.2007, 21:37  
Benutzer
 
Registriert seit: 02.12.2007
Beiträge: 70
Drache befindet sich auf einem aufstrebenden Ast
Standard

headerweiterleitung mit php funktioniert mit der funktion header(),
aber nur, wenn noch kein zeichen an den browser gesandt wurde (leerzeichen oder buchstaben)-
reloadsperre:
*cookies,
*sessions,
*ip-block (ip+datum+uhrzeit in ne datei/db pinseln und nachprüfen, ob schon vorhanden),
*weiterleitung(siehe oben)
Drache ist offline  
Alt 19.12.2007, 13:42  
Erfahrener Benutzer
 
Registriert seit: 12.12.2007
Beiträge: 137
TeazY befindet sich auf einem aufstrebenden Ast
TeazY eine Nachricht über ICQ schicken TeazY eine Nachricht über MSN schicken
Standard

Ja, eine headerweiterung kann ich in dem fall ja nciht nutzen da ich den content ja je nach link aufrufe und der header ja schon mit aufruf der index.php gesendet wurde.
cookies und sessions habe ich atm noch nicht da ich noch keine userverwaltung habe.

Also bleibt wohl vorerst nur die ip sperre übrig.

Geändert von TeazY (19.12.2007 um 13:49 Uhr).
TeazY ist offline  
Alt 20.12.2007, 17:53  
Benutzer
 
Registriert seit: 14.08.2007
Beiträge: 37
Toxo befindet sich auf einem aufstrebenden Ast
Standard

Auch ohne Userverwaltung kannst du $_SESSION[''] nutzen.
Du kannst dem Formular ein verstecktes Feld ( <input type="hidden" value="ZUFALLSWERT" name="checkfield"> ) mitgeben, in dem du z.b. einen md5hash aus zeit+ip. mit übergibst

Sobald Du das Formular überprüfst, schaust du nach, ob der Hashwert des Formulars schon in der Session oder alternativ in einer Datenbank steht
Wenn ja, wurde das Formular abgeschickt, Du sendest die mail nicht nocheinmal.
Wenn nicht, speicherst du diesen Zufallswert in die Datenbank bzw Session und schickst die mail los.

Du kannst die Session / Datenbank ja auf x-Einträge beschränken, oder jedes mal einen Zeitstempel mitspeichern und die Eatenbank leeren, wenn der letzte Zugriff min x-minuten lang her ist.

Wenn der user jetzt das Formular nocheinmal ausfüllt (von hand) könnte er trotzdem nochmal senden, ohne das die IP gesperrt ist, da nur der Hash des zuletzt gesendeten Formular abgespeichert wurde.
Toxo ist offline  
Alt 20.12.2007, 18:12  
Benutzer
 
Registriert seit: 14.08.2007
Beiträge: 37
Toxo befindet sich auf einem aufstrebenden Ast
Standard

Alternativ könnest du den hash wert auch schon beim ausliefern des formulars abspeichern und die mail nur versenden, wenn der wert im $_POST mit dem gespeicherten übereinstimmt. anschliessend löschst du den wert direkt und das "selbe" >Formular kann nicht mehr per reload versendet werden. hier müssen natürlich irgendwann die einträge gelöschtw erden von Formularen, die gar nicht ausgefüllt und daher nie als mail versendet wurden.
Toxo ist offline  
Alt 21.12.2007, 09:36  
Benutzer
 
Registriert seit: 14.08.2007
Beiträge: 37
Toxo befindet sich auf einem aufstrebenden Ast
Standard

Passend zum Thema Spamschutz: Animierte Captcha sind hier zufinden. Ich hab die Captcha02 mal benutzt, das geht gut, die anderen haben mir zulange für den Aufbau benötigt.

Link: Unique PHP Classes

Noch mehr: animiertes Sicherheitsfeld - animierte Captcha - grafischer sicherheitscode

Geändert von Toxo (21.12.2007 um 09:37 Uhr). Grund: Link ergänzt
Toxo ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Spamschutz bei Formaular verarbeitung TeazY PHP Tipps 2008 1 28.12.2007 07:50
Spamschutz - captcha, Zufallszahl verbirgt Fehler Steusi PHP Tipps 2007 12 26.08.2007 13:42
ausgabe während verarbeitung.. md5hash PHP Tipps 2006 2 21.05.2006 14:24
XML Verarbeitung in PHP4 PHP Tipps 2006 3 09.05.2006 13:04
Problem mit Print() und Echo() Verarbeitung. silverghost PHP-Fortgeschrittene 4 28.02.2006 12:07
Spamschutz.... GrungeRocker PHP Tipps 2006 10 03.01.2006 13:35
Verarbeitung mehrerer Buttons PHP Tipps 2005-2 10 03.09.2005 07:39
spamschutz in gästebuch faultier PHP Tipps 2005-2 3 19.06.2005 00:14
[Erledigt] E-Mail Verarbeitung mit catch-all-adressen PHP Tipps 2005 2 04.05.2005 19:03
Spamschutz fürs Formular PHP Tipps 2005 6 23.01.2005 13:30
upload via HTTP => verarbeitung via PHP mAy^daY PHP Tipps 2005 2 08.01.2005 18:11
Spamschutz / IP-Sperre für Formulare gesucht! Beitragsarchiv 4 04.12.2004 17:29
[Erledigt] NAchricht während Verarbeitung PHP Tipps 2004-2 4 13.11.2004 22:51
Methode=POST dynamische Verarbeitung Crypi PHP Tipps 2004 7 21.09.2004 13:47
[Erledigt] meta verarbeitung IE vs Mozilla PHP Tipps 2004 1 20.07.2004 19:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
kontaktformular mit animierte captcha, mail reloadsperre php unique, kontaktformular animierte captcha, php string zeichen abschneiden, reloadsperre für kontaktformulare mit php

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum