Formularversand

C

combich

Aktives Mitglied
Thread Starter
Dabei seit
02.06.2005
Beiträge
368
Reaktionspunkte
3
Hallo, bastle für meine Website gerade an einem Formular das ich gerne bei einem Klick auf die Schaltfläche senden an meine E-Mailadresse verschicken lassen möchte und gleichzeitig dem User, der das Formular ausgefüllt hat, seine eingegebenen Daten bestätigen lassen möchte. Bisher hab ich mir (für ein Testformular) das folgende Konzept (mit PHP) überlegt:


<?php if (isset($_POST['Submit']) && $_POST['email'] != '' && strpos($_POST['email'], '@') !== false && $_POST['name'] != '' ) {

echo 'E-Mailadresse: ' . ((isset($_POST['email'])) ? htmlspecialchars($_POST['email']) : '---');

echo '<br /> Name: ' . ((isset($_POST['name'])) ? htmlspecialchars($_POST['name']) : '---');

echo '<br /> Geschlecht: ' . ((isset($_POST['radio'])) ? htmlspecialchars($_POST['radio']) : '---');

echo '<br /> <br />';
}
?>

</p>
<form id="form1" name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" >
<label>E-Mailadresse <input name="email" type="text" id="email" />
</label>
<p>

<label>Name <input name="name" type="text" id="name" />
</label>
<p>
<label>
<input type="radio" name="geschlecht" value="m&auml;nnlich" /> Männlich</label> <label>
<input type="radio" name="geschlecht" value="weiblich" /> Weiblich</label>
</p>
<p>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Senden" />
</label>
</p>
</form>


Mein Frage ist nun, wie veranlasse ich den Versand des Formulars an meine E-Mailadresse?? Danke!!
 
stell am besten mal den code nochmals neu rein. oben über dem Texteingabefeld findest du ein Buttom der heist PHPcode.
es ist einfach besser zu lesen
eisman
 
PHP:
<?php
if (isset($_POST['Submit']) && $_POST['email'] != '' && strpos($_POST['email'], '@') !== false && $_POST['name'] != ''
) {
echo 'E-Mailadresse: ' . ((isset($_POST['email'])) ? htmlspecialchars($_POST['email']) : '---');
echo '<br /> Name: ' . ((isset($_POST['name'])) ? htmlspecialchars($_POST['name']) : '---');
echo '<br /> Geschlecht: ' . ((isset($_POST['radio'])) ? htmlspecialchars($_POST['radio']) : '---');
echo '<br /> <br />';
}
?>
</p>
<form id="form1" name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" >
  <label>E-Mailadresse
  <input name="email" type="text" id="email" />
  </label>
  <p>
	<label>Name
    <input name="name" type="text" id="name" />
    </label>
	<p>
	<label>
    <input type="radio" name="geschlecht" value="m&auml;nnlich" />
    Männlich</label>
    <label>
    <input type="radio" name="geschlecht" value="weiblich" />
    Weiblich</label>
  </p>
  <p>
   
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="Senden" />
    </label>
  </p>
</form>
 
Muss ich das Formular zuerst an ein zweites Script senden, welches mir anschließend das Formular an meine E-Mailadresse versendet oder müsste das auch direkt aus dem Formular heraus funktionieren??
 
Nein, musst Du nicht, Du kannst aus Deinem PHP-Block die Formular verschicken. Der PHP Code zum Verschicken sieht sinngemäß so aus:

PHP:
$mail_empfaenger="Deine Adresse";
$mail_absender=$_POST['email'];
$betreff="Vom Formular";
$text="Formulardaten hier eintragen, z. B." . $geschlecht;
mail($mail_empfaenger, $betreff, $text,"from:$mail_absender");


Die Funktion mail(); versendet schliesslich die Mail. Du musst noch schauen was für Parameter für mail(); bei Deinem Provider anzugeben sind, das ist bei jedem etwas aus Sicherheitsgründen anders.

2nd
 
PHP:
$mail_empfaenger="Deine Adresse"; 
$mail_absender=$_POST['email']; 
$betreff="Vom Formular"; 
$text="Formulardaten hier eintragen, z. B." . $geschlecht; 
mail($mail_empfaenger, $betreff, $text,"from:$mail_absender");

Doch wo genau füge ich nun diesen Code ein?? In den if- Tag (sodass der Versand erfolgt wenn die Überprüfung der Bedingung erfolgreich ist)??
 
So ungefähr, ja. Du willst ja nur ein Mail versenden, wenn tatsächlich auch das Formular ausgefüllt wurde.
 
