Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » mail() Antworten
mail()

Ehemaliges Mitglied (#644)
Forenheld


Beiträge: 835


Hallo,
Ich hätte da noch ne Frage zu nem php mailer:
Also, bisher hatte ich meine Formulare immer so verschickt, das ich erst eine html seite mit formular gemacht habe und dann eine send_mail.php, die dann die nachricht verschickt hat. jetzt möchte ich das ganze nur in eine php datei machen also, z.B. mail.php inder das formular und dann noch das mail script ist. im <form action="<? $PHP_SELF ?>" method="post"> aber wi kann ich sicher gehen, das die mail nicht verschickt wir, bevor auf auf "senden" gegangen bin ??


Hoffe auf schnelle meldungen...
AXo

  Profil   Editieren   Zitieren

Agent
Quasselstrippe


Beiträge: 312


Hey,

ganz einfach:

in dem du per "if" guckst ob das form abgeschickt wurde:
(am besten per hidden field):

<form action="<?php echo "$PHP_SELF" ?>" method="post">
<input type="hidden" name="gesendet" value="yes">
usw


und am besten ganz oben in die datei:
if($gesendet == "yes")
{
echo "Danke fuers absenden bla bla";
}


Fröhliche Weihnachten an alle !!!!!!!1

c u all

Agent

---
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?

  Profil   Website   Editieren   Zitieren

Ehemaliges Mitglied (#644)
Forenheld


Beiträge: 835


sau cool, danke...

  Profil   Editieren   Zitieren

Ehemaliges Mitglied (#644)
Forenheld


Beiträge: 835


also, soll ich dann statt dem echo blabla, mail(bla,bla,bla) usw. ???
oder wie ?

  Profil   Editieren   Zitieren

michael
Foren-Team


Beiträge: 1933


oder beides,...

if($gesendet == "yes")
{
// die mail-prozedur, eine danke-ausgabe, etc.
}
else
{
// ausgabe des formulars
}



  Profil   Editieren   Zitieren

Ehemaliges Mitglied (#644)
Forenheld


Beiträge: 835


ja, aber wie kann ich dann das formular verschwinden lassen wenn die mail versendent wurde ? ich geb euch mal den Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<link rel="stylesheet" type="text/css" href="../css/main.css">
<?php
$mail_body = "Hallo Paul,n $name hat dir eine email geschrieben. n Seine email lautet: $mail n seine nachricht: n $text";
$mailto = "paul@paul-putzar.de";
$subject = "Kontakt";
if($gesendet == "yes")
{
mail($mailto,$subject,$mail_body);
echo ("<p>Danke, die email ist abgeschickt worden</p>");
}
?>
<title>kontaktformular</title>
</head>

<body bgcolor="#66aadd">
<form action="<? $PHP_SELF ?>" method="post">
<input type="hidden" name="gesendet" value="yes">
<table align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<b>name:</b>
</td>
<td>
<input type="text" name="name">
</td>
</tr>
<tr>
<td>
<b>email:</b>
</td>
<td>
<input type="text" name="mail">
</td>
</tr>
<tr>
<td>
<b>Nachricht:</b>&nbsp;
</td>
<td>
<textarea name="text"></textarea>
</td>
</tr>
<tr>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" value="senden..">
</td>
</tr>
</table>
</form>
</body>
</html>


Danke jetzt schon
AXo

  Profil   Editieren   Zitieren

Ehemaliges Mitglied (#644)
Forenheld


Beiträge: 835





  Profil   Editieren   Zitieren

michael
Foren-Team


Beiträge: 1933


das formular musst du in den else-teil packen (siehe mein posting). damit das so dargestellt wird am besten nach der geschwungenen klammer bei else php beenden ?> das formular hereinkopieren und dann wieder anfangen <?

frohe weihnachten.


  Profil   Editieren   Zitieren

Ehemaliges Mitglied (#644)
Forenheld


Beiträge: 835


sorry, check ich immernoch nicht...

  Profil   Editieren   Zitieren

einstein
Quasselstrippe


Beiträge: 241


unkonventioneller Vorschlag: leite den Besucher einfach auf die Datei "mail_versendet.htm" weiter, wenn die Mail verschickt worden ist, also so:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64:
<?php 
$mail_body = "Hallo Paul,n ".$_POST[name]." hat dir eine email geschrieben. n Seine email lautet: $mail n seine nachricht: n ".$_POST[text]; 
$mailto = "paul@paul-putzar.de"; 
$subject = "Kontakt"; 
if($_POST[gesendet] == "yes") 
{ 
mail($mailto,$subject,$mail_body); 
Header("Location: mail_versendet.htm");
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 
<head> 
<link rel="stylesheet" type="text/css" href="../css/main.css"> 
<title>kontaktformular</title> 
</head> 

<body bgcolor="#66aadd"> 
<form action="<? $PHP_SELF ?>" method="post"> 
<input type="hidden" name="gesendet" value="yes"> 
<table align="center" cellpadding="0" cellspacing="0"> 
<tr> 
<td> 
<b>name:</b> 
</td> 
<td> 
<input type="text" name="name"> 
</td> 
</tr> 
<tr> 
<td> 
<b>email:</b> 
</td> 
<td> 
<input type="text" name="mail"> 
</td> 
</tr> 
<tr> 
<td> 
<b>Nachricht:</b>&nbsp; 
</td> 
<td> 
<textarea name="text"></textarea> 
</td> 
</tr> 
<tr> 
<td> 
&nbsp; 
</td> 
</tr> 
<tr> 
<td> 
</td> 
<td> 
<input type="submit" value="senden.."> 
</td> 
</tr> 
</table> 
</form> 
</body> 
</html> 


Bei der Weiterleitung muss der PHP-Code oberhalb stehen, da vor der Weiterleitung nichts ausgegeben werden darf.

  Profil   Editieren   Zitieren

Andreas S
Otto-Normal-Poster


Beiträge: 81


Die Eingaben des Users sollten aber auch gecheckt werden...

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76: 
77: 
78: 
79: 
80: 
81: 
82: 
83: 
84: 
85: 
86:
<?php

echo <<<TopHtml
<html>
<head>
<link rel="stylesheet" type="text/css" href="../css/main.css">
</head>
<body bgcolor="#66aadd">
TopHtml;

if(isset($HTTP_POST_VARS['absenden'])){
$name= trim($HTTP_POST_VARS['name']);
$text = trim($HTTP_POST_VARS['text']);

if((!preg_match('/^[w-.]+@(w+[w-]+.){0,3}w+[w-]+.[a-zA-Z]{2,4}$/',$HTTP_POST_VARS['email']))){
echo "Ungültige Email Adresse!";
exit;
}

if(empty($name)){
echo "Dein Name fehlt!";
exit;
}

if(empty($text)){
echo "Deine Nachricht fehlt!";
exit;
}

mail("paul@paul-putzar.de","Kontakt","Hallo Paul,n" . htmlentities($HTTP_POST_VARS['name']) . "hat dir eine email geschrieben. n Seine email lautet:" . htmlentities($HTTP_POST_VARS['email']) . "n seine nachricht: n" . htmlentities($HTTP_POST_VARS['text']));
echo "Danke!";
exit;
}



echo <<<KontaktHTML
<form action="$HTTP_SERVER_VARS[PHP_SELF]" method="post"> 
<table align="center" cellpadding="0" cellspacing="0"> 
<tr> 
<td> 
<b>name:</b> 
</td> 
<td> 
<input type="text" name="name"> 
</td> 
</tr> 
<tr> 
<td> 
<b>email:</b> 
</td> 
<td> 
<input type="text" name="email"> 
</td> 
</tr> 
<tr> 
<td> 
<b>Nachricht:</b>  
</td> 
<td> 
<textarea name="text"></TEXTAREA> 
</td> 
</tr> 
<tr> 
<td> 
  
</td> 
</tr> 
<tr> 
<td> 
</td> 
<td> 
<input type="submit" name="absenden" value="senden.."> 
</td> 
</tr> 
</table> 
</form>
KontaktHTML;

echo <<<bottomHTML
</body> 
</html> 
bottomHTML;

?>


[ Diese Nachricht wurde ge&auml;ndert von: Andreas S am 2002-12-24 16:28 ]

  Profil   Editieren   Zitieren

Ehemaliges Mitglied (#644)
Forenheld


Beiträge: 835


geht nich, gibt mir ne fehlermeldung aus ...

  Profil   Editieren   Zitieren

Andreas S
Otto-Normal-Poster


Beiträge: 81


Sorry, kann das hier jetzt nicht testen..
Was sagt der Fehler?

Edit: Habs nochmal editiert... versuchs bitte nochmal.


  Profil   Editieren   Zitieren

einstein
Quasselstrippe


Beiträge: 241


da ist jetzt m.E. kein Fehler mehr drin, ist aber doch recht umständlich gemacht, aber für nen Formmailer reichts allemal

  Profil   Editieren   Zitieren
 

Antworten
Nach oben