Kontaktformular Captcha & alle Felder
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absender
anrede
aufgabe
betreff
code
datei
eingabe
email
feld
header
http
kontakt
message
mitteilung
nachname
nehmen
senden
text
url
vorname
-
Hallo,
ich habe ein Kontaktformular zusammengebastelt, habe nun das noch eingebaut mit dem das alle Felder ausgefüllt sein müssen dass man erst abschicken kann aber leider funktioniert das irgendwie nicht sowie das Captcha funktioniert nicht lässt trotzdem Versenden auch wenn die Rechnung falsch ist :(
mein Script:
kontaktformular_senden:
<? $kontakt=$_REQUEST['kontakt']; $anrede=$_REQUEST['anrede']; $vorname=$_REQUEST['vorname']; $nachname=$_REQUEST['nachname']; $email=$_REQUEST['email']; $betreff=$_REQUEST['betreff']; $mitteilung=$_REQUEST['mitteilung']; $ip=$_REQUEST['ip']; if ($anrede) { $message = "Kontakt: $kontakt \n"; } if ($anrede) { $message .= "Anrede: $anrede \n"; } if ($vorname) { $message .= "Vorname: $vorname \n"; } if ($nachname) { $message .= "Nachname: $nachname \n"; } if ($email) { $message .= "E-Mail: $email \n"; } if ($betreff) { $message .= "Betreff: $betreff \n"; } if ($mitteilung) { $message .= "Mitteilung: $mitteilung \n"; } if ($ip) { $message .= "Benutzer-IP: $ip \n"; } $empfaenger = "mymail"; $absender = "mymail"; $betreff = $_REQUEST['kontakt']; mail($empfaenger, $betreff, $message, "From: $absender", "-f$absender"); ?> <?php include ("header.php"); ?> <?php include ("header-xxxxxxxxxx-xxxxxxx.php"); ?> <?php include ("toppanel-kontaktformular.php"); ?> <?php include ("menu.php"); ?> <div id="content_page"> <div id="content_cen"> <div id="content_sup"> Ihre Nachricht wurde erfolgreich verschickt, wir bemühen uns diese schnellstmöglich zu beantworten. <?php foreach($_REQUEST['message'] as $value) if(empty($value)) echo "Sie haben nicht alle felder ausgefüllt"; ?> </div> </div> </div> <?php include ("footer.php"); ?>
und hier die kontaktformular.php
<?php include ("header.php"); ?> <?php include ("header-xxxxxxxxxx-xxxxxxx.php"); ?> <?php include ("toppanel-kontaktformular.php"); ?> <?php include ("menu.php"); ?> <div id="content_page"> <div id="content_cen"> <div id="content_sup"> <?php session_start(); $erg_eingabe = $_POST['erg_eingabe']; $submit = $_POST['submit']; if($submit == 'Absenden') { if(!empty($erg_eingabe)) { if($erg_eingabe == $_SESSION['ergebnis']) { echo "Richtig"; } else echo "Falsch"; } } else { $zhl1 = rand(0,10); $zhl2 = rand(0,10); $aufgabe = rand(0,2); if($aufgabe == 0) { $text = $zhl1." + ".$zhl2; $erg = $zhl1 + $zhl2; } if($aufgabe == 1) { $text = $zhl1." - ".$zhl2; $erg = $zhl1 - $zhl2; } if($aufgabe == 2) { $text = $zhl1." x ".$zhl2; $erg = $zhl1 * $zhl2; } $_SESSION['ergebnis'] = $erg; } ?> <div style="width:940px" class="wmfg_layout_0"> <form action="kontaktformular_senden.php" method="post" name="kontaktformular"> <ul class="wmfg_questions"> <li class="wmfg_q"> <label class="wmfg_label">Kontakt:</label> <table class="wmfg_answers"> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="kontakt" value="urlshorter" /></td> <td><label class="wmfg_label_a" for="urlshorter">URLSHORTER</label></td> </tr> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="kontakt" value="onpaste" /></td> <td><label class="wmfg_label_a" for="onpaste">ONPASTE</label></td> </tr> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="kontakt" value="forum" /></td> <td><label class="wmfg_label_a" for="forum">Forum</label></td> </tr> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="kontakt" value="sonstiges" checked="checked" /></td> <td><label class="wmfg_label_a" for="sonstiges">Sonstiges</label></td> </tr> </table> </li> <li class="wmfg_q"> <label class="wmfg_label">Anrede:</label> <table class="wmfg_answers"> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="anrede" value="herr" checked="checked" /></td> <td><label class="wmfg_label_a" for="anrede_herr">Herr</label></td> </tr> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="anrede" value="frau" /></td> <td><label class="wmfg_label_a" for="anrede_frau">Frau</label></td> </tr> </table> </li> <li class="wmfg_q"> <label class="wmfg_label" for="vorname">Vorname:</label> <input type="text" class="wmfg_text" name="vorname" id="vorname" value="" /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="nachname">Nachname:</label> <input type="text" class="wmfg_text" name="nachname" id="nachname" value="" /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="email">E-Mail:</label> <input type="text" class="wmfg_text" name="email" id="email" value="" /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="betreff">Betreff:</label> <input type="text" class="wmfg_text" name="betreff" id="betreff" value="" /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="mitteilung">Mitteilung:</label> <textarea class="wmfg_textarea" name="mitteilung" id="mitteilung" style="height:80px"></textarea> </li> <li class="wmfg_q"> <div id="box"> <label class="wmfg_label" for="ip">Ihre IP: <a href="http://example.org/page/impressum.php"><img src="http://example.org/page/images/kontaktformular/question.png" width="auto" height="auto" alt=""></a> <div> <p><strong>INFO</strong></p> <p>Um Missbrauch und wissentliche Falscheingaben zu vermeiden, wird Ihre IP-Adresse im Kontaktformular automatisch mitgeschickt. Anhand dieser Adresse sind Sie über Ihren Provider identifizierbar - Quelle: <a href="http://example.org/page/impressum.php">Datenschutzerklärungen!</a></p> </div> </label> </div> <input type="text" class="wmfg_text" name="ip" id="ip" value="<?php print $_SERVER['REMOTE_ADDR'] ?>" readonly /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="mitteilung">Sicherheitsabfrage:</label> <?php echo $text; ?> = <input type='text' name='erg_eingabe'> </li> <li class="wmfg_q"> <input type="submit" class="wmfg_btn" name="senden" id="senden" value="Senden" /> </li> </ul> </form> </div> </div> </div> </div> <?php include ("footer.php"); ?>
Dankeschön.
Beitrag zuletzt geändert: 2.11.2013 20:30:29 von thomasba -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
ich weiß den Aufbau nicht wie das alles angepasst werden soll das es so funktioneirt wie ich das möchte,
<div id="content_sup"> Ihre Nachricht wurde erfolgreich verschickt, wir bemühen uns diese schnellstmöglich zu beantworten. <?php foreach($_REQUEST['message'] as $value) if(empty($value)) echo "Sie haben nicht alle felder ausgefüllt"; ?> </div>
Weil so wird mir der Text ja immer angezeigt das die Nachricht versendet wurde, und derzeit noch das nicht alle Felder ausgefüllt sind :(
Gruß -
nicht böse sein, aber dein code ist derart wirr, dass ich dich dringend abraten muss, ihn weiter zu entwickeln. ich kann dir 2 ratschläge geben:
1. verwende das hier, ich habe es getestet. (du musst dich zwar anmelden, aber das lohnt sich enorm ;)
2. oder suchst dir ein tut dazu und liest dich ein (hier ein beispiel).
der rest ist dein wahl.
Beitrag zuletzt geändert: 28.10.2013 2:08:27 von czibere -
tobi13 schrieb:
Weil so wird mir der Text ja immer angezeigt das die Nachricht versendet wurde, und derzeit noch das nicht alle Felder ausgefüllt sind :(
Wundert dich das? Es gibt keinen Code, der dafür sorgt, daß diese Meldung nicht angezeigt wird.
"Zusammenkopiert" ist eine sehr wohlwollende Bezeichnung für deine Unternehmungen. Du hast da wohl diverse Ansätze brutal verstümmelt.
Außerdem muß ich meinen Vorpostern recht geben.
Selbst wenn der Code funktionieren würde, solltest Du ihn (siehe menschles Hinweis) nicht verwenden, wenn Du nicht eine weitere Spamschleuder im Web liefern willst. Jede Fehlersuche wird schwer da der Code, wie czibere richtig feststellt, ein, freundlich gesagt, aber wohl dem "zusammenkopieren" geschuldetes, unlesbares Wirrwar darstellt.
efern.
Beitrag zuletzt geändert: 28.10.2013 2:41:21 von fatfreddy -
Hallo
hier nochmal Code wie man prüfen kann, ob alle (deine) Felder ausgefüllt wurden
<?php // -------------------------------------------- $err_msg = ''; if (!empty($_REQUEST['kontakt'])) { $kontakt = $_REQUEST['kontakt']; } else { $err_msg .= "<p> ... Kontakt fehlt </p>\n"; } if (!empty($_REQUEST['anrede'])) { $anrede = $_REQUEST['anrede']; } else { $err_msg .= "<p> ... Anrede fehlt </p>\n"; } if (!empty($_REQUEST['vorname'])) { $vorname = $_REQUEST['vorname']; } else { $err_msg .= "<p> ... Vorname fehlt </p>\n"; } if (!empty($_REQUEST['nachname'])) { $nachname = $_REQUEST['nachname']; } else { $err_msg .= "<p> ... Nachname fehlt </p>\n"; } if (!empty($_REQUEST['email'])) { $email = $_REQUEST['email']; } else { $err_msg .= "<p> ... Email fehlt </p>\n"; } if (!empty($_REQUEST['betreff'])) { $betreff = $_REQUEST['betreff']; } else { $err_msg .= "<p> ... Betreff fehlt </p>\n"; } if (!empty($_REQUEST['mitteilung'])) { $mitteilung = $_REQUEST['mitteilung']; } else { $err_msg .= "<p> ... Mitteilung fehlt </p>\n"; } if (!empty($_REQUEST['ip'])) { $ip = $_REQUEST['ip']; } else { $err_msg .= "<p> ... IP fehlt </p>\n"; } // -------------------------------------------- if (!empty($err_msg)) { print "<p>Fehler ... Sie haben nicht alle Felder ausgefüllt ... </p>\n"; print $err_msg; } else { // --- hier dann das Script zum Email senden, etc .. } // -------------------------------------------- ?>
aber von Captcha ist in dem Code noch nichts drin,
sowas solltest Du aber hinbekommen mit z.B. ReCaptcha
um damit Spam wenigstens ansatzweise zu verhindern.
-
Ja , Top Danke. Muss in dein Script meine Kontaktformular_senden.php Inhalt noch mit rein oder soll hier der Inhalt von Kontaktformular.php mit rein, weil da müsste er normal das schon abfragen?
Danke -
du kannst den Code in beide Dateien einfügen, wenn Du es in 2 Dateien hast
... man kann das alles auch in einer Datei machen
zudem würde ich das "Prüfen" auch noch für Captcha machen
if (!empty($_REQUEST['erg_eingabe'])) { $erg_eingabe = $_REQUEST['erg_eingabe']; } else { $err_msg .= "<p> ... Captcha fehlt </p>\n"; }
und zum Captca ... prüfen ob Eingabe gleich dem Wert in der SESSION ist
if (isset($erg_eingabe) && $erg_eingabe == $_SESSION['ergebnis']) { // ---- Captcha ist richtig ---- weiter --- } else { // ---- Captcha ist falsch ---- abbruch --- }
aber nimm doch ein fertiges und bewährtes Captcha ... http://www.google.com/recaptcha
dafür gibt es auch eine PHP library zum Download und mit Beispiel zur Benutzung.
Beitrag zuletzt geändert: 28.10.2013 10:59:51 von webnfo -
webnfo schrieb:
...<?php // -------------------------------------------- $err_msg = ''; if (!empty($_REQUEST['kontakt'])) { $kontakt = $_REQUEST['kontakt']; } else { $err_msg .= "<p> ... Kontakt fehlt </p>\n"; } if (!empty($_REQUEST['anrede'])) { $anrede = $_REQUEST['anrede']; } else { $err_msg .= "<p> ... Anrede fehlt </p>\n"; } if (!empty($_REQUEST['vorname'])) { $vorname = $_REQUEST['vorname']; } else { $err_msg .= "<p> ... Vorname fehlt </p>\n"; } if (!empty($_REQUEST['nachname'])) { $nachname = $_REQUEST['nachname']; } else { $err_msg .= "<p> ... Nachname fehlt </p>\n"; }... // -------------------------------------------- if (!empty($err_msg)) { ... } else { ... } // -------------------------------------------- ?>
...
webnfo schrieb:
löbliche bemühungen! aber gerade das 'wie einfügen' solltest du näher erklären. das ist nämlich nicht einfach ;) weil eben, wie auch schon ffreddy und meine wenigkeit andeuteten: sein code ist restlos durcheinander, vulgo - ohne jegliche 'geschäfts'logik!
du kannst den Code in beide Dateien einfügen, wenn Du es in 2 Dateien hast
... man kann das alles auch in einer Datei machen
zudem würde ich das "Prüfen" auch noch für Captcha machen
if (!empty($_REQUEST['erg_eingabe'])) { $erg_eingabe = $_REQUEST['erg_eingabe']; } else { $err_msg .= "<p> ... Captcha fehlt </p>\n"; }
und zum Captca ... prüfen ob Eingabe gleich dem Wert in der SESSION ist
if (isset($erg_eingabe) && $erg_eingabe == $_SESSION['ergebnis']) { // ---- Captcha ist richtig ---- weiter --- } else { // ---- Captcha ist falsch ---- abbruch --- }
aber nimm doch ein fertiges und bewährtes Captcha ... http://www.google.com/recaptcha
dafür gibt es auch eine PHP library zum Download und mit Beispiel zur Benutzung. -
Hallo,
hab alles rausgebaut, so wie das Kontaktformular Standart war, ohne irgendwie Sicherheitsabfragen bzw. dass alle Felder ausgefüllt sein müssen sieht nun so aus, sollte normalerweise nun übersichtlicher sein:
mein kontaktformular.php:
<?php include ("header.php"); ?> <?php include ("header-xxxxxxxxxx-xxxxxxx.php"); ?> <?php include ("toppanel-kontaktformular.php"); ?> <?php include ("menu.php"); ?> <div id="content_page"> <div id="content_cen"> <div id="content_sup"> <div style="width:940px" class="wmfg_layout_0"> <form action="kontaktformular_senden.php" method="post" name="kontaktformular"> <ul class="wmfg_questions"> <li class="wmfg_q"> <label class="wmfg_label">Kontakt:</label> <table class="wmfg_answers"> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="kontakt" value="urlshorter" /></td> <td><label class="wmfg_label_a" for="urlshorter">URLSHORTER</label></td> </tr> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="kontakt" value="onpaste" /></td> <td><label class="wmfg_label_a" for="onpaste">ONPASTE</label></td> </tr> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="kontakt" value="forum" /></td> <td><label class="wmfg_label_a" for="forum">Forum</label></td> </tr> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="kontakt" value="sonstiges" checked="checked" /></td> <td><label class="wmfg_label_a" for="sonstiges">Sonstiges</label></td> </tr> </table> </li> <li class="wmfg_q"> <label class="wmfg_label">Anrede:</label> <table class="wmfg_answers"> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="anrede" value="herr" checked="checked" /></td> <td><label class="wmfg_label_a" for="anrede_herr">Herr</label></td> </tr> <tr class="wmfg_a"> <td class="wmfg_a_td"><input type="radio" class="wmfg_radio" name="anrede" value="frau" /></td> <td><label class="wmfg_label_a" for="anrede_frau">Frau</label></td> </tr> </table> </li> <li class="wmfg_q"> <label class="wmfg_label" for="vorname">Vorname:</label> <input type="text" class="wmfg_text" name="vorname" id="vorname" value="" /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="nachname">Nachname:</label> <input type="text" class="wmfg_text" name="nachname" id="nachname" value="" /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="email">E-Mail:</label> <input type="text" class="wmfg_text" name="email" id="email" value="" /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="betreff">Betreff:</label> <input type="text" class="wmfg_text" name="betreff" id="betreff" value="" /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="mitteilung">Mitteilung:</label> <textarea class="wmfg_textarea" name="mitteilung" id="mitteilung" style="height:80px"></textarea> </li> <li class="wmfg_q"> <div id="box"> <label class="wmfg_label" for="ip">Ihre IP: <a href="/page/impressum.php"><img src="/page/images/kontaktformular/question.png" width="auto" height="auto" alt=""></a> <div> <p><strong>INFO</strong></p> <p>Um Missbrauch und wissentliche Falscheingaben zu vermeiden, wird Ihre IP-Adresse im Kontaktformular automatisch mitgeschickt. Anhand dieser Adresse sind Sie über Ihren Provider identifizierbar - Quelle: <a href="/page/impressum.php">Datenschutzerklärungen!</a></p> </div> </label> </div> <input type="text" class="wmfg_text" name="ip" id="ip" value="<?php print $_SERVER['REMOTE_ADDR'] ?>" readonly /> </li> <li class="wmfg_q"> <label class="wmfg_label" for="mitteilung">Sicherheitsabfrage:</label> </li> <li class="wmfg_q"> <input type="submit" class="wmfg_btn" name="senden" id="senden" value="Senden" /> </li> </ul> </form> </div> </div> </div> </div> <?php include ("footer.php"); ?>
und hier sobald es gesendet wurde:
<? $kontakt=$_REQUEST['kontakt']; $anrede=$_REQUEST['anrede']; $vorname=$_REQUEST['vorname']; $nachname=$_REQUEST['nachname']; $email=$_REQUEST['email']; $betreff=$_REQUEST['betreff']; $mitteilung=$_REQUEST['mitteilung']; $ip=$_REQUEST['ip']; if ($anrede) { $message = "Kontakt: $kontakt \n"; } if ($anrede) { $message .= "Anrede: $anrede \n"; } if ($vorname) { $message .= "Vorname: $vorname \n"; } if ($nachname) { $message .= "Nachname: $nachname \n"; } if ($email) { $message .= "E-Mail: $email \n"; } if ($betreff) { $message .= "Betreff: $betreff \n"; } if ($mitteilung) { $message .= "Mitteilung: $mitteilung \n"; } if ($ip) { $message .= "Benutzer-IP: $ip \n"; } $empfaenger = "mail@mail.de"; $absender = "mail@mail.de"; $betreff = $_REQUEST['kontakt']; mail($empfaenger, $betreff, $message, "From: $absender", "-f$absender"); ?>
wie wäre das möglich alles in einer Datei zu machen mit dem das alle Felder ausgefüllt sein müssen? Beim Captcha werde ich das Recaptcha nehmen.
Beitrag zuletzt geändert: 2.11.2013 20:31:16 von thomasba -
egal, wo das herkommt tobi!
wir haben alle schon versucht, gegen den wind zu pinkeln! im endeffekt ist das beinkleid (bei buben) benetzt worden (unsere mütter haben uins seltsam angesehen!)
nehme bitte etwas fertigprogrammiertes (die problematik ist nichts für 'leichtfüßige' buben, da musst du mit caterpillar ran [was du momentan noch nicht hast]), lese dich in den code ein, mache daraus deine erfahrung (bei nichtverständniss kann geholfen werden) und übertrage hier deinen job bitte nicht an uns (du kannst hier nicht [unbedingt] delegieren! [wir machen hier für euch nur kleinigkeiten 'on the flight']).
ich wiederhole: http://www.phpclasses.org/package/7845-PHP-Send-messages-using-contact-forms.html (das letzte mal hier ;) -
tobi13 schrieb:
... wie wäre das möglich alles in einer Datei zu machen mit dem das alle Felder ausgefüllt sein müssen? ...
einfach bei <form action="kontaktformular.php" ..> die "gleiche" Datei als "Ziel" nehmen.
und alles in dieser einen Datei mit einfacher if Bedingung ... es gibt ja (nur) 2 Möglichkeiten
... wenn Formular gesendet, dann der Teil zum eMail senden
... sonst Formular zur User-Eingabe anzeigen
if (!empty($_REQUEST['senden'])) { // --- hier Prüfung ob alle Felder ausgefüllt, wenn ja, dann Email senden ... } else { // --- hier Formular zur User-Eingabe ausgeben ... }
nur als ganz grobe Struktur .. um das Prinzip zu zeigen.
PS: das Prüfen ob alle Felder ausgefüllt sind
kann man auch vor dem Formular ab-Senden (mit JavaScript) machen
-
Hallo,
würde schon zu gerne mein eigenes Kontaktformular nehmen, wäre auch froh wenn es mit diesem klappen würde..
..bin bis jetzt aber noch nicht damit zurecht gekommen, könnte mir noch jemand bitte helfen, bei dem Captcha werde ich das recaptcha nehmen.
Danke Gruß -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage