mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 05:45 Benutzername: Passwort: Auto-Login

Thema: PHP Abfrage ob alle Felder ausgefüllt wurden vom 22.08.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> PHP Abfrage ob alle Felder ausgefüllt wurden
Autor Nachricht
alien
Threadersteller

Dabei seit: 06.07.2006
Ort: aus der Phantasie
Alter: -
Geschlecht: Männlich
Verfasst Mi 22.08.2007 15:31
Titel

PHP Abfrage ob alle Felder ausgefüllt wurden

Antworten mit Zitat Zum Seitenanfang

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! Lächel

//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
  View user's profile Private Nachricht senden
fuchsbau

Dabei seit: 15.08.2005
Ort: .//root
Alter: 40
Geschlecht: Männlich
Verfasst Mi 22.08.2007 16:39
Titel

Antworten mit Zitat Zum Seitenanfang

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&uuml;ckrufnummer angegeben.";
}
/* pflichtfeld testen, error setzen */
if (!preg_match("/[.a-z0-9_-]+@+[.a-z0-9_-]+.+[.a-z0-9_-]{2,}/i", $_POST['email'])) {
    $error[]= "&Uuml;berpr&uuml;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 *zwinker*


Zuletzt bearbeitet von fuchsbau am Mi 22.08.2007 16:42, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
alien
Threadersteller

Dabei seit: 06.07.2006
Ort: aus der Phantasie
Alter: -
Geschlecht: Männlich
Verfasst Mi 22.08.2007 17:53
Titel

Antworten mit Zitat Zum Seitenanfang

Hui, danke! *Thumbs up!*

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
  View user's profile Private Nachricht senden
alien
Threadersteller

Dabei seit: 06.07.2006
Ort: aus der Phantasie
Alter: -
Geschlecht: Männlich
Verfasst Do 23.08.2007 00:32
Titel

Antworten mit Zitat Zum Seitenanfang

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&uuml;ckrufnummer angegeben.";
}
/* pflichtfeld testen, error setzen */
if (!preg_match("/[.a-z0-9_-]+@+[.a-z0-9_-]+.+[.a-z0-9_-]{2,}/i", $_POST['email'])) {
    $error[]= "&Uuml;berpr&uuml;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
  View user's profile Private Nachricht senden
dastef

Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 23.08.2007 08:41
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
fuchsbau

Dabei seit: 15.08.2005
Ort: .//root
Alter: 40
Geschlecht: Männlich
Verfasst Do 23.08.2007 14:42
Titel

Antworten mit Zitat Zum Seitenanfang

was dastef wahrscheinlich damit sagen wollte *zwinker* : du musst den code schon posten, damit wir wissen, was in line 2 schief läuft *zwinker*

Zuletzt bearbeitet von fuchsbau am Do 23.08.2007 14:43, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
alien
Threadersteller

Dabei seit: 06.07.2006
Ort: aus der Phantasie
Alter: -
Geschlecht: Männlich
Verfasst Do 23.08.2007 15:36
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
fuchsbau

Dabei seit: 15.08.2005
Ort: .//root
Alter: 40
Geschlecht: Männlich
Verfasst Do 23.08.2007 17:27
Titel

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
 
Ä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
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.