E-Mail versenden mal was ganz anderes

dreambaser

Erfahrenes Mitglied
Hallo Leute,

Also bevor mir jeder mitteilt, ich solle doch die Hilfe verwenden, das habe ich bereits gemacht, aber ich komme einfach nicht weiter.

Ich bin dabei ein Formular zu entwickeln, welches ganz normal per Mail daten verschickt, soweit ist das kein Problem.

Dieses Formular wird in sich selber verarbeitet, wo aber das Problem dann losgeht.

Es soll eine Art Statusanzeige enthalten, wo der User anschliessend genau weiss, was gerade passiert und wo eventuell Fehler enthalten sind.

Das funktioniert soweit auch schon, aber ich weiss einfach nicht, wo ich den Mailbefehl einsetzen soll, bzw. Wie ich das schreiben muss, vielleicht kann mir da jemand weiter helfen. Hier mal das Script dazu

<?php


$_REQUEST['name'] = $name;
$_REQUEST['send'] = $send;
$_REQUEST['email'] = $email;
$_REQUEST['tel'] = $tel;
$_REQUEST['enterprise'] = $enterprise;
$_REQUEST['remote'] = $remote;
$_REQUEST['object'] = $object;

if(!strlen($name) > 0){
$fehler .= "<span class=".'headline'.">Statusmeldung:</span><br><span class=".'block'.">Name: Fehler!<BR>Firma: Ok<BR>Telefonnummer: Ok<BR></span>";
}else{
$fehler .= "<span class=".'headline'.">Statusmeldung:</span><br><span class=".'block'.">Name: Ok<BR>Firma: Ok<BR>Telefonnummer: Ok<BR></span>";
}
if (!ereg("^.+@.+\\..+$", $email))
{
$fehler .= "<span class=".'block'.">E-Mail: Fehler!<br></span>";
}else{
$fehler .= "<span class=".'block'.">E-Mail: Ok<br></span>";
}

if(!strlen($object) > 0){
$fehler .= "<span class=".'block'.">Mitteilung: Fehler!<BR>IP Adresse: $REMOTE_ADDR</span>";
}else{
$fehler .= "<span class=".'block'.">Mitteilung: Ok<BR>IP Adresse: $REMOTE_ADDR</span>";
}
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table width="278" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="19" colspan="2" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="98" height="25" align="right" valign="middle" class="block">Name:&nbsp;</td>
<td width="180" valign="middle">
<input name="name" type="text" class="textfield2" value="<?php echo $_REQUEST['name']; ?>"> </td>
</tr>
<tr>
<td height="25" align="right" valign="middle" class="block">Firma:&nbsp;</td>
<td valign="middle"><input name="enterprise" type="text" class="textfield2" value="<?php echo $_REQUEST['enterprise']; ?>"></td>
</tr>
<tr>
<td height="25" align="right" valign="middle" class="block">Telefonnummer:&nbsp;</td>
<td valign="middle"><input name="tel" type="text" class="textfield2" value="<?php echo $_REQUEST['tel']; ?>"></td>
</tr>
<tr>
<td height="25" align="right" valign="middle" class="block">E-Mail Adresse:&nbsp;</td>
<td valign="middle"><input name="email" type="text" class="textfield2" value="<?php echo $_REQUEST['email']; ?>"></td>
</tr>
<tr>
<td rowspan="2" align="right" valign="top" class="block">Mitteilung:&nbsp;</td>
<td height="2"></td>
</tr>
<tr>
<td height="88" valign="top"><textarea name="object" class="textfield3"><?php echo $_REQUEST['object']; ?></textarea></td>
</tr>
<tr>
<td rowspan="2" valign="top">&nbsp;</td>
<td height="1"></td>
</tr>
<tr>
<td height="18" align="right" valign="top"><input type="hidden" name="remote" value="<? echo $REMOTE_ADDR; ?>">
<input name="send" type="submit" class="submit" value="Senden"></td>
</tr>
</table>
</form>
<?php echo $fehler; ?>

Ist vielleicht auf den ersten Blick etwas viel, wichtiger ist dabei eigentlich der PHP Teil also die Verarbeitung.

Vielen Dank für eure Hilfe.

mfg -> da Dream
 
Erstell doch einfach eine boolsche Variable, z.B. $isvalid = True; vor den gesamten IF-Blöcken.
Sollte ein IF-Block zutreffen (also ein Fehler ausgelöst werden) wird die Variable einfach auf False gesetzt.
Ganz am Ende machst du dann einfach eine Abfrage, ob $isvalid = True ist, wenn ja -> mail().
 
Hi,

hmm ich verstehe nicht so ganz was du meinst.

