php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.08.2009, 21:04  
Neuer Benutzer
 
Registriert seit: 10.08.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
marielou befindet sich auf einem aufstrebenden Ast
Standard Formmailer mit Pflichtfelder

Hi, ich habe auf unserer Homepage einen Formmailer eingebaut. Nun möchte ich zusätzlich noch festlegen, welche Felder zwingend ausgefüllt werden sollen. Momentan könnte z. B. jeder Besucher das Formular ausfüllen und absenden, ohne seinen Namen dabei anzugeben. Hier sollte dann eine Meldung erscheinen, die den Besucher dazu auffordert. Ist das möglich?

Hier der Formmailer:

PHP-Code:
# Welchen Betreff sollen die Mails erhalten?
$strSubject    'eMail von www.homepage.de';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml 'http://www.test.de';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  ":\t";

### Ende Konfiguration ###

if($_POST)
{
  
$strFrom       $_POST["email"];

 while(list(
$strName,$value) = each($_POST))
 {
  if(
is_array($value))
  {
   foreach(
$value as $value_array)
   {
    
$strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   
$strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(
get_magic_quotes_gpc())
 {
  
$strMailtext stripslashes($strMailtext);
 }

 
mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
  or die(
"Die Mail konnte nicht versendet werden.");
 
header("Location: $strReturnhtml");
 exit;
}

?> 
Code:
form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">

    <p>Dein Name:<br>
    <input type="text" name="name" size="35" maxlength="100" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p>

    <p>Deine eMail-Adresse:<br>
    <input type="text" name="email" size="35" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p>

    <p>Betreff:<br>
    <input type="text" name="betreff" size="35" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p></p>

    <p>Deine Nachricht:<br>
    <textarea name="nachricht" cols="38" rows="8" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></textarea></p>


    <p>

    <input type="submit" value="absenden"> <input type="reset" value="tipp ex">

    <br><br>


    </form>
Probiert hab ichs mal hiermit:

PHP-Code:
// Pflichtfeld "Adresse"
if (isset($_POST["Adresse"]))
{
  
$error[] = "BittegebenSieIhre Adresseein!";

und hiermit:

PHP-Code:
if (empty($name)) {
$status .= "Bitte f&uuml;ll das Namensfeld aus!";
}
elseif (empty(
$email)) {
$status .= "Bitte f&uuml;ll das eMail-Feld aus!";

...aber das Formular sendet trotzdem jedesmal ab, ohne zu prüfen!

Muß ich vielleicht vom oberen Code noch was entfernen? Paßt irgendwas nicht zusammen?

Vielen Dank im voraus für Hilfe
Grüße, Marie
marielou ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.08.2009, 21:10  
Erfahrener Benutzer
 
Benutzerbild von JanM
 
Registriert seit: 22.12.2003
Beiträge: 788
PHP-Kenntnisse:
Fortgeschritten
JanM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du musst auch die Aktion abrechen, sollte die IF-Abfrage TRUE sein.

.z.B. PHP: exit - Manual könnte dir dabei helfen.
__________________

Statistik
JanM ist offline  
Alt 10.08.2009, 21:44  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Naja exit() ist etwas hart, versuch es doch mal mit folgendem Konstrukt:

PHP-Code:
<?php
$formSent 
= !empty($_POST);

if (
$formSent) {
  
// filter
  
$email trim($_POST["email"]);
  
$subject trim($_POST["subject"]);
  
// validate
  
$errors = array();
  if (empty(
$email)) {
    
$errors[] = "Bitte E-Mail eingeben.";
  }
  if (empty(
$subject)) {
    
$errors[] = "Bitte Betreff eingeben.";
  }
  
$hasErrors = !empty($errors);
  if (!
$hasErrors) {
    
// mail();
  
}
}

//..

if ($formSent && $hasErrors) {
  echo 
"Fehler beim Versenden des Formulars:<ul><li>"implode("</li><li>"$errors), "</li></ul>";
}
?>
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online  
Alt 11.08.2009, 23:08  
Neuer Benutzer
 
Registriert seit: 10.08.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
marielou befindet sich auf einem aufstrebenden Ast
Standard

hab den code so eingefügt. trotzdem kann das formular, ohne z. b. eine mail eingeben zu müssen, versendet werden.
nochmal die frage: muß ich aus dem bisher bestehenden code nicht was entnehmen?
marielou ist offline  
Alt 12.08.2009, 00:54  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von marielou Beitrag anzeigen
hab den code so eingefügt. trotzdem kann das formular, ohne z. b. eine mail eingeben zu müssen, versendet werden.
nochmal die frage: muß ich aus dem bisher bestehenden code nicht was entnehmen?
Dann zeig uns den Code halt auch. Bitte denk mal mit ..
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online  
Alt 12.08.2009, 21:36  
Neuer Benutzer
 
Registriert seit: 10.08.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
marielou befindet sich auf einem aufstrebenden Ast
Standard

hab doch den ganzen code oben schon stehen! zugefügt hab ich dann noch deinen code! aber anbei nochmal:


PHP-Code:
<?php

### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger 'test@tester.de';

# Welchen Betreff sollen die Mails erhalten?
$strSubject    'eMail von www.homepage.de';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml 'http://www.homepage.de/danke-email.php';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  ":\t";

### Ende Konfiguration ###

if($_POST)
{
  
$strFrom       $_POST["email"];

 while(list(
$strName,$value) = each($_POST))
 {
  if(
is_array($value))
  {
   foreach(
$value as $value_array)
   {
    
$strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   
$strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(
get_magic_quotes_gpc())
 {
  
$strMailtext stripslashes($strMailtext);
 }

 
mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
  or die(
"Die Mail konnte nicht versendet werden.");
 
header("Location: $strReturnhtml");
 exit;
}




$formSent = !empty($_POST);

if (
$formSent) {
  
// filter
  
$email trim($_POST["email"]);
  
$betreff trim($_POST["betreff"]);
  
// validate
  
$errors = array();
  if (empty(
$email)) {
    
$errors[] = "Bitte E-Mail eingeben.";
  }
  if (empty(
$betreff)) {
    
$errors[] = "Bitte Betreff eingeben.";
  }
  
$hasErrors = !empty($errors);
  if (!
$hasErrors) {
    
// mail();
  
}
}

//..

if ($formSent && $hasErrors) {
  echo 
"Fehler beim Versenden des Formulars:<ul><li>"implode("</li><li>"$errors), "</li></ul>";
}



?>
HTML-Code:
<html>
<head>


<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">

    <p>Dein Name:<br>
    <input type="text" name="name" size="35" maxlength="100" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p>

    <p>Deine eMail-Adresse:<br>
    <input type="text" name="email" size="35" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p>

    <p>Betreff:<br>
    <input type="text" name="betreff" size="35" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p></p>

    <p>Deine Nachricht:<br>
    <textarea name="nachricht" cols="38" rows="8" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></textarea></p>


    <p>

    <input type="submit" value="absenden"> <input type="reset" value="tipp ex">

    <br><br>


    </form>


</body>
</html> 
marielou ist offline  
Alt 12.08.2009, 21:42  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Bitte denk mit, da wo bei mir // mail steht muss dein mail()-Aufruf von weiter oben hin. Beide Skripte einfach untereinander klatschen bringt nichts, du musst schon verstehen was der Code macht. Ein gewisses Verständnis fürs Programmieren muss schon da sein. Geh doch einfach mal den Programmiercode durch in der Annahme, es wurde kein Betreff übergeben, wo landest du (Bedingungsblöcke, Anweisungen) und wo möchtest du stattdessen eigentlich landen? In deinem Fall immer bei mail()! Also frag dich mal warum und vor allem warum du dann keine if-Bedingung um dein mail() baust ..
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online  
Alt 12.08.2009, 21:47  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

LooooooooL
Schau dir doch mal das Comment an was da drinnen steht. Meine Güte
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline  
Alt 12.08.2009, 21:55  
Neuer Benutzer
 
Registriert seit: 10.08.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
marielou befindet sich auf einem aufstrebenden Ast
Standard

sorry, ich denk mit, versteh aber nicht was ich hier einfügen muß. bin kein programmierer, zudem ganztags berufstätig und zwei kinder daheim. ich lass es bleiben.
trotzdem vielen dank für deine hilfe!
marielou ist offline  
Alt 12.08.2009, 23:33  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
<?php
### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger 'test@tester.de';

# Welchen Betreff sollen die Mails erhalten?
$strSubject    'eMail von www.homepage.de';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml 'http://www.homepage.de/danke-email.php';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  ":\t";

### Ende Konfiguration ###

if($_POST)
{
  
$strFrom       $_POST["email"];

 while(list(
$strName,$value) = each($_POST))
 {
  if(
is_array($value))
  {
   foreach(
$value as $value_array)
   {
    
$strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   
$strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(
get_magic_quotes_gpc())
 {
  
$strMailtext stripslashes($strMailtext);
 }

  
// filter
  
$email trim($_POST["email"]);
  
$betreff trim($_POST["betreff"]);
  
// validate
  
$errors = array();
  if (empty(
$email)) {
    
$errors[] = "Bitte E-Mail eingeben.";
  }
  if (empty(
$betreff)) {
    
$errors[] = "Bitte Betreff eingeben.";
  }
  
$hasErrors = !empty($errors);
  if (!
$hasErrors) {
   
mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
  or die(
"Die Mail konnte nicht versendet werden.");
 
header("Location: $strReturnhtml");
 exit;
  }
if (
$formSent && $hasErrors) {
  echo 
"Fehler beim Versenden des Formulars:<ul><li>"implode("</li><li>"$errors), "</li></ul>";
}
}

?>
Gibt zwar paar sachen die man verändern könnte aber ich glaube so müsste es klappen (ungetestet)
MfG
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

Geändert von Destruction (12.08.2009 um 23:36 Uhr).
Destruction 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
kleines Problem mit einem Formmailer Sukina-chan PHP Tipps 2009 14 08.08.2009 23:47
Felder in Formular sollen Pflichtfelder sein rodger PHP Tipps 2009 2 12.07.2009 01:24
Formmailer sendet nicht alle Daten mightytrikkster PHP Tipps 2009 9 22.06.2009 15:16
Frage zu Formmailer airkiller PHP Tipps 2008 9 15.07.2008 11:41
[Erledigt] Pflichtfelder angegeben aber wird nicht überprüft? pixelprinzessin PHP Tipps 2008 23 03.07.2008 11:01
Formmailer lavey242 PHP Tipps 2006 5 06.05.2006 12:39
Formmailer geht bei der email zuschickung nicht richtig PHP Tipps 2005 2 02.06.2005 22:54
[Erledigt] Im Intranet einen Formmailer benutzen ?!?! Server, Hosting und Workstations 3 16.12.2004 21:47
[Erledigt] Intranet Formmailer Server, Hosting und Workstations 4 15.12.2004 12:34
[Erledigt] Weshalb beträgt die Dateigrösse auf 2MB beim Formmailer... PHP Tipps 2004-2 2 19.11.2004 15:22
FormMailer mit DropDown-Feldern PHP Tipps 2004-2 3 14.11.2004 10:10
Formmailer Kundennummer vergeben PHP Tipps 2004 1 01.11.2004 20:22
[Erledigt] Formmailer anpassen PHP Tipps 2004 7 21.09.2004 10:22
Formmailer PHP Tipps 2004 1 19.08.2004 20:57
[Erledigt] kontaktformular mit pflichtfelder??? PHP Tipps 2004 4 07.07.2004 14:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
formmailer php5, php pflichtfelder, php5 formmailer, php formmailer pflichtfelder, formmailer pflichtfeld, formmailer pflichtfelder, php formular pflichtfelder, formmail pflichtfelder, pflichtfelder php, formmailer mit pflichtfelder, formmailer mit pflichtfeldern, formmailer pflichtfelder php, http://www.php.de/php-einsteiger/57953-formmailer-mit-pflichtfelder.html, php formular pflichtfeld, form action pflichtfelder, php formmailer pflichtfeld, formmailer php pflichtfelder, formmail pflichtfeld, formular pflichtfelder php, pflichtfelder in php

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:45 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