Hab den Code nun in meinen if- Tag eingesetzt und testweise das Formular ausgefüllt. Die Ausgabe der eingegebenen Daten funktioniert- jedoch nicht der Versand der Formulardaten. Habe als E-Mail Empfänger meine E-Mailadresse im Format "name@domain.de" eingegeben, jedoch kommt dort keine E-Mail mit den eingegebenen Formulardaten an. An was könnte dies gescheitert sein??
 
In so nem Fall testet man mit echo's rum:

PHP:
if(/* … */)
{
echo 'Schleife wird durchlaufen';
$mail_empfaenger="Deine Adresse";
$mail_absender=$_POST['email'];

echo 'Absender: '.$mail_absender.'<br />'

$betreff="Vom Formular";
$text="Formulardaten hier eintragen, z. B." . $geschlecht;
mail($mail_empfaenger, $betreff, $text,"from:$mail_absender") or die('Hier läuft was schief');

Usw. da siehst Du recht schnell, welche Variablen nicht übergeben werden, oder welchen Weg durch die Kontrollstrukturen der Parser genommen hat.

@goddess: Bescheidener Name ;)
 
Hab nun die echos eingefügt und die Formularseite getestet. Es werden mir alle E-Mail- Variablen ($mail_empfaenger, $mail_absender) richtig ausgegeben und es erscheint nicht die Meldung, dass irgendetwas schief läuft. Jetzt bin ich wirklich ratlos. Alle Variablen werden richtig übergeben, die mail- Funktion an sich müsste auch funktionieren, aber ein Versand der Formulardaten findet nicht statt :-/
 
Evtl. ein Providerproblem? Wenn Du das Script hier mal anhängst, kann ich kurz probieren, ob es bei mir geht.

2nd
 
Kann die PHP- Datei selbst leider nicht hochladen, aber hier der gesamte Code:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Formular</title>
</head>

<body>

<p>

<?php

//Bedingung
if (isset($_POST['Submit']) && $_POST['email'] != '' && strpos($_POST['email'], '@') !== false && $_POST['name'] != ''
) {
echo 'E-Mailadresse: ' . ((isset($_POST['email'])) ? htmlspecialchars($_POST['email']) : '---');
echo '<br /> Name: ' . ((isset($_POST['name'])) ? htmlspecialchars($_POST['name']) : '---');
echo '<br /> Geschlecht: ' . ((isset($_POST['geschlecht'])) ? htmlspecialchars($_POST['geschlecht']) : '---');
echo '<br /> <br />';

echo '<br /> Schleife wird durchlaufen';
$mail_empfaenger='name@domain.de'; // Zuordnung aller Variablen
$mail_absender=$_POST['email'];
$email = $mail_absender;
$name = $_POST['name'];
$radio = $_POST['geschlecht'];
$betreff="Vom Formular";
$text="Formulardaten: " . $email . "<br />" . $name . "<br />" . $radio;


// Test der Variablen
echo "<br /> $mail_empfaenger";
echo "<br /> $mail_absender";
echo "<br /> $text";
mail($mail_empfaenger, $betreff, $text, "from:$mail_absender") or die('Irgendwas stimmt hier nicht');

}
?>


</p>
<form id="form1" name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" >
  <label>E-Mailadresse
  <input name="email" type="text" id="email" />
  </label>
  <p>
	<label>Name
    <input name="name" type="text" id="name" />
    </label>
	<p>
	<label>
    <input type="radio" name="geschlecht" value="m" />
    Männlich</label>
    <label>
    <input type="radio" name="geschlecht" value="w" />
    Weiblich</label>
  </p>
  <p>
   
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="Senden" />
    </label>
  </p>
</form>
</body>
</html>
 
Habe eine eMail bekommen. Ich will ja nicht blöd fragen, aber hast Du hier

PHP:
echo '<br /> Schleife wird durchlaufen';
$mail_empfaenger='name@domain.de'; // Zuordnung aller Variablen
$mail_absender=$_POST['email'];

statt 'name@domain.de' Deine eMail Adresse eingetragen? Sonst kriegst Du natürlich keine Mail. Das habe ich als einzige Änderung am Code durchgeführt, geuploadet und dann hat es funktioniert.

2nd
 
Jepp, name@domain.de wurde durch meine E-Mail- Adresse ersetzt... wollte diese hier jedoch nicht posten (nicht das sie an die Falschen gerät und wieder als Spam- Empfänger verwendet wird)... Könnte dies evtl. ein Providerproblem sein, dass bei mir der Versand der Daten nicht klappt?? Bin selbst bei Strato (Webhosting) und habe mir dort eine E-Mailadresse erstellt...
 
Habe über phpinfo() gerade gesehen, dass mein Server nur mit PHP 4.3 läuft und nicht mit PHP 5.1. Könnte es evtl. auch daran liegen, dass bei mir der Versand der Formulardaten nicht funktioniert?? :mad:
 
Zurück
Oben Unten