Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Formular Absender und Betreff

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Formular Absender und Betreff

    Guten Tag
    Habe auf der Seite von www-coding.de ein php script für ein Formular mit capcha gefunden. Konnte auch schon ein paar Details an meine Bedürfnisse anpassen. Nun versuche ich schon seit Stunden zwei weitere Details zu lösen, leider ohne Erfolg. Ich wäre happy, wenn mir jemand helfen könnte.
    Mein Problem:
    1. Wie schaffe ich es, damit im Kopf des erzeugten Mails die E-Mail-Adresse" und der "Betreff" steht?
    2. Wie erreicht man, dass nach dem Wort "Meldung:" ein Zeilenumbruch erzeugt wird?

    Und noch etwas ist es möglich, dass im Text des Mails nach einer bestimmten Breite ein Zeilenumbruch erzeugt wird, keine Schlangensätze?

    Nachfolgend der Code:

    PHP-Code:
    <?php
        
    /* DIESEN CODE AN OBERSTER STELLE BELASSEN */
        
    header('Content-Type: text/html; charset=utf-8'); /* WENN DU KEIN UTF-8 NUTZT, KANNST DU (NUR) DIESE ZEILE LOESCHEN! */
        
    session_start();
    ?>
    <style type="text/css">
    /* <![CDATA[ */
    h1 {
        font-family: Arial, Helvetica, Sans-Serif;
        font-size: 12pt;
        }
    p {
        font-family: Arial, Helvetica, Sans-Serif;
        font-size: 9pt;
    }
    td {
        font-family: Arial, Helvetica, Sans-Serif;
        font-size: 10pt;
    }
    /* ]] */
    </style>

    <body background="Hintergrund.jpg"; no-repeat;>

    <?php

        $adminMail 
    'DEINEMAIL@DEINSERVER.ENDUNG';
        
        
    $formTitle 'Kontaktformular Webmaster';
        
    $msgInfo 'Mit * gekennzeichnete Felder sind Pflichtfelder.';
        
    $msgError 'Es ist ein Fehler aufgetreten: Es wurden nicht alle Felder korrekt ausgef&uuml;llt.';
        
    $msgSent 'Deine Anfrage wurde erfolgreich verschickt.';
        
    $captchaPath 'captcha/captcha.php';
        
        
    $fields = array    (
                        
    //  'Feldname'            =>    Typ, Pflichtfeld?, Ergänzungen (z.B. bei select-Feld)
                            
    'Vorname'             => array('text'true),
                            
    'Nachname'            => array('text'true),
                            
    'E-Mail-Adresse'    => array('text'true),
                            
    'Betreff'             => array('text'true),
                            
    'Mitteilung'         => array('textarea'true),
                        );
        
        
    /* Funktion um aus den Feldnamen eine URL-Form zu erstellen (AB HIER BITTE NUR NOCH EVENTUELLE TEXTE ANPASSEN) */
        
    function field2url($fieldname) {
            return 
    "f_".preg_replace('/([^a-z0-9-_]+)/'''strtolower($fieldname));
        }
        
        
    /* Ausgabe des Formulars  */
        
    if (isset($_POST['send']) && isset($_POST['captcha_code']) && isset($_POST['email'])) {
            
    // 2. Eingaben pruefen //
            
            
    $mailSubject 'Nachricht Kontaktformular';
            
    $mailText "Nachricht vom Kontaktformular Webmaster.\r\n\r\n";
            
    $mailHeader "From: info@".$_SERVER['HTTP_HOST']."\r\n"."Content-type: text/plain; charset=utf-8"."\r\n";
            
            
    // Einzelne Felder auslesen //
            
    foreach ($fields AS $name => $settings) {
                if ( !( !
    $settings[1] || ( $settings[1] && isset($_POST[field2url($name)]) && $_POST[field2url($name)] != '' ) ) ) {
                    
    // Pflichtfeld nicht ausgefüllt => Abbruch //
                    
    $sent false;
                    break;
                } else if (
    $_POST[field2url($name)] != '') {
                    
    // Inhalt (wenn nicht leer) in die E-Mail schreiben //
                    
    $mailText .= $name.": ".$_POST[field2url($name)]."\r\n";
                }
            }
            
            
    // Kurzer Spam-Check inkl. Captcha-Check //
            
    if ($_POST['captcha_code'] != $_SESSION['captcha_spam'] || $_POST['email'] != '') {
                
    // Bot => Abbruch //
                
    $sent false;
            }
            
            if (!isset(
    $sent)) {
                
    // Nach erfolgreicher Ueberprüfung E-Mail verschicken //            
                
    mail($adminMail$mailSubject$mailText$mailHeader);
                
                echo 
    "<h1>".$formTitle."</h1>" .
                        
    "<p>".$msgSent."</p>";
                
                
    $sent true;
            }
        } else
            
    $sent false;

        if (!
    $sent) {
            
    // 3. Formular ausgeben (Beginn des Formulars) //
            
    echo "<h1>".$formTitle."</h1>" .
                    
    "<p>".$msgInfo."</p>" .
                    ((isset(
    $_POST['send'])) ? $msgError '') .
                    
    "<form action=\"?".$_SERVER['QUERY_STRING']."\" method=\"POST\">" .
                        
    '<table>';
                    
            
    // Felder auslesen //
            
    foreach ($fields AS $name => $settings) {
                
    // Ausgabe je nach Typ //
                
    switch ($settings[0]) {
                    case 
    'select':
                        
    // Select-Feld //
                        
    echo "<tr><td>".$name.":".(($settings[1]) ? ' (*)' '')."</td><td><select name=\"".field2url($name)."\">";
                        
                        
    // Select-Felder auslesen //
                        
    foreach ($settings[2] AS $f) {
                            echo 
    "<option".((isset($_POST[field2url($name)]) && $_POST[field2url($name)] == $f) ? ' selected' '').">".$f."</option>";
                        }
                        
                        
    // Ende des Select-Feldes //
                        
    echo '</select></td></tr>';
                    break;
                    
                    case 
    'text':
                        
    // Einfaches Text-Feld //
                        
    echo "<tr><td>".$name.":".(($settings[1]) ? ' (*)' '')."</td><td><input type=\"text\" name=\"".field2url($name)."\" value=\"".((isset($_POST[field2url($name)])) ? htmlspecialchars($_POST[field2url($name)]) : '')."\" /></td></tr>";
                    break;
                    
                    case 
    'textarea':
                        
    // Mehrzeiliges Textfeld //
                        
    echo "<tr><td>".$name.":".(($settings[1]) ? ' (*)' '')."</td><td><textarea name=\"".field2url($name)."\"cols=30 rows=6>".((isset($_POST[field2url($name)])) ? htmlspecialchars($_POST[field2url($name)]) : '')."</textarea></td></tr>";
                    break;
                }
            }
            
            
    // Formular-Ausgabe abschliessen und Captcha einbinden //
            
    echo            "<tr><td>Spam-Schutz: (*)</td><td><img src=\"".$captchaPath."\" alt=\"Captcha\" width=177 height=40 /><br /><input type=\"text\" name=\"captcha_code\" size=9 maxlength=5 /></td></tr>" .
                        
    '</table>' .
                        
    '<input type="text" name="email" style="display:none;" />' .
                        
    '<input type="hidden" name="send" value=1 />' .
                        
    '<input type="submit" value="Formular abschicken" />'.
                    
    '</form>';
        }
        
        
    ?>
    Besten Dank für eure Hilfe

    Gruss Ebro


  • #2
    Verwende zum Mail versenden am besten eine Mailerklasse, da kannst du alle üblichen Zeichen verwenden und/oder auch für HTML-Mails etc. verwenden: http://php-de.github.io/jumpto/mail-class/ (Ausser du willst selbst gerne alle RFCs ausprogrammieren ).

    Und die üblichen Captchas sollte man am besten gar nicht verwenden, siehe:

    http://www.1ngo.de/web/captcha-spam.html

    http://www.shiftedwork.de/blog/2010/...-aber-richtig/

    Eine Klasse dazu - vom Forenuser jspit hier: http://jspit.de/?page=antibot

    LG
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Hallo hausel
      Danke für deine schnelle Antwort. Werde mir das noch etwa genauer anschauen, da ich aber noch blutiger Anfänger bin, werde ich noch etwas Zeit benötigen. Habe da sicher noch die eine oder andere Frage haben.

      Gruß ebro

      Kommentar


      • #4
        Hallo und guten Tag
        Habe nun im Netz ein Script für ein Formular ohne captch gefunden, welches einigermassen sicher vor Spam sein soll.

        Nun habe ich aber noch folgendes Problem:
        Auf der Bestätigungsseite möchte ich einen Link setzen, womit man das Formular neu (leer) anzeigen kann.

        Habe es folgendermassen versucht:
        PHP-Code:
           // Mail schicken
           
        @mail($empfaenger,$betreff,$nachricht,'From: '.$absender)
           or die (
        "<p><a href='javascript:history.back()'>Fehler: Daten konnten nicht gesendet werden.</a></p></body></html>");
           echo 
        "<p>Deine Angaben wurden erfolgreich versendet.<br />Vielen Dank.</p><br /><p><a href="kontakt.php" target="textframe1">zurück</a></p>"
        funktioniert leider nicht! Wie macht man das korrekt?

        Besten Dank für eure Hilfe.

        Gruss Ebro

        Kommentar


        • #5
          zum Mail: Das ist murks, mach es nicht so! -> http://php-de.github.io/jumpto/mail-class/

          zum Link: http://wiki.selfhtml.org/wiki/HTML/Textauszeichnung/a

          LG
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Hallo hausl
            Habe das nun so gelöst:
            PHP-Code:
               // Mail schicken
               
            @mail($empfaenger,$betreff,$nachricht,'From: '.$absender)
               or die (
            "<p><a href='javascript:history.back()'>Fehler: Daten konnten nicht gesendet werden.</a></p></body></html>");
               echo 
            "<p id='best'>Deine Angaben wurden erfolgreich versendet.<br />Vielen Dank.</p><br />" "<p id='best'><a href='kontakt.php'>zurück</a></p>"
            Weiss nicht ob das murks ist, aber es funktioniert jedenfalls.

            Danke für deine Bemühungen.

            Gruss Ebro

            Kommentar

            Lädt...
            X