formailer
chillerpat
- php
0 Tom0 Matthias Apsel
0 chillerpat0 Matthias Apsel
0 Tom
Hallo Leute suche eine Lösungung zu diesem Formmailer:
http://aktuell.de.selfhtml.org/artikel/php/form-mail/
Habe ein Javascript mit eingebaut und durch den PHP teil des Formmailer wird das Javascript komplett ausgeblendet...
Meine Code sieht so aus:
<?php
/**
* Konfiguration
*
* Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!
*
* Das Skript bitte in UTF-8 abspeichern (ohne BOM).
*/
// An welche Adresse sollen die Mails gesendet werden?
$zieladresse = 'info@123.de';
// Welche Adresse soll als Absender angegeben werden?
// (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$absenderadresse = 'formmailer@123.de';
// Welcher Absendername soll verwendet werden?
$absendername = 'Formmailer';
// Welchen Betreff sollen die Mails erhalten?
$betreff = 'Feedback';
// Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
// Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$urlDankeSeite = '../kontakt/danke.php';
// Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$trenner = ":\t"; // Doppelpunkt + Tabulator
/**
* Ende Konfiguration
*/
if ($_SERVER['REQUEST_METHOD'] === "POST") {
$header = array();
$header[] = "From: ".mb\_encode\_mimeheader($absendername, "utf-8", "Q")." <".$absenderadresse.">";
$header[] = "MIME-Version: 1.0";
$header[] = "Content-type: text/plain; charset=utf-8";
$header[] = "Content-transfer-encoding: 8bit";
$mailtext = "";
foreach ($_POST as $name => $wert) {
if (is_array($wert)) {
foreach ($wert as $einzelwert) {
$mailtext .= $name.$trenner.$einzelwert."\n";
}
} else {
$mailtext .= $name.$trenner.$wert."\n";
}
}
mail(
$zieladresse,
mb_encode_mimeheader($betreff, "utf-8", "Q"),
$mailtext,
implode("\n", $header)
) or die("Die Mail konnte nicht versendet werden.");
header("Location: $urlDankeSeite");
exit;
}
header("Content-type: text/html; charset=utf-8");
?>
<script type="text/javascript">
function chkFormular()
{
if(document.Formular.firstname.value == "") {
alert("Bitte geben sie ihren Vornamen ein!");
document.Formular.firstname.focus();
return false;
}
if(document.Formular.lastname.value == "") {
alert("Bitte geben sie ihren Nachnamen ein!");
document.Formular.lastname.focus();
return false;
}
if(document.Formular.email.value == "") {
alert("Bitte Ihre E-Mail-Adresse eingeben!");
document.Formular.email.focus();
return false;
}
if(document.Formular.email.value.indexOf('@') == -1){
alert("Keine E-Mail-Adresse!");
document.Formular.email.focus();
return false;
}
if(document.Formular.pwd1.value == "") {
alert("Bitte geben sie ein Passwort ein!");
document.Formular.pwd1.focus();
return false;
}
if(document.Formular.pwd1.value.length < 4) {
alert("Bitte geben sie ein Passwort mit mindestens 4 Zeichen ein!")
document.Formular.pwd1.focus();
return false;
}
if(document.Formular.pwd1.value != document.Formular.pwd2.value) {
alert("Die von ihnen eingegebenen Passwörter sind nciht identisch!");
document.Formular.pwd1.focus();
return false;
}
} </script>
<form name="Formular" action="http://aktuell.de.selfhtml.org/cgi-bin/formview.pl" method="post" onSubmit="return chkFormular()">
<pre>
Vor/Nachname: <input type="text" size="40" name="firstname">
Straße: <input type="text" size="40" name="lastname">
PLZ/Ort: <input type="text" size="40" name="email">
E-Mailadresse: <input type="text" size="40" name="pwd1">
Bitte wiederholen sie das von Ihnen eingegebene E-Mailadresse!
E-Mailadresse: <input type="text" size="40" name="pwd2">
<input type="submit" value="Absenden"><input type="reset" value="Abbrechen">
</pre>
</form>
Meine frage jetzt...
Wie schreibe ich den PHP Script teil um das ich eine Dankeseite habe aber auch das der Javascriptteil funktioniert... und der Inhalt des eingegebenen Formular per E-Mail übermittelt wird.
Zum jetzigen Stand funktioniert das Formular mit PHP teil nicht bzw das JS nicht möchte aber das dies funktioniert.
Hoffe Ihr könnt mir helfen...
Grüßle
Hello,
ich würde damit anfangen, aus diesen Schnipseln eine valide HTML-Seite zu bauen.
Lass dazu den PHP-Teil erstmal weg. Den kannst Du dann immer noch einfügen, bzw. _zum__Testen_ ein zweites Dokument daraus machen.
Und dann wäre es auch sinnvoll, den PHP-Parser anzusprechen, und nicht due Perl-Maschine
so nicht:
action="http://aktuell.de.selfhtml.org/cgi-bin/formview.pl"
sondern z.B. so (beim "Affenformular"):
action="<?php echo $_SERVER['SCRIPT_NAME']; ?>"
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Om nah hoo pez nyeetz, chillerpat!
Hallo Leute suche eine Lösungung zu diesem Formmailer:
Verweise und Code-Beispiele lassen sich als solche auszeichnen, das macht die Sache einfacher ;-)
Verwende die aktuellere Version.
Verzichte auf das JavaScript. Aktuelle Browser bringen die gewünschte Funktionalität mit. (required)
Matthias
Danke für eure antworten,...
Also mein Formmailer Funktioniert jetzt...
Jetzt wolllte ich noch fragen ob jemand weis wie ich es verhindere das man auf der Danke seite die zurück taste des browsers benützt... Habe da was gelessen mit session ...
http://www.php.de/php-tipps-2005/19665-zurueck-funktion-verhindern.html
16.03.2005 - 12:06
<?php
if (!isset($_SESSION['filmende']))
$_SESSION['filmende'] = filmende_generieren();
}
zeige_film($_SESSION['filmende']);
?>
Aber wie funktioniert des dann direkt muss ich da auch schon was mit einbauen oder erst auf er danke seite...
Und was muss da als filmende stehen/filmende generieren muss da dann formmailer senden und danke seite oder wie geht das dann?!
Danke im voraus
Pat
Om nah hoo pez nyeetz, chillerpat!
Hallo Leute suche eine Lösungung zu diesem Formmailer:
Verweise und Code-Beispiele lassen sich als solche auszeichnen, das macht die Sache einfacher ;-)
Verwende die aktuellere Version.
Verzichte auf das JavaScript. Aktuelle Browser bringen die gewünschte Funktionalität mit. (required)
Matthias
Om nah hoo pez nyeetz, chillerpat!
Warum beachtest du nicht, was ich dir schrieb?
- Verweise und Code-Beispiele lassen sich als solche auszeichnen, das macht die Sache einfacher
Vermeide auch Vollzitate, sie stören nur beim Lesen. Zitiere selektiv nur das, worauf du dich gerade konkret beziehst. Danke.
Jetzt wolllte ich noch fragen ob jemand weis wie ich es verhindere das man auf der Danke seite die zurück taste des browsers benützt... Habe da was gelessen mit session ...
Ein wenig sorgfältiger sollte man mit der Rechtschreibung schon umgehen. Auch das ist ein Zeichen der Wertschätzung den Antwortern gegenüber, Alter ey ;-)
Du könntest diesen Artikel lesen und dabei diesen archivierten Thread beachten.
Matthias
Hello,
Danke für eure antworten,...
Also mein Formmailer Funktioniert jetzt...
Können wir es sehen?
Jetzt wolllte ich noch fragen ob jemand weis wie ich es verhindere das man auf der Danke seite die zurück taste des browsers benützt... Habe da was gelessen mit session ...
Eine Session zu benutzen, vereinfacht das Ganze:
Wenn Du Dein Formular als "Affenformular" aufgebaut hast, also den Server prüfen solange prüfen lässt, ob die Daten akzetabel sind, dann sit eine Session ohnehin praktisch.
Trag die Daten in die Session ein. Wähle dafür einen sinnvollen Pfad, der Kollisionen mit anderen Scriptteilen ausschließt. Bewährt hat sich:
$_SESSION['form'][$formname]['data'][$input]['value'] = $wert_aus_$_[POST]['data'][$input];
Und dann sendest Du bei der Antwort einen Location-Header, z.B. so:
header('HTTP/1.1 303 See Other');
header("Location: http://example.org/$modulname/?commit");
Dein Scriopt erkennt anhand der Parameter, was es tun soll: antworten,
Nun kannst Du nach den Daten aus der Session gucken:
if (isset($_SESSION['form'][$formname]['data']))
{
## Daten aus der Session ins Antwort-Template einstanzen
unset($_SESSION['form']);
## gefülltes Template ausgeben
}
else
{
## Fehlerbehandlung
}
So wird die Antwort vom Server mit einem GET-Request abgeholt.
Die Session wird bei Antwort wieder "gereinigt".
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg