mail-funktion
#1
hallo

also kannst du mir mal die mail-funktion von deiner seite reinposten? ist eh nicht so schwer oder? *hoffentu*

danke Philippe

EDIT: ich meine Tobi (haben gestern in ICQ gesprochen)
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#2
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Kontakt</title>
</head>

<body>
<script language="JavaScript">

var testresults;

function checkmail()
{
var str=document.formular.mail_from.value;
var filter = /([_ -9a-z-]+)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
if (!filter.test(str))
{
alert('Bitte geben Sie eine gültige Email Adresse an!')
}

//-->
</script>

<?php

$mail_to = 'hallo@huhu.de';
$header = 'From: '.$mail_from_namen.' <'.$mail_from.'>';

if(isset($mail_from) && isset($mail_subject) && isset($mail_text))
{

if($mail_from == '' || $mail_from_namen == '' || $mail_subject == '' || $mail_text == '')
{
print '<p align="center"><font size="4"><b>Du hast eines der Felder nicht ausgefüllt!</b></font></p>
<br><p align="center"><font size="3"><b><a href="javascript:history.back()">zurück</a></b></font></p>';
}
else
{
$mail_text .= '

Homepage: '.$mail_urltext.' ';
$mail_text .= '

IP: '.$REMOTE_ADDR.' ';
mail($mail_to,$mail_subject,$mail_text,$header);
print '<p align="center"><font size="4"><b>Deine eMail wurde erfolgreich abgesendet!</b></font></p>
<br><p align="center"><font size="3"><b><a href="../home.php">zur Hauptseite</a></b></font></p>';
}
}

else
{
print '<p align="center"><font size="4"><b>Bei Fragen, Anregungen und
Kritk oder anderweitigen Dingen, schreibe mir doch bitte <br>
einfach :-) !</b></font></p>

<form action="kontakt.php" name="formular" method="post">
<table border="0" cellpadding="5" cellspacing="0" width="70%">
  <tr>
    <td><b>Name: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;<input type="text" size="31" name="mail_from_namen"></b></td>
  </tr>
  <tr>
    <td><b>E-Mail:&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</b><input
    type="text" size="31" name="mail_from" onChange="checkmail()"></td>
  </tr>
  <tr>
    <td><b>Homepage:&nbsp;</b><input type="text" size="31" name="mail_urltext" value="http://"></td>
  </tr>
  <tr>
    <td><b>Betreff:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </b><input type="text" size="31" name="mail_subject"></td>
  </tr>
  <tr>
    <td><br><b>Kommentar/Anfrage:</b><br>
    <textarea name="mail_text" rows="10" cols="50" wrap="soft"></textarea></td>
  </tr>
  <tr>
    <td><b><br>
    <input type="submit" value="Abschicken"> <input type="reset" value="Zurücksetzen"></td>
  </tr>
</table>
</div>
</form>
</div>';
}

?>

</body>
</html>

