chillerpat: formailer

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&ouml;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&szlig;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

  1. 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

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bikers-lodge.com
  2. 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

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Apfel und Apfelsine.

    1. 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

      1. 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

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Mark und Markise.

      2. 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

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bikers-lodge.com