PHP: Formmailer. Ich kriegs nicht hin.

Bas-t!

Lt. Junior Grade
Registriert
Feb. 2007
Beiträge
497
Moin.

Versuche schon seit Stunden einen Formmailer in meine HP einzubauen. Wenn ich ein vorgefertigtes Script aus dem Internet in einer Datei verwende gehts. Der Server kann also PHP. Ich möchte allerdings das HTML-Formular und das PHP-Script trennen und verwende daher 2 Dateien.

Was mache ich falsch?

So sieht das Formular aus:

HTML:
<div id="mailer"><strong>Ihre Nachricht an uns:</strong><br />
         <br />
         <form method="post" action="../Scripts/formmailer.php">
           Name: 
           <label>
             <input name="name" type="text" class="textfeld" id="name" />
             <br />
             <br />
             Telefon Nr.: 
             <input name="telefon" type="text" class="textfeld" id="telefon" />
             <br />
             <br />
             <br />
             <textarea name="nachricht" cols="50" rows="4" class="textfeld" id="nachricht"></textarea>
<br />
             <br />
             <br />
             <input type="submit" value="Senden" />
<br />
             <br />
           </label>
         </form>
       </div>

So sieht das Script aus:

PHP:
 <?php
 $empfaenger = "info@ich.de";
 $betreff = "Nachricht vom Formmailer";
 $mailtext = "Name: $name
 Telefon: $telefon
 Mitteilung: $nachricht";
 if(empty($name) || empty($telefon) || empty($nachricht))
 {
 header("Location: fehler.html");
 }
 else
 {
 mail("$empfaenger", "$betreff", "$mailtext", "From: $formmailer@meineseite.de");
 header("Location: danke.html");
 }
 ?>
 
Was passiert denn, wenn du das Skript zu benutzen versuchst?
 
Es scheitert an der Übergabe der Daten (Name, Telefonnummer, Text) vom HTML-Formular zum Script.

Wenn ich die "if empty" option raus nehme kommt eine Email an. Diese allerdings ohne die Formulareinträge.
 
Hi,

ich bin ein totaler Anfänger was PHP angeht, aber heißt es im PHP-Script nicht

if (empty $_POST('name') usw.?

Ich meine dieses $_POST fehlt aber wie gesagt, bin totaler Anfänger.

Und statt den empty-Befehl kannst Du glaube ich auch schreiben

if ($_POST('name') == "" )
 
Zuletzt bearbeitet von einem Moderator:
Hi,

Du solltest die Daten vom Formular schon ans skript übergeben. Schau dir mal die _POST variablen an.
 
Hallo,

Ich würde auch darauf tippen, dass es mit dem $_POST['name des input feldes'] zu tun hat. Du benutzt in Deinem Skript eine veraltete Schreibweise, die unsicher und somit zum Glück mittlerweile deaktiviert ist. "Früher" konnte man das so schreiben, aber man sollte schon die sicherere $_POST Variante benutzen.

LG
GreenGene
 
Zuletzt bearbeitet:
Das bedeutet genau?!

P.S. Ich bin zwar lernfähig, beschäftige mich aber erst seit heute morgen mit der Materie.
 
Bas-t! schrieb:
Das bedeutet genau?!

P.S. Ich bin zwar lernfähig, beschäftige mich aber erst seit heute morgen mit der Materie.

zu Beginn deines scriptes vollgendes einfügen:

$name=$_POST['name'];
$telefon=$_POST['telefon'];
$nachricht=$_POST['nachricht'];

versuchs mal damit, dann sollten die Werte auch in den Variablen sein.
 
Ja genau oder einfach direkt die $_POST['name'], $_POST['telefon'], $_POST['nachricht'] Variablen benutzen. $_POST ist ein so genanntes globales array. Das bedeutet es ist eine Variable, die mehrere Variablen enthält und im kompletten Skript verfügbar ist.
Hier nochmal der Link zum register globals eintrag im php Manual: http://php.net/manual/de/security.globals.php
 
Vielen Dank erstmal.

Die Vorlage an die ich mich gehalten habe scheint tatsächlich sehr veraltet zu sein. Habe es mit den Variabelen schon mal hinbekommen und werde mich weiter einlesen.

Nochmal Danke an alle!
 
Zurück
Oben