Autor |
Nachricht |
alien
Threadersteller
Dabei seit: 06.07.2006
Ort: aus der Phantasie
Alter: -
Geschlecht:
|
Verfasst Mi 22.08.2007 15:31
Titel PHP Abfrage ob alle Felder ausgefüllt wurden |
|
|
Hi Community,
es geht um folgendes Kontaktformular:
Zitat: | <form action="kontakt.php" method="post" enctype="multipart/form-data" name="formular" id="formular">
<div class="formular">
<label>Vorname:
<input type="text" name="name1" id="name1" />
</label>
<label>Nachname:
<input type="text" name="name2" id="name2" />
</label>
<label>E-Mail:
<input type="text" name="email" id="email" />
</label>
<label>Betreff:
<select name="betreff" id="betreff">
<option>Bitte auswählen!</option>
<option>- Frage</option>
<option>- Leistungen</option>
<option>- Linktipp</option>
<option>- Sonstiges</option>
</select>
</label>
<textarea name="nachricht" rows="8" wrap="physical" id="nachricht"></textarea>
</label>
<input type="submit" name="Submit" id="submit" value="Abschicken" />
</div>
</form> |
Und hier das bisherige PHP zum Versenden des Formulares:
Code: | <?php
if (! empty($_POST["Submit"])) {
$admin = "info@domain.com";
$subject = "DOMAIN | " . $_POST["betreff"];
$message = "Nachricht über das Kontaktformular:\n\n";
$message .= "Vorname: " . $_POST["name1"];
$message .= "\nNachname: " . $_POST["name2"];
$message .= "\nE-Mail: " . $_POST["email"];
$message .= "\nNachricht: " . $_POST["nachricht"];
$strReturnhtml = 'http://www.domain.com/danke.html';
mail($admin,$subject,$message);
header("Location: $strReturnhtml");
exit;
}
?> |
Soweit funktioniert alles!
Nun möchte ich gerne eine Abfrage mit einbauen um zu überprüfen ob die Felder vollständig ausgefüllt wurden.
Wenn sie es nicht sind soll eine Fehlermeldung wie "Überprüfen Sie ihre Eingaben!" etc. erscheinen.
Mit JavaScript wäre das ganze kein Problem, ist mir aber zu unsicher da JavaScript deaktiviert werden kann.
Google spuckt zwar viele Beispiele aus aber ehrlich gesagt habe ich den Überblick verloren, da überall etwas anderes steht.
Wäre nett wenn mir jemand unter die Arme greifen würde!
//Edit: Nach "Abschicken" des Formulares mit $strReturnhtml = 'http://www.domain.com/danke.html'; Seite aufrufen.
Zuletzt bearbeitet von alien am Mi 22.08.2007 15:42, insgesamt 1-mal bearbeitet
|
|
|
|
|
fuchsbau
Dabei seit: 15.08.2005
Ort: .//root
Alter: 40
Geschlecht:
|
Verfasst Mi 22.08.2007 16:39
Titel
|
|
|
Code: | /* pflichtfeld testen, error setzen */
if ($_POST['name'] == "") {
$error[]= "Bitte geben Sie Ihren Namen an.";
}
/* pflichtfeld testen, error setzen */
if ($_POST['telefon'] == "") {
$error[]= "Sie haben keine Rückrufnummer angegeben.";
}
/* pflichtfeld testen, error setzen */
if (!preg_match("/[.a-z0-9_-]+@+[.a-z0-9_-]+.+[.a-z0-9_-]{2,}/i", $_POST['email'])) {
$error[]= "Überprüfen Sie bitte Ihre Email-Adresse.";
}
/* falls kein error */
if (!$error) {
DEIN CODE
} else {
/* error behandeln */
$errorimp = implode("<br />",$error) ."<br />";
} |
musste halt noch an deine pflichtfelder anpassen.
ABER: DEIN FORMULAR IST NICHT SICHER! such mal bei google nach e-mail injection
// ach ja, das if (! empty($_POST["Submit"])) natürlich außenrum
Zuletzt bearbeitet von fuchsbau am Mi 22.08.2007 16:42, insgesamt 2-mal bearbeitet
|
|
|
|
|
Anzeige
|
|
|
alien
Threadersteller
Dabei seit: 06.07.2006
Ort: aus der Phantasie
Alter: -
Geschlecht:
|
Verfasst Mi 22.08.2007 17:53
Titel
|
|
|
Hui, danke!
Hatte in der Zwischenzeit das hier programmiert:
Code: | if (! empty($_POST["Submit"]) &&
$_POST['name1'] != '' &&
$_POST['name2'] != '' &&
$_POST['email'] != '' && strpos ($_POST['email'], '@') !== false &&
$_POST['betreff'] != '' &&
$_POST['nachricht'] !=''
) { |
Hat auch funktioniert.
Alles komplett:
Code: | <?php
if (! empty($_POST["Submit"]) {
if ($_POST['name1'] == "") {
$error[]= "Bitte geben Sie Ihren Vornamen an.";
}
if ($_POST['name2'] == "") {
$error[]= "Bitte geben Sie Ihren Nachnamen an.";
}
if (!preg_match("/[.a-z0-9_-]+@+[.a-z0-9_-]+.+[.a-z0-9_-]{2,}/i", $_POST['email'])) {
$error[]= "Überprüfen Sie bitte Ihre E-Mail-Adresse.";
}
if (!$error) {
$admin = "info@domain.com";
$subject = "DOMAIN | " . $_POST["betreff"];
$message = "Nachricht über das Kontaktformular:\n\n";
$message .= "Vorname: " . $_POST["name1"];
$message .= "\nNachname: " . $_POST["name2"];
$message .= "\nE-Mail: " . $_POST["email"];
$message .= "\nNachricht: " . $_POST["nachricht"];
mail($admin,$subject,$message);
header("Location: kontakt.php");
exit;
}
} else {
/* error behandeln */
$errorimp = implode("<br />",$error) ."<br />";
}
?> |
So richtig?
Dann noch das E-Mail-Injection:
Code: |
$_POST['email'] = str_replace("\r","",$_POST['email']);
$_POST['email'] = str_replace("\n","",$_POST['email']);
if (eregi("\r",$_POST['email') || eregi("\n",$_POST['email']))
{
echo "Falsche Eingabe!";
...
die();
} |
Hab ich das so richtig verstanden? Und wo muss ich das in den Code einfügen?
Zuletzt bearbeitet von alien am Mi 22.08.2007 17:55, insgesamt 1-mal bearbeitet
|
|
|
|
|
alien
Threadersteller
Dabei seit: 06.07.2006
Ort: aus der Phantasie
Alter: -
Geschlecht:
|
Verfasst Do 23.08.2007 00:32
Titel
|
|
|
fuchsbau hat geschrieben: | Code: | /* pflichtfeld testen, error setzen */
if ($_POST['name'] == "") {
$error[]= "Bitte geben Sie Ihren Namen an.";
}
/* pflichtfeld testen, error setzen */
if ($_POST['telefon'] == "") {
$error[]= "Sie haben keine Rückrufnummer angegeben.";
}
/* pflichtfeld testen, error setzen */
if (!preg_match("/[.a-z0-9_-]+@+[.a-z0-9_-]+.+[.a-z0-9_-]{2,}/i", $_POST['email'])) {
$error[]= "Überprüfen Sie bitte Ihre Email-Adresse.";
}
/* falls kein error */
if (!$error) {
DEIN CODE
} else {
/* error behandeln */
$errorimp = implode("<br />",$error) ."<br />";
} |
|
Das funktioniert bei mir leider nicht. Ich bekomme folgende Fehlermeldung:
Parse error: syntax error, unexpected '}' in /www/htdocs/test47106/kontakt.php on line 2
|
|
|
|
|
dastef
Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 23.08.2007 08:41
Titel
|
|
|
alien hat geschrieben: | Das funktioniert bei mir leider nicht. Ich bekomme folgende Fehlermeldung:
Parse error: syntax error, unexpected '}' in /www/htdocs/test47106/kontakt.php on line 2 |
Dann haste leider nen Fehler in deinem Skript.
|
|
|
|
|
fuchsbau
Dabei seit: 15.08.2005
Ort: .//root
Alter: 40
Geschlecht:
|
Verfasst Do 23.08.2007 14:42
Titel
|
|
|
was dastef wahrscheinlich damit sagen wollte : du musst den code schon posten, damit wir wissen, was in line 2 schief läuft
Zuletzt bearbeitet von fuchsbau am Do 23.08.2007 14:43, insgesamt 2-mal bearbeitet
|
|
|
|
|
alien
Threadersteller
Dabei seit: 06.07.2006
Ort: aus der Phantasie
Alter: -
Geschlecht:
|
Verfasst Do 23.08.2007 15:36
Titel
|
|
|
Code: |
<?php
if (! empty($_POST["Submit"]))
if ($_POST['name1'] == "") {
$error[]= "Vornamen fehlt!";
}
if ($_POST['name2'] == "") {
$error[]= "Nachname fehlt!";
}
if (!preg_match("/[.a-z0-9_-]+@+[.a-z0-9_-]+.+[.a-z0-9_-]{2,}/i", $_POST['email'])) {
$error[]= "E-Mail fehlt oder falsch!";
}
if ($_POST['betreff'] == "") {
$error[]= "Betreff fehlt!";
}
if ($_POST['nachricht'] == "") {
$error[]= "Nachricht fehlt!";
}
if (!$error) {
$admin = "info@test47106.test-account.com";
$subject = "JENSMARQUARDT.COM | " . $_POST["betreff"];
$message = "Nachricht über das Kontaktformular:\n\n";
$message .= "Vorname: " . $_POST["name1"];
$message .= "\nNachname: " . $_POST["name2"];
$message .= "\nE-Mail: " . $_POST["email"];
$message .= "\nNachricht: " . $_POST["nachricht"];
mail($admin,$subject,$message);
header("Location: kontakt.php");
exit;
}
else {
$errorimp = implode("<br />",$error) ."<br />";
}
?> |
So die Fehlermeldung ist weg. Eine Klammer war zu viel.
Wenn ich jetzt das Formular vollständig ausfülle und abschicke, dann erhalte ich keine Nachricht.
Die Fehlermeldungen wie "error[]= "Nachricht fehlt!";" bei nicht ausfüllen eines Feldes werden auch nicht angezeigt.
|
|
|
|
|
fuchsbau
Dabei seit: 15.08.2005
Ort: .//root
Alter: 40
Geschlecht:
|
Verfasst Do 23.08.2007 17:27
Titel
|
|
|
alien hat geschrieben: | Code: | if (! empty($_POST["Submit"])) |
|
1. wo sind die {} der if schleife?
2. wie übergibst du denn Submit? vielleicht eigentlich mit GET? oder es liegt daran dass du submit und nicht Submit übergibst?
alien hat geschrieben: | Code: | header("Location: kontakt.php"); |
|
was machstu damit?
alien hat geschrieben: | Code: | $errorimp = implode("<br />",$error) ."<br />"; |
|
du musst $errorimp dann natürlich auch noch mit echo ausgeben.
also, dein code etwas aufgeräumt:
Code: | <?php
if ( !empty($_GET["submit"]) ) {
if ($_POST['name1'] == "") {
$error[]= "Vornamen fehlt!";
}
if ($_POST['name2'] == "") {
$error[]= "Nachname fehlt!";
}
if (!preg_match("/[.a-z0-9_-]+@+[.a-z0-9_-]+.+[.a-z0-9_-]{2,}/i", $_POST['email'])) {
$error[]= "E-Mail fehlt oder falsch!";
}
if ($_POST['betreff'] == "") {
$error[]= "Betreff fehlt!";
}
if ($_POST['nachricht'] == "") {
$error[]= "Nachricht fehlt!";
}
if (!$error) {
$admin = "info@test47106.test-account.com;
$subject = "JENSMARQUARDT.COM | " . $_POST["betreff"];
$message = "Nachricht über das Kontaktformular:\n\n";
$message .= "Vorname: " . $_POST["name1"];
$message .= "\nNachname: " . $_POST["name2"];
$message .= "\nE-Mail: " . $_POST["email"];
$message .= "\nNachricht: " . $_POST["nachricht"];
mail($admin,$subject,$message);
header("Location: kontakt.php");
exit;
}
else {
$errorimp = implode("<br />",$error) ."<br />";
echo $errorimp;
}
}
?> |
würde jetzt gehn wenn du absenden.php?submit=irgendwas aufrufst und den rest per post übergibst.
Zuletzt bearbeitet von fuchsbau am Do 23.08.2007 17:52, insgesamt 4-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
MySQL PHP Felder der Abfrage identifizieren (parsen)
Möchte Formular ausgefüllt zurückbekommen
PHP Formular - Fehlermeldung wenn nicht alles ausgefüllt ist
kontakt php meldet immer "nicht alles ausgefüllt"
chkFormular mehrere Felder
Vista + IE 7: Input Felder
|
|