PHP.net sagt:
Das heisst, header() muss am Anfang stehen, der darauffolgende Code wird nicht ausgeführt.Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.
BTW sind auch einige Variablen nicht definiert.
Anbieten würde sich eine Weiterleitung mit JS oder Meta-HTML![]()
Ergebnis 1 bis 10 von 13
- 12.03.2010, 21:04 #1Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
PHP Formmailer
Hallo ihr lieben!
Ich habe ein Problem mit meinem PHP Formmailer.
Wahrscheinlich ist es wieder eine der typischen Nichtigkeiten, die man vermeiden kann,
doch irgendwie stehe ich grad auf dem Schlauch und wäre glücklich, wenn mal einer von euch einen Blick drauf werfen würde:
Jetzt frage ich mir nur, warum bei mir keine Mails ankommen, die den versprochenen Inhalt haben.Code:<?php $betreff = "Betreff"; $to = "meine e-mail adresse"; $inhalt = "Name: $1name $2name\n $country\nBetrag min.: $ammin\nBetrag max.: $ammax\nNachricht: $message"; mail ("$to", "$betreff", "$inhalt"); header("location: http://www.google.de"); ?>
Google.de wird irgendeine Adresse. Was da hinkommt weiß ich noch nicht.
Die zweite Frage, die ich gleich anschließen könnte:
Kann ich einen Text einrichten, der einfach 3 Sekunden lang angezeigt wird und erst DANN die Weiterleitung greift?
Vielen Dank für jegliche Hilfe.Mini-Leo
You can only take what you can carry.
- 12.03.2010, 21:37 #2RTFM. Google. Apfeltalk.
- 13.03.2010, 15:23 #3
Hallo.
mit dem Header hat das nichts zu tun - die Funktion header():void darf nur dann aufgerufen werden wenn vorher kein Output produziert wurde (kein echo/print oder HTML-Code ausgegeben wurde).
Auf welchem Server wird das Script ausgeführt? Was liefert ein einfaches Testmail? Kommt es an?
Code:$ret = mail('your.email@foo.com', 'testmail', 'testmessage'); var_dump($ret);
- 13.03.2010, 18:08 #4Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Hey Leute!
Ich habs jetzt!
Mir ist grad einfach einwahnsinnig blöder Fehler aufgefallen.
Ich hab lediglich eine Variable versehentlich überschrieben :|
Habe aber jetzt ein neues Problem.
Ich bekomme zwar eine e-mail vom Server. Allerdings ist diese leider leer.
Sprich ich bekomme den Inhalt nicht definiert.
Wenn ich den Code umschreibe, also:Code:<?php $betreff = "Anmeldung"; $inhalt = ("Name: " & "$1name" & " " & "$2name" & "\n " & "$country" & "\nBetrag min.: " & "$ammin" & "\nBetrag max.: " & "$ammax" & "\nNachricht: " & "$message"); mail ("[meine mail]", "$betreff", "$inhalt"); echo "Vielen Dank für Deine Anmeldung!" ?>
dann bekomme ich zwar einen Inhalt in der Mail, allerdings nur die Namen der Variablen mit Dollar-Zeichen.Code:<?php $betreff = "Anmeldung"; $inhalt = ("Name: $1name $2name\n $country\n Betrag min.: $ammin\ nBetrag max.: $ammax\n Nachricht: $message"); mail ("[meine mail]", "$betreff", "$inhalt"); echo "Vielen Dank für Deine Anmeldung!" ?>
Irgendwie eigenartig, oder?!
Kann es sein, dass die Variablen nicht richtig vom Formular (HTML) befüllt werden?
Wie rufe ich denn die Variablen im PHP auf? Ich sehe nicht im geringsten, dass da der Inhalt irgendwie übergeben wird
Bei der zweiten Variante bekomme ich folgende Mail:
Name: $1name $2name
Betrag min.:
Betrag max.:
Nachricht:
Dankt für Hilfe.Geändert von Mini-Leopard (13.03.2010 um 18:29 Uhr)
Mini-Leo
You can only take what you can carry.
- 13.03.2010, 20:11 #5
Strings werden mit einem Punkt verknüpft (nicht mit & -> das wäre ein Bitweises 'AND').
Ausserdem ist es ein etwas eigenartiger Stil einzelne Variablen unter doppelte Hochkomma zu setzen. Der Inhalt wird zwar - anders als bei einfachen Hochkomma - übersetzt... naja...
noch angemerkt zum Stil: verwende stets eine Sprache für Kommentare und Variablen (vorzugsweise EN). Variablen dürfen ruhig auch "sprechend" sein.
der korrekte Code müsste ungefähr so aussehen:
Code:$message = "Name: " . $firstname . " " . $lasntame . "\nBetrag: " . $maxAmount;
- 13.03.2010, 23:06 #6Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Also die Schreibweise der Variablen ist ja mein Ding