Ich habe bisher noch nichts mit boolschen Variablen gehabt, geschweige denn irgendwas damit gemacht :rolleyes:

Kannst du mir das Prinzip, wie du das machen würdest mal genauer erklären ?

Danke mfg -> da Dream
 
Also das ist ganz einfach eine Variable, die nur die Werte True oder False kennt.
Da du in PHP keine Variablen mit Datentypen deklarieren musst, ist es eigentlich unrelevant.

Die email muss ja irgendwo im Code abgeschickt werden, danach hast du ja auch gefragt. Du musst dabei natürlich beachten, dass wenn ein Fehler durch einen deiner IF-Blöcke ausgelöst wird (z.B. name ist leer), die email nicht abgeschickt werden darf.
Deswegen schlage ich dir vor das Script wie folgt aufzubauen:
PHP:
$_REQUEST['name'] = $name;
// [...]

$isvalid = True;

if(!strlen($name) > 0){ 
$fehler .= "<span class=".'headline'.">Statusmeldung:</span><br><span class=".'block'.">Name: Fehler!<BR>Firma: Ok<BR>Telefonnummer: Ok<BR></span>";
$isvaild = False;
}else{ 
$fehler .= "<span class=".'headline'.">Statusmeldung:</span><br><span class=".'block'.">Name: Ok<BR>Firma: Ok<BR>Telefonnummer: Ok<BR></span>"; 
}
// [...]

if($isvalid == True) {
 mail(...);
 echo "Mail wurde erfolgreich verschickt";
}

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
// [...]
Ich habe dein Script jetzt etwas verkürzt, damit du besser sehen kannst, an welchen Stellen ich änderungen vorgenommen habe.
Wenn du wissen willst, wie man eine Mail verschickt, dann les bitte in der Referenz nach: mail().
 
Zuletzt bearbeitet:
Also soweit so gut,

Ich habe das jetzt mal auf deine Art etwas umgebaut, allerdings funktioniert das nicht so wie ich mir das vorstelle.

Sozusagen wird der Wert gleich auf true gestellt, sodas die mail gleich versendet wird, bei seitenaufruf.

Zudem wird die Statusanzeige gleich angezeigt, was ich vorher nicht hatte, die wird erst dann angezeigt, wenn man "submit" geklickt hat, was auch so bleiben muss, da es sonst zu verwirrungen führen kann. Hast du noch ne andere Idee ?

mfg und danke für deine Hilfe -> da Dream
 
Jo, darauf habe ich nicht geachtet ... Habs mal ein wenig geändert, müsste jetzt eigentlich gehen (habe gerade leider keine PHP Umgebung zum testen).
PHP:
<?php

If($_REQUEST['send']){ // Der gesamte Abschnitt wird erst ausgeführt, wenn Submit Button gedrückt wurde

$_REQUEST['name'] = $name;
$_REQUEST['send'] = $send;
$_REQUEST['email'] = $email;
$_REQUEST['tel'] = $tel;
$_REQUEST['enterprise'] = $enterprise;
$_REQUEST['remote'] = $remote;
$_REQUEST['object'] = $object;
$isvalid = True;

if(!strlen($name) > 0){ 
$fehler .= "<span class=".'headline'.">Statusmeldung:</span><br><spanlass=".'block'.">Name: Fehler!<BR>Firma: Ok<BR>Telefonnummer: Ok<BR></span>";
$isvalid = False;
}else{ 
$fehler .= "<span class=".'headline'.">Statusmeldung:</span><br><span class=".'block'.">Name: Ok<BR>Firma: Ok<BR>Telefonnummer: Ok<BR></span>"; 
}
if (!ereg("^.+@.+\\..+$", $email)) 
{
$fehler .= "<span class=".'block'.">E-Mail: Fehler!<br></span>";
$isvalid = False;
}else{ 
$fehler .= "<span class=".'block'.">E-Mail: Ok<br></span>";
} 

if(!strlen($object) > 0){ 
$fehler .= "<span class=".'block'.">Mitteilung: Fehler!<BR>IP Adresse: $REMOTE_ADDR</span>";
$isvalid = False;
}else{ 
$fehler .= "<span class=".'block'.">Mitteilung: Ok<BR>IP Adresse: $REMOTE_ADDR</span>"; 
}
if(isvalid == True) {
if(mail("nobody@example.com", "Betreff", "Zeile 1\nZeile 2\nZeile 3")){
echo "email wurde erfolgreich versand!";
}
}
}
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table width="278" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="19" colspan="2" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="98" height="25" align="right" valign="middle" class="block">Name:&nbsp;</td>
<td width="180" valign="middle">
<input name="name" type="text" class="textfield2" value="<?php echo $_REQUEST['name']; ?>"> </td>
</tr>
<tr>
<td height="25" align="right" valign="middle" class="block">Firma:&nbsp;</td>
<td valign="middle"><input name="enterprise" type="text" class="textfield2" value="<?php echo $_REQUEST['enterprise']; ?>"></td>
</tr>
<tr>
<td height="25" align="right" valign="middle" class="block">Telefonnummer:&nbsp;</td>
<td valign="middle"><input name="tel" type="text" class="textfield2" value="<?php echo $_REQUEST['tel']; ?>"></td>
</tr>
<tr>
<td height="25" align="right" valign="middle" class="block">E-Mail Adresse:&nbsp;</td>
<td valign="middle"><input name="email" type="text" class="textfield2" value="<?php echo $_REQUEST['email']; ?>"></td>
</tr>
<tr>
<td rowspan="2" align="right" valign="top" class="block">Mitteilung:&nbsp;</td>
<td height="2"></td>
</tr>
<tr>
<td height="88" valign="top"><textarea name="object" class="textfield3"><?php echo $_REQUEST['object']; ?></textarea></td>
</tr>
<tr>
<td rowspan="2" valign="top">&nbsp;</td>
<td height="1"></td>
</tr>
<tr>
<td height="18" align="right" valign="top"><input type="hidden" name="remote" value="<? echo $REMOTE_ADDR; ?>">
<input name="send" type="submit" class="submit" value="Senden"></td>
</tr>
</table>
</form>
<?php echo $fehler; ?>
 
