Autor |
Nachricht |
annarama
Threadersteller
Dabei seit: 23.09.2009
Ort: München
Alter: -
Geschlecht:
|
Verfasst Mi 15.05.2013 15:36
Titel PHP Formular Antispam mit verborgenem Feld funzt nicht |
|
|
Guten Tag Liebe Leute,
ich bin gerade am zusammenstückelns eines PHP Formulares. Das Formular hat soweit super funktioniert aber die Menge an Spam die darüber verschickt wurde, war außerordentlich hoch.
Jetzt hab ich gelesen das es die Möglichkeit gibt, in das Formular ein verstecktes Feld einzubauen, das ausgefüllt auf einen Spam-Bot hinweist.
Allerdings bin ich nicht bewandert in PHP und weiß daher nicht wo ich diesen Code
Code: | if(isset($_POST['vo_rname'])) {
// Formular wurde abgeschickt
if(!empty($_POST['nospam'])) {
// Honeypot
die("SPAM");
} else {
/*
* Das Feld "nospam" wurde nicht ausgefüllt, es ist daher
* wahrscheinlich dass es sich um keinen Spambot handelt
*/
// Weitere Validierung der restlichen Felder, Verarbeitung und ggf. Weiterleitung...
}
} |
in den Bestehende Formularcode einbauen soll, damit es funktioniert.
Code: | <?php
// wenn das Formular übermittelt wurde
if(isset($_POST['abschicken'])){
while(list($feld,$wert)=each($_POST)){
// übermittelte Inhalte "entschärfen"
$wert=preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",$wert);
$$feld=$wert;
// die übermittelten Variablen werden zum "Text der Email" zusammengefasst
if($feld!="abschicken") $mailnachricht.=ucfirst($feld).": $wert\n";
}
$mailnachricht.="\nDatum/Zeit: ". date("d.m.Y H:i:s");
// Überprüfen ob alle Pflichtfelder gefüllt sind
empty($na_chname) ? $err[] = "<p>- Bitte den Nachnamen angeben.</p>" : false;
empty($vo_rname) ? $err[] = "<p>- Bitte den Vornamen angeben.</p>" : false;
empty($em_ail) ? $err[] = "<p>- Bitte die Email-Adresse angeben.</p>" : false;
empty($te_xt) ? $err[] = "<p>- Welchen Wunsch haben Sie? Bitte den Text eingeben.</p>" : false;
// wenn nicht, werden die Fehlermeldungen ausgegeben und das "halbgefüllte" Formular angezeigt
if(!empty($err)) {
echo "<p>Bitte korrigieren Sie folgende Fehler:</p>";
foreach($err as $fehler){
echo $fehler;
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table width="100%" border="0" cellpadding="3" cellspacing="1" id="kontaktform" >
<tr>
<td width="140" align="right">*Nachname:</td><td align="left"><input type="text" name="nachname" value="<?php echo $na_chname; ?>" style="width:100%;" /></td>
<td align="right">*Vorname:</td><td align="left"> <input type="text" name="vorname" value="<?php echo $vo_rname; ?>" style="width:100%" /></td>
</tr>
<tr>
<td align="right">Telefon:</td><td align="left"><input type="text" name="telefon" value="<?php echo $te_lefon; ?>" style="width:100%" /></td>
<td align="right">*E-Mail:</td><td align="left"><input type="text" name="email" value="<?php echo $em_ail; ?>" style="width:100%" /> </td>
</tr>
<tr>
<td align="right">Firma:</td><td align="left"><input type="text" name="firma" value="<?php echo $fi_rma; ?>" style="width:100%" /></td>
<td align="right">Postanschrift:</td><td align="left"><input type="text" name="strasse" value="<?php echo $st_rasse; ?>" style="width:100%" /></td>
</tr>
<tr>
<td colspan="4"><textarea rows="12" style="width:100%" name="text"><?php echo $te_xt; ?></textarea></td>
<td align="right"> </td><td> </td><td> </td>
</tr>
<tr>
<td colspan="4" align="center" nowrap><br /><input type="reset" value="Löschen" style="width:30%" class="kontakt_button" /> <input type="submit" name="abschicken" class="kontakt_button" value="Absenden" style="width:30%" /><div class="spam_protect">
<label for="nospam">Dieses Feld bitte nicht ausfüllen! (Spamschutz)</label>
<input id="nospam" name="nospam" type="text" /></div>
</form></td></tr>
</table>
<p>*Pflichtfelder</p>
<?php // sind keine Fehler vorhanden, wird die Email versendet
} else {
$mailbetreff="Kontaktformular ".$_SERVER['HTTP_HOST'];
// HIER DIE EMPFÄNGER EMAIL-ADRESSE ANPASSEN!!!
echo (mail("123@123.de", $mailbetreff, $mailnachricht, "", "-f noreply@123.de")) ? "<p>Vielen Dank für Ihre E-Mail!</p>": "<p>Ein Fehler ist aufgetreten!</p>";
}
// das Formular welches als erstes dem Besucher angezeigt wird
} else { ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table width="100%" border="0" cellpadding="3" cellspacing="1" id="kontaktform">
<tr>
<td width="140" align="right">*Nachname:</td><td align="left"><input type="text" name="na_chname" value="" style="width:100%;" /></td>
<td align="right">*Vorname:</td><td align="left"><input type="text" name="vo_rname" value="" style="width:100%" /></td>
</tr>
<tr>
<td align="right">Telefon:</td><td align="left"><input type="text" name="te_lefon" value="" style="width:100%" /></td>
<td align="right">*E-Mail:</td><td align="left"><input type="text" name="em_ail" value="" style="width:100%" /></td>
</tr>
<tr>
<td align="right">Firma:</td><td align="left"><input type="text" name="fi_rma" value="" style="width:100%" /></td>
<td align="right">Postanschrift:</td><td align="left"><input type="text" name="st_rasse" value="" style="width:100%" /></td>
</tr>
<tr>
<td colspan="4"><textarea rows="12" style="width:100%" name="te_xt"></textarea></td><td></td>
<td></td><td></td>
</tr>
<tr>
<td colspan="4" align="center" nowrap><br /><input type="reset" value="Löschen" style="width:30%" class="kontakt_button" /> <input type="submit" name="abschicken" value="Absenden" style="width:30%" class="kontakt_button" /><div class="spam_protect">
<label for="nospam">Dieses Feld bitte nicht ausfüllen! (Spamschutz)</label>
<input id="nospam" name="nospam" type="text" /></div>
</form></td></tr>
</table>
<p>*Pflichtfelder</p>
<br />
<?php
}
?> |
Ich hoffe mir kann hier vielleicht einer helfen, weil ich das selbe Kontaktformular auf mehreren Seiten verwende und ungern mir etwas neues suchen möchte.
Vielen Dank!
Liebe Grüße
Anna
|
|
|
|
|
DEKONSTRUKTIV
Dabei seit: 22.06.2009
Ort: bln
Alter: -
Geschlecht: -
|
Verfasst Mi 15.05.2013 16:02
Titel Re: PHP Formular Antispam mit verborgenem Feld funzt nicht |
|
|
annarama hat geschrieben: |
Allerdings bin ich nicht bewandert in PHP |
dann is das eh zum scheitern verurteilt.
|
|
|
|
|
Anzeige
|
|
|
annarama
Threadersteller
Dabei seit: 23.09.2009
Ort: München
Alter: -
Geschlecht:
|
Verfasst Mi 15.05.2013 16:24
Titel
|
|
|
Wäre ichs, müsste ich nicht um Hilfe bitten. Aber mach deinem Namen ruhig weiter alle Ehre.
Zuletzt bearbeitet von annarama am Mi 15.05.2013 16:24, insgesamt 1-mal bearbeitet
|
|
|
|
|
Karlarsch
Dabei seit: 05.02.2007
Ort: -
Alter: 58
Geschlecht:
|
Verfasst Mi 15.05.2013 17:28
Titel
|
|
|
annarama hat geschrieben: | Wäre ichs, müsste ich nicht um Hilfe bitten. |
Es gibt genug Quellen die es dir ermöglichen PHP im Selbststudium zu lernen. PHP nutzen zu wollen ohne zu wissen was man da macht ist grob fahrlässig und leichtsinnig.
Darüber hinaus gibt es auch viele Quellen die dir erklären wie man sicheres Formularhandling mit PHP zu machen ist.
Wenn du dann auch ein konkretes Problem stößt, helfen wir gerne. Du wirst von uns aber (i.d.R.) keinen fertigen Code bekommen sondern Hilfe zur Selbsthilfe.
Wenn du nicht willens oder motiviert bist dich selber in das Thema einzuarbeiten, dann gibt es immer noch die Jobbörse. Dort kannst du jemanden suchen der dein Problem für dich behebt.
Gruß
Karl
|
|
|
|
|
annarama
Threadersteller
Dabei seit: 23.09.2009
Ort: München
Alter: -
Geschlecht:
|
Verfasst Do 16.05.2013 11:24
Titel
|
|
|
Meiner Ansicht nach habe ich ein konkretes Problem. Ich verlange keinen kompletten Code oder eine Abhandlung über PHP. Es ist auch nicht so das ich mich nicht einlesen will in das Thema, aber bei PHP braucht man als Anfänger manchmal eine Hilfestellung. Ich habe selber schon sämtliche varianten ausprobiert und nichts funktioniert. Aber wenn mir hier keiner helfen will dann muss ich mir selbst wohl anders helfen.
Bin sehr enttäuscht über die "Hilfsbereitschaft".
|
|
|
|
|
Alex
Dabei seit: 29.11.2005
Ort: Dortmund
Alter: 37
Geschlecht:
|
Verfasst Do 16.05.2013 11:30
Titel
|
|
|
Dein "konkretes Problem" ist die Frage, dass du nicht weißt wo du den PHP Code im HTML unterbringen sollst.
Das ist absolute Grundlage und kann man sich definitiv selbst anlesen.
Deiner Beschreibung nach hast eben diese Grundlagen nicht verstanden und daher ist es für uns absolut sinnlos dir Tips zu geben, da du diese auch nicht verstehen würdest.
Im Prinzip wäre das einzige was wir für dich machen KÖNNTEN den komplett fertigen Quellcode zu posten.
Und das ist nicht sinn der Sache
|
|
|
|
|
annarama
Threadersteller
Dabei seit: 23.09.2009
Ort: München
Alter: -
Geschlecht:
|
Verfasst Do 16.05.2013 12:12
Titel
|
|
|
Ich habe nur das Problem, das ich nicht weiß wo genau im PHP Teil, ich den Code einbaue damit er funktioniert. Ich weiß wo er im HTML plaziert werden soll, nur eben nicht innerhalb des PHP Code bereiches. Habe wie gesagt einige Varianten durchprobiert, bin da nicht ganz so unwissend wie man denkt. Habe nur um Hilfe gebeten und habe mich von den ANtworten angegriffen gefühlt, weil man jemandem auch anders sagen kann als mir zu unterstellen ich wäre zu Faul. "Hey ich hab da keinen Bock drauf, das is mehr Arbeit als du denkst, lies dich vll in die if/else Bedingungen ein, und dann ist das Problem leicht zu lösen." Wäre etwas mit dem ich klar komme. Aber meinetwegen können wir das Thema abschließen, habe das Gefühl nicht verstanden zu werden. No hard feelings.
Zuletzt bearbeitet von annarama am Do 16.05.2013 12:13, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
[Javascript] Pro Klick was anderes in Formular-Feld einfügen
Drop Down Menü - FF funzt, IE funzt nicht
input feld formatierungsfrage / 2 os
dynamisches Combo-Feld?
Gutschein Feld in Seite (php)
eMail-Feld-Überprüfung
|
|