Jo, das ist das Script. Schau's dir einfach mal durch und verzweifle nicht. Wink
Wie du siehst wie bei Abschicken des Formulars einfach die kontakt.php neu geladen und mit einigen if-Anweisungen überprüft ob bestimmmte Felder ausgefüllt wurden. Wenn die benötigten Felder Inhalte haben, so wird mit der Funktion mail() (nähere Infos über die Übergabe von den Variblen innerhalb der Klammern ( ) findest du auf http://www.selfphp.info) eine Mail an die Adresse geschickt, die der Variablen $mail_to (ganz am Anfang des PHP-Codes) gegeben wurde.

Grüße
Tobi
  Zitieren
#3
schade ist schwierriger als ich gedacht hatte. *heul*

also ich poste mal kurz mein formular und die "angepasste" php funktion.

Zitat: <form method="post" action="reise_insert.php" name="reise">
<p align="justify">Wir würden uns sehr freuen, wenn du uns deinen Urlaubsbericht zukommen lassen würdest. Du hilfst anderen damit bei ihrer Reiseplanung. </p><br>

<table border="0">
<tr>
<td width="90">Name<font color="darkred">*</font></td>
<td><input type="text" name="name" maxlength="25" size="20"></td>
</tr>
<tr>
<td width="90">E-Mail<font color="darkred">*</font></td>
<td width="90"><input type="text" name="mail" maxlength="20" size="20"></td>
</tr>
<tr>
<td width="90">Reiseziel<font color="darkred">*</font></td>
<td width="90"><input type="text" name="ziel" maxlength="30" size="20"></td>
</tr>
<tr>
<td width="90">Anzahl Personen</td>
<td><select name="personen">
<option value="1pers"> 1 Person
<option value="2pers"> 2 Personen
<option value="3-4pers"> 3 oder 4 Personen
<option value="4mehr"> mehr als 4 Personen
</select></td>
</tr>
<tr>
<td width="90">Tauchbasis</td>
<td><input type="text" name="basis" maxlength="30" size="20"></td>
</tr>
</table>
<br>
Beschreibung <i>(Bitte beschreibe deinen Urlaub ausführlich.)</i><br>
<textarea name="beschreibung" style="height:150px;width:350px;" wrap="soft">Danke für Deine Mühe.</textarea> <br><br>
<table border="0">
<tr>
<td width="400">Ich bin damit einverstanden, dass meine E-Mail Adresse für andere Benutzer für Rückfragen sichtbar ist.</td>
<td><input type="radio" name="mail_sichtbar" value="ja" checked>Ja<br>
<input type="radio" name="mail_sichtbar" value="nein">Nein</td>
</tr>
<tr>
<td width="400">Ich möchte über Neuigkeiten per E-Mail informiert werden. (Wir versenden keine Werbung und kein Spam!)</td>
<td><input type="radio" name="newsletter" value="ja" checked>Ja<br>
<input type="radio" name="newsletter" value="nein">Nein</td>
</tr>
</table>
<br>
<input type="submit" value="Abschicken"><br>
<br>
<table width="100%">
<tr><td>Wir behalten uns vor, den Text zu kürzen.</td></tr></table>
</form>


und hier die "angepasste funktion. (angeblich gibt es einen parse error. allerdings ist da glaub ich sehr viel falsch. (ich mach das wo ich fehler vermute rot!)

Zitat:<?php
$mail_subject = 'Reisebericht';
$mail_to = 'support@tauch-info.net';
$header = 'From: '.$name.' <'.$mail.'>';

if(isset($mail) && isset($name))

weis nicht wofür das gut sein soll !

{

if($mail == '' || $namen == '' || $beschreibung == '' || $basis == '' || $ziel == '')
{
print '<p align="center"><font size="4"><b>Du hast eines der Pflicht-Felder nicht ausgefüllt!</b></font></p>
<br><p align="center"><font size="3"><b><a href="javascript:history.back()">zurück</a></b></font></p>';
}
else
{
$beschreibung .= '

Name: '.$name.' ';
$beschreibung .= '


IP: '.$REMOTE_ADDR.' ';
mail($mail_to,$mail_subject,$beschreibung,$header);
print 'Dein Reisebericht wurde erfolgreich abgesendet und in Kürze bearbeitet!';
}
}

else
{
print 'Für was ist das?';
?>

EDIT:
Es fehlen ja auch noch ein paar Variablen.... nur habe ich nichts gefunden wo ich die unterbringen soll. kann es sein das die alle dorthinkomme wo $beschreibung .= ' steht?

ich habe bei dem link den du mir gegeben hast was gefunden und lese mir das jetzt einmal durch. vielleicht schaff ich es nachher ja sogar!?! Big Grin
DAnke Philippe
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#4
Willst du die Fehler erklärt haben oder soll ich dir einfach das Script so debuggen bis es geht? Smile
  Zitieren
#5
naja also eigentlich würd ich es schon lieber verstehen .. weil immerhin habe ich glaub ich 4 verschiedene formulare. *rotwerd*
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#6
Nagut Smile *die Finger entknot*

Erst einmal muss dir bewusst sein, dass das Script auf ein und der selben Seiten läuft und in der Formular-action="" der Dateiname der selben Seite stehen muss.
Das Script arbeit so, dass es wenn Mail und Name (und anderen Felder) ausgefüllt sind, die Mail absendet und dann sowas wie "Mail abgesendet" printet. Andernfalls tritt die else-Anweisung in Kraft und es wird das Formular geprintet.
Das Problem, du hast HTML und PHP Version seperat gepostet, was aber gar nicht gehen sollte, weil PHP und HTML ja fest zusammen hängen (z.B. Formular-HTMLcoded ist in der PHP-else-Anweisung drin).

Weiterhin solltest du drauf achten die Variablen nicht nach festen Funktionen/Methoden oder HTML-Tags oder Attributen zu benennen. Deshalb sind Feldnamen wie name="name" oder name="mail" ungeeignet. Nimm ruhig etwas genauere und notfalls längere Definitionen und nutze auch den Unterstrich _ .

dann habe ich gesehen, dass du die Textarea mit "beschreibung" benannt hast, aber ebenso die Funktionsvariable bei mail(), die den Text der bei dir ankommenden Mail darstellt. Eigentlich sollte die eingegebene Beschreibung des Users nur ein Teil dieses Mailtextes sein. Deshalb musst du bei der Mailversendungsfunktion mail() und schon bei der Zusammenpuzzlung der Beschreibung und IP einen anderen Variblennamen wie $mail_text nehmen. Ich ändere das unten grün .

Zitat:Original von Real_Master

[QUOTE] <form method="post" action="reise_insert.php" name="reise">
<p align="justify">Wir würden uns sehr freuen, wenn du uns deinen Urlaubsbericht zukommen lassen würdest. Du hilfst anderen damit bei ihrer Reiseplanung. </p><br>

<table border="0">
<tr>
<td width="90">Name<font color="darkred">*</font></td>
<td><input type="text" name="name" maxlength="25" size="20"></td>
</tr>
<tr>
<td width="90">E-Mail<font color="darkred">*</font></td>
<td width="90"><input type="text" name="mail" maxlength="20" size="20"></td>
</tr>
<tr>
<td width="90">Reiseziel<font color="darkred">*</font></td>
<td width="90"><input type="text" name="ziel" maxlength="30" size="20"></td>
</tr>
<tr>
<td width="90">Anzahl Personen</td>
<td><select name="personen">
<option value="1pers"> 1 Person
<option value="2pers"> 2 Personen
<option value="3-4pers"> 3 oder 4 Personen
<option value="4mehr"> mehr als 4 Personen
</select></td>
</tr>
<tr>
<td width="90">Tauchbasis</td>
<td><input type="text" name="basis" maxlength="30" size="20"></td>
</tr>
</table>
<br>
Beschreibung <i>(Bitte beschreibe deinen Urlaub ausführlich.)</i><br>
<textarea name="beschreibung" style="height:150px;width:350px;" wrap="soft">Danke für Deine Mühe.</textarea> <br><br>
<table border="0">
<tr>
<td width="400">Ich bin damit einverstanden, dass meine E-Mail Adresse für andere Benutzer für Rückfragen sichtbar ist.</td>
<td><input type="radio" name="mail_sichtbar" value="ja" checked>Ja<br>
<input type="radio" name="mail_sichtbar" value="nein">Nein</td>
</tr>
<tr>
<td width="400">Ich möchte über Neuigkeiten per E-Mail informiert werden. (Wir versenden keine Werbung und kein Spam!)</td>
<td><input type="radio" name="newsletter" value="ja" checked>Ja<br>
<input type="radio" name="newsletter" value="nein">Nein</td>
</tr>
</table>
<br>
<input type="submit" value="Abschicken"><br>
<br>
<table width="100%">
<tr><td>Wir behalten uns vor, den Text zu kürzen.</td></tr></table>
</form>


Zitat:<?php
$mail_subject = 'Reisebericht';
$mail_to = 'support@tauch-info.net';
$header = 'From: '.$name.' <'.$mail.'>';

if(isset($mail) && isset($name))

weis nicht wofür das gut sein soll !
Hm, ist in diesem Fall nicht unbedingt nötig, weil du gleich darunter ja ALLE Felder auf Inhalt prüfst -> du lässt erst eine mail versenden, wenn wirklich ALLE Felder einen Inhalt haben.
{

if($mail == '' || $name == '' || $beschreibung == '' || $basis == '' || $ziel == '')
{
print '<p align="center"><font size="4"><b>Du hast eines der Pflicht-Felder nicht ausgefüllt!</b></font></p>
<br><p align="center"><font size="3"><b><a href="javascript:history.back()">zurück</a></b></font></p>';
}
else
{
$mail_text = '

Name: '.$name.' ';
$mail_text .= '

Beschreibung: '.$beschreibung.' ';
$mail_text .= '

IP: '.$REMOTE_ADDR.' ';

mail($mail_to,$mail_subject,$mail_text,$header);
print 'Dein Reisebericht wurde erfolgreich abgesendet und in Kürze bearbeitet!';
}
}

else
{
print 'Für was ist das? -> DA kommt der Formular-HTML-Code rein, der ausgegeben wird, falls keines der Formularfelder ausgefüllt wurde (else) und damit die Mail nicht versendet werden könnte. ';
?>

So, innerhalb der Zitate hab ich zweimal was grünes reingeschrieben und bei der "Massen"-Prüfung der Felder hast du statt name='' ... namen='' mit n am Ende geschrieben. Habe das korrigiert Wink

Soweit erstmal.
Tobias
  Zitieren
#7
so habe leider viele fragen. *gg*

Zitat:if(isset($mail) && isset($name))

das also weglassen? -> einfach löschen + den 2 klammern die dadurch verursacht wurden?

Zitat:if($mail == '' || $name == '' || $beschreibung == '' || $basis == '' || $ziel == '')

also muss ich da alle felder überprüfen oder wird wenn ich eine variable nicht anführe einfach nicht überprüft ob dieses feld auch ausgefüllt ist!?!?


Zitat:$mail_text .= '

IP: '.$REMOTE_ADDR.' ';

was ist das? diese variable ist in deinem formular ja auch nirgends vorgekommen? oder?


was macht die variable $header?
und beim letzten else fehlt eine klammer (}) oder?

falls ich das rätsel mit diesen informationen nciht lösen kann dann post ich dir nochmal denn quelltext gell? *liebschau* Rolleyes

Danke Philippe
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#8
Zitat:Original von Real_Master
so habe leider viele fragen. *gg*

Zitat:if(isset($mail) && isset($name))

das also weglassen? -> einfach löschen + den 2 klammern die dadurch verursacht wurden?

Ja, im Prinzip schon Smile

Zitat:if($mail == '' || $name == '' || $beschreibung == '' || $basis == '' || $ziel == '')

also muss ich da alle felder überprüfen oder wird wenn ich eine variable nicht anführe einfach nicht überprüft ob dieses feld auch ausgefüllt ist!?!?

Jepp, und wenn es dir bei einem Feld nicht so wichtig ist, ob es ausgefüllt wurde, dann tust du's einfach nicht in dieser if-Anweisung übeprüfen lassen.


Zitat:$mail_text .= '

IP: '.$REMOTE_ADDR.' ';


Irrtum! Diese Variable kommt auch in meinem ursprünglichen Quelltext vor.
Das ist, wie ich dir auch im Text beschrieben habe, die Variable für den Text, den du in der Mail liest.


was macht die variable $header?
-> Der kannst du noch Sachen wie HTML-Type und sonen Mist zugeben, das wird dann alles (auf Abruf) im Mailprogramm angezeigt und dient praktisch zur besseren Identifizierung der eMail. Ist aber nicht so wichtig. Ich habe in meinem Beispiel nur die Informationen Name und eMail-Adresse reingenommen, wie du am Anfang des PHP-Codes siehst.

und beim letzten else fehlt eine klammer (}) oder?
-> Jo, hast Recht.

falls ich das rätsel mit diesen informationen nciht lösen kann dann post ich dir nochmal denn quelltext gell? *liebschau* Rolleyes

-> Jepp Wink

Danke Philippe

Merke gerade, dass ich im Zitat die Fragen beantwortet habe Wink
  Zitieren
#9
ok tut mir leid ich kann da jetzt nichts mehr finden. rot markiert ist glaube ich fehler aber da weiß ich einfach nciht was das sein soll.

variablen im formular habe ich fett markiert damit du sie nicht suchen musst.

Zitat:<?php
$mail_subject = 'Reisebericht';
$mail_to = 'support@tauch-info.net';
$header = 'From: '.$name_von_user.' <'.$mail_von_user.'>';


if($mail_von_user == '' || $name_von_user == '' || $beschreibung == '' || $basis == '' || $reiseziel == '' || $personen == '' || $newsletter == '' || $mail_sichtbar == '')
{
print 'Du hast eines der Pflicht-Felder nicht ausgefüllt!<br><a href="javascript:history.back()">zurück</a>';
}
else
{
$mail_text = '

Name: '.$name_von_user.' ';
$mail_text .= '

E-Mail: '.$mail_von_user.' ';
$mail_text .= '

Reiseziel: '.$reiseziel.' ';
$mail_text .= '

Basis: '.$basis.' ';
$mail_text .= '

Beschreibung: '.$beschreibung.' ';
$mail_text .= '

Peronen: '.$personen.' ';
$mail_text .= '

E-Mail sichtbar: '.$mail_sichtbar.' ';
$mail_text .= '

Newsletter abonieren: '.$newsletter.' ';
$mail_text .= '

IP: '.$REMOTE_ADDR.' ';
mail($mail_to,$mail_subject,$mail_text,$header);

print 'Dein Reisebericht wurde erfolgreich abgesendet und in Kürze bearbeitet!';
}


else
{
print '<form method="post" action="form_reise.php" name="reise">
<p align="justify">Wir würden uns sehr freuen, wenn du uns deinen Urlaubsbericht zukommen lassen würdest. Du hilfst anderen damit bei ihrer Reiseplanung. </p><br>

<table border="0">
<tr>
<td width="90">Name<font color="darkred">*</font></td>
<td><input type="text" name="name_von_user " maxlength="25" size="20"></td>
</tr>
<tr>
<td width="90">E-Mail<font color="darkred">*</font></td>
<td width="90"><input type="text" name="mail_von_user " maxlength="20" size="20"></td>
</tr>
<tr>
<td width="90">Reiseziel<font color="darkred">*</font></td>
<td width="90"><input type="text" name="reiseziel " maxlength="30" size="20"></td>
</tr>
<tr>
<td width="90">Anzahl Personen</td>
<td><select name="personen ">
<option value="1pers"> 1 Person
<option value="2pers"> 2 Personen
<option value="3-4pers"> 3 oder 4 Personen
<option value="4mehr"> mehr als 4 Personen
</select></td>
</tr>
<tr>
<td width="90">Tauchbasis</td>
<td><input type="text" name="basis " maxlength="30" size="20"></td>
</tr>
</table>
<br>
Beschreibung <i>(Bitte beschreibe deinen Urlaub ausführlich.)</i><br>
<textarea name="beschreibung " style="height:150px;width:350px;" wrap="soft">Danke für Deine Mühe.</textarea> <br><br>
<table border="0">
<tr>
<td width="400">Ich bin damit einverstanden, dass meine E-Mail Adresse für andere Benutzer für Rückfragen sichtbar ist.</td>
<td><input type="radio" name="mail_sichtbar " value="ja" checked>Ja<br>
<input type="radio" name="mail_sichtbar " value="nein">Nein</td>
</tr>
<tr>
<td width="400">Ich möchte über Neuigkeiten per E-Mail informiert werden. (Wir versenden keine Werbung und kein Spam!)</td>
<td><input type="radio" name="newsletter " value="ja" checked>Ja<br>
<input type="radio" name="newsletter " value="nein">Nein</td>
</tr>
</table>
<br>
<input type="submit" value="Abschicken"><br>
<br>
<table width="100%">
<tr><td>Wir behalten uns vor, den Text zu kürzen.</td></tr></table>
</form>';
}
?>
[Bild: style1,Webmaster-Markt-dot-com.png]
  Zitieren
#10
Die markierte Stelle ist nicht der Fehler, dort ist alles richtig.
Das Problem ist, dass die if-Anweisung, die du auf meine Zustimmung hin weggemacht hast, hatte doch Sinn, denn du siehst ja am Ende eine else-Anweisung (die das Formular printet) die aber gar keine zugehörige if-Anweisung hat. Und das war die, die wir/du weggemacht haben/hast. Deshalb machen wir die weggemachte if-Anweisung einfach wieder hin (musst natürlich die zwei Variablen anpassen) und somit ist das die "Generalüberprüfung", denn wenn weder Name noch Mailadresse da sind, wird mit der unteren else-Anweisung einfach das Formular geprintet. Sind sie aber gesetzt (isset() ) dann wird halt die "Feinüberprüfung" gemacht (die if-Anweisung, die wir bis jetzt haben) und so weiter ... kurz gesagt, setz einfach diese if-Anweisung wieder hin:

if(isset($mail_von_user))
{


Müsste dann klappen.
  Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 4 Gast/Gäste