Ok also ich hab einfach mal per cut & paste den ganzen Code übernommen, dabei ist genau derselbe Fehler enthalten.

Das Script wird trotzdem ausgeführt, obwohl die Felder leer sind. Normal müsste die Mailfunction ja erst ausgeführt werden, wenn alles ausgefüllt ist, was pflicht ist, aber dem ist nicht so, er behandelt alle Felder, als ob die true sind.

Was ich mich dabei frage, woher soll if(isvalid == true) wissen, das alles true ist

Müsste man da nicht vorher noch irgendwie ne Abfrage einbauen was alles true und false ist ?

denn normal würde ich das so verstehen, das er zwar den Wert vergleicht, aber er nimmt den letzten Wert und dieser ist ja dann true, dadurch wird ja gleich die Mailfunction ausgeführt oder verstehe ich da was falsch ?

großen dank für deine Bemühungen... :)
 
So ...

Problem ist behoben...

Danke für deine Hilfe, hast was gut bei mir ^^

Du hattest nur ein $ vergessen, somit sieht das ganze Script wie folgt aus:

PHP:
If($_REQUEST['send']){ // Der gesamte Abschnitt wird erst ausgeführt, wenn Submit Button gedrückt wurde 

$_REQUEST['name'] = $name; 
$_REQUEST['send'] = $send; 
$_REQUEST['email'] = $email; 
$_REQUEST['tel'] = $tel; 
$_REQUEST['enterprise'] = $enterprise; 
$_REQUEST['remote'] = $remote; 
$_REQUEST['object'] = $object; 
$isvalid = true; 

if(!strlen($name) > 0){ 
$fehler .= "<span class=".'headline'.">Statusmeldung:</span><br><spanlass=".'block'.">Name: Fehler!<BR>Firma: Ok<BR>Telefonnummer: Ok<BR></span>"; 
$isvalid = false; 
}else{ 
$fehler .= "<span class=".'headline'.">Statusmeldung:</span><br><span class=".'block'.">Name: Ok<BR>Firma: Ok<BR>Telefonnummer: Ok<BR></span>"; 
} 
if (!ereg("^.+@.+\\..+$", $email)) 
{ 
$fehler .= "<span class=".'block'.">E-Mail: Fehler!<br></span>"; 
$isvalid = false; 
}else{ 
$fehler .= "<span class=".'block'.">E-Mail: Ok<br></span>"; 
} 

if(!strlen($object) > 0){ 
$fehler .= "<span class=".'block'.">Mitteilung: Fehler!<BR>IP Adresse: $REMOTE_ADDR</span>"; 
$isvalid = false; 
}else{ 
$fehler .= "<span class=".'block'.">Mitteilung: Ok<BR>IP Adresse: $REMOTE_ADDR</span>"; 
} 
if($isvalid == true) {  // Da lag der Fehler! 
if(mail("nobody@example.com", "Betreff", "Zeile 1\nZeile 2\nZeile 3")){ 
echo "email wurde erfolgreich versand!"; 
} 
} 
}

Danke danke danke ....

cu ->da Dream
 
Zurück