Ich komme so echt gut klar.
Mit der zweiten Schreibweise geht das auch sehr gut:
Mein einziges Problem ist, dass in den Variablen scheibar nichts drin steht.
In meinem vorangegangenen Beitrag ist ja auch ein Zitat der e-mail, die ich vom Server bekomme.
Sprich die Aufbereitung der e-mail funktioniert ohne Probeme.
Kann ich irgendwie ein "Warnfenster" in Safari öffnen lassen, um den Inhalt der Variablen vor dem Absenden der Mail zu überprüfen? Ich glaube echt, dass die Variablen einfach leer sind bzw. das Formular (HTML) den Inhalt nicht übergibt!!!!
Dazu eine Anregung / einen Tipp?
Danke.Mini-Leo
You can only take what you can carry.
- 13.03.2010, 23:37 #7Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Ich poste jetzt einfach mal die beiden Dateien (formular.html & send.php).
formular.html:und send.php:Code:<!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=UTF-8" /> <title>Anmeldung</title> </head> <body> <br><form action="senden.php" method="post"> <table><tr> <td>Vorname:</td> <td><input type="text" name="1name"></td> </tr> <tr> <td>Nachname:</td> <td><input type="text" name="2name"></td> </tr> <tr> <td>E-Mail:</td> <td><input type="text" name="mail"></td> </tr> <tr> <td>Land:</td> <td><input type="text" name="country"></td> </tr> <td>Betrag min. (optional):</td> <td><input type="text" name="ammin"></td> </tr> <td>Betrag max. (optional):</td> <td><input type="text" name="ammax"></td> </tr> <td>Nachricht (optional):</td> <td><input type="text" name="message"></td> </tr> <td><input type="submit" name="senden" value="Apply!"></td> </form> <td></td> <td> </td> </tr> </table> </body> </html>
Code:<?php $betreff = "Anmeldung"; $inhalt = ("Name: $1name $2name\n $country\n Betrag min.: $ammin\ nBetrag max.: $ammax\n Nachricht: $message"); mail ("[meine mail]", "$betreff", "$inhalt"); echo "Vielen Dank für Deine Anmeldung!" ?>
Also wenn ich jetzt wirklich zu doof dafür bin, tu ich mir echt leid
Aber ich finde meinen Fehler einfach nicht, egal, was ich probiere
Mini-Leo
You can only take what you can carry.
- 14.03.2010, 06:58 #8
Was passiert wenn Du die Variablen mit $_POST['name_im_formular'] ansprichst? Und Teste dann doch die Ausgabe mit echo.
Dann sollte es funktionieren.
Torben
- 14.03.2010, 08:30 #9
Die Formulardaten werden je nach Methode (<form method="post|get">) in die globale PHP-Variable $_GET oder $_POST übertragen (für beide Methoden gibt es $_REQUEST). Mit var_dump($_POST) sollten alle Formulardaten (nachdem deine Form-Methode auf 'post' gestellt ist) angezeigt werden. Der Einzelzugriff erfolgt dann genau so wie torben1 es beschreibt.
- 14.03.2010, 10:21 #10Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Also gehe ich davon aus, dass ich jede einzelne Variable aus dem $_POST ausklammern und die jeweilige Variable befüllen muss.
Folgender Maßen:
und so weiter.Code:<?php $1name = $_POST["1name"]; $2name = $_POST["2name"]; $mail = $_POST["mail"];
Wenn ich das allerdings so mache, passiert gar nichts mehr.
Das Script bleibt einfach stehen und gut ist.Mini-Leo
You can only take what you can carry.


Zitieren



