Brauche formmailer mit Dateiversendung

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

  • Brauche formmailer mit Dateiversendung

    .
    Angehängte Dateien
    Zuletzt geändert von syrefast; 01.11.2009, 09:45.

  • #2
    Hi.

    Hab jetzt mal schnell die Formular Überprüfung mit JavaScript fertig gemacht und noch 2-3 kleine Fehler behoben. PHP übernimmt die Eingabewerte auch schon und "filtert" evtl. "bösen Code" schon mal raus:

    PHP-Code:
    <html>
    <head>
    <script type="text/javascript">

    function checkForm() {

      var strFehler='';

      if (document.forms[0].Vorname.value=="")
        strFehler += "Feld 'Vorname' ist leer\n";
      if (document.forms[0].Name.value=="")
        strFehler += "Feld 'Nachname' ist leer\n";
      if (document.forms[0].Adresse.value=="")
        strFehler += "Feld 'Adresse' ist leer\n";
      if (document.forms[0].PLZ.value=="")
        strFehler += "Feld 'PLZ' ist leer\n";
      if (document.forms[0].Ort.value=="")
        strFehler += "Feld 'Ort' ist leer\n";
      if (document.forms[0].Land.value=="")
        strFehler += "Feld 'Land' ist leer\n";
      if (document.forms[0].email.value=="")
        strFehler += "Feld 'EMail' ist leer\n";
      if (document.forms[0].Monat.value=="")
        strFehler += "Feld 'Monat' ist leer\n";
      if (document.forms[0].Jahr.value=="")
        strFehler += "Feld 'Jahr' ist leer\n";
      if(isNaN(document.forms[0].PLZ.value) == true)
        strFehler += "Bitte nur Zahlen in dem Feld PLZ eingeben\n";
      if (document.forms[0].URL.value=="")
        strFehler += "Feld 'URL' ist leer\n";
      if (document.forms[0].Beschreibung.value=="")
        strFehler += "Feld 'Beschreibung' ist leer\n";
      if (document.forms[0].NB.checked==false)
        strFehler += "Feld 'Nutzungsbedingungen' wurde nicht angeklickt\n";
      if (document.forms[0].Datenschutz.checked==false)
        strFehler += "Feld 'Datenschutz' wurde nicht angeklickt\n";
      if (document.forms[0].SB.checked==false)
        strFehler += "Feld 'Bedingungen bestätigen' wurde nicht angeklickt\n";
      if (!validEmail(document.forms[0].email.value)) {
        strFehler += "Es wurde eine ungültige E-Mail Adresse eingegeben!\n";
      }

      if (strFehler.length>0) {
        alert("Festgestellte Probleme: \n\n"+strFehler);
        return(false);
      }

    function validEmail(email) {
      var strReg = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
      var regex = new RegExp(strReg);
      return(regex.test(email));
    }
    }
    </script>
    </head>

    <?php
    //Formular wurde abgeschickt
    if (isset($_POST["submit"])){

    //SQL Injection vorbeugen
    function clean($str) {
        
    $str = @trim($str);
        if(
    get_magic_quotes_gpc()) {
            
    $str stripslashes($str);
        }
        return 
    mysql_real_escape_string($str);
    }

    //Eingabewerte übernehmen
    $_anrede clean($_POST["Anrede"]);
    $_vorname clean($_POST["Vorname"]);
    $_name clean($_POST["Name"]);
    $_firma clean($_POST["Firma"]);
    $_adresse clean($_POST["Adresse"]);
    $_plzort clean($_POST["PLZ"]);
    $_land clean($_POST["Land"]);
    $_email clean($_POST["email"]);
    $_monat clean($_POST["Monat"]);
    $_jahr clean($_POST["Jahr"]);
    $_url clean($_POST["URL"]);
    $_beschreibung clean($_POST["Beschreibung"]);

    //hier muss noch  email versand + erfolgsmeldung rein
    //....

    }
    ?>

    <body>
    <b>Pers&ouml;nliche Angaben</b>
    <p>
    <form action="<?php echo $PHP_SELF?>" onsubmit="return checkForm()" enctype="multipart/form-data" method="post">

    <table cellspacing="0">
    <tr>
    <td class="td-antrag">Anrede:*</td><td class="td-antrag">
    <select name="Anrede" class="anrede">
    <option></option>
    <option>Frau</option>
    <option>Herr</option>
    </select></td></tr>
    <tr>
    <td class="td-antrag" width="130">Vorname:*</td><td class="td-antrag"><input name="Vorname" type="text" id="Vorname" maxlength="100" class="text"></td></tr>
    <tr>
    <td class="td-antrag">Name:*</td><td class="td-antrag"><input name="Name" type="text" id="Name" maxlength="100" class="text"></td></tr>

    <tr>
    <td class="td-antrag">Firma:</td><td class="td-antrag"><input name="Firma" type="text" id="Firma" maxlength="100" class="text"></td></tr>
    <tr>
    <td class="td-antrag">Adresse:*</td><td class="td-antrag"><input name="Adresse" type="text" id="Adresse" maxlength="100" class="text"></td></tr>
    <tr>
    <td class="td-antrag">PLZ, Ort:*</td><td class="td-antrag"><input name="PLZ" type="text" id="PLZ" maxlength="5" class="plz">,&nbsp;
    <input name="Ort" type="text" id="Ort" maxlength="100" class="ort"></td></tr>
    <tr>
    <td class="td-antrag">Land:*</td><td class="td-antrag">
    <select name="Land" class="land">
    <option></option>
    <option>Deutschland</option>

    <option>&Ouml;sterreich</option>
    <option>Schweiz</option>
    </select></td></tr>
    <tr>
    <td class="td-antrag">e-mail:*</td><td class="td-antrag"><input name="email" type="text" id="e-mail" maxlength="100" class="text"></td></tr>
    <tr>
    </table>
    <p>
    <b>Optionen</b>
    <p>
    <input type="checkbox" name="SB" id="SB" class="checkbox" checked>&nbsp;Hiermit best&auml;tige ich, die Bedingungen zu erf&uuml;llen.

    <p>
    <table cellspacing="0">
    <tr>
    <td class="td-antrag" width="130">Monat, Jahr*</td><td class="td-antrag">
    <select name="Monat" class="monat">
    <option></option>
    <option>Januar</option>
    <option>Februar</option>
    <option>M&auml;rz</option>
    <option>April</option>
    <option>Mai</option>

    <option>Juni</option>
    <option>Juli</option>
    <option>August</option>
    <option>September</option>
    <option>Oktober</option>
    <option>November</option>
    <option>Dezember</option>
    </select>
    <select name="Jahr" class="jahr">
    <option></option>

    <option>2009</option>
    <option>2010</option>
    <option>2011</option>
    <option>2012</option>
    <option>2013</option>
    <option>2014</option>
    <option>2015</option>
    <option>2016</option>
    <option>2017</option>

    <option>2018</option>
    <option>2019</option>
    <option>2020</option>
    <option>2021</option>
    <option>2022</option>
    <option>2023</option>
    <option>2024</option>
    <option>2025</option>
    <option>2026</option>

    <option>2027</option>
    <option>2028</option>
    <option>2029</option>
    <option>2030</option>
    <option>2031</option>
    <option>2032</option>
    <option>2033</option>
    <option>2034</option>
    <option>2035</option>
    <option>2036</option>
    <option>2037</option>
    <option>2038</option>
    <option>2039</option>
    <option>2040</option>
    <option>2041</option>
    <option>2042</option>
    <option>2043</option>
    <option>2044</option>

    </select></td></tr>
    <tr>
    <td class="td-antrag">URL:*</td><td class="td-antrag"><input name="URL" type="text" id="URL" class="text"></td></tr>
    <tr>
    <td class="td-antrag">Beschreibung:*</td><td class="td-antrag"><input name="Beschreibung" type="text" id="Beschreibung" class="text"></td></tr>
    <tr>
    <td class="td-antrag">Grafik:*</td><td class="td-antrag"><input name="probe" type="file" id="probe" class="file"></td></tr>
    </table>
    <p>
    <b>Nutzungsbedingungen</b>
    <p>
    <input type="checkbox" name="NB" id="NB" class="checkbox" checked>&nbsp;
    Hiermit best&auml;tige ich, die 
    <a href="nb.html">Nutzungsbedingungen</a> gelesen zu haben und damit einverstanden zu sein!

    <p>
    <b>Datenschutzbedingungen</b>
    <p>
    <input type="checkbox" name="Datenschutz" id="Datenschutz" class="checkbox" checked>&nbsp;
    Hiermit erkl&auml;re ich mich mit den 
    <a href="datenschutz.html">Datenschutzbedingungen</a> einverstanden.
    <p>
    <input type="submit" name="submit" value="Senden" class="button">&nbsp;<input type="reset" value="Zur&uuml;cksetzen" class="button">
    </form>

    </body>
    </html>
    Was genau soll jetzt an Dich versand werden? Nachdem versenden noch eine Erfolgsmeldung? Wo sollen die Upload Files hingepackt werden (welcher Ordner) oder mitgesendet werden?
    Datei musste mit der Endung .php abspeichern und dann sollte das oben erwähnte schon gehen. Rest ist etwas aufwändiger. Hast du keinerlei Programmiererfahrung etc.?

    mfg streuner
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

    Kommentar


    • #3
      .
      Zuletzt geändert von syrefast; 13.09.2009, 13:58.

      Kommentar


      • #4
        Hallo,

        die Funktion clean macht in dieser Form nur Sinn, wenn man die Daten in eine MySQL-Datenbank übernehmen will. Da du sie per E-Mail versenden willst, kannst du sie für Nur-Text-Mails so umschreiben:
        PHP-Code:
        function clean($str) {
            
        $str = @trim($str);
            if(
        get_magic_quotes_gpc()) {
                
        $str stripslashes($str);
            }
            return 
        $str;

        Wenn du später auf HTML-Mails umsteigen willst, solltest du sie so verwenden:
        PHP-Code:
        function clean($str) {
            
        $str = @trim($str);
            if(
        get_magic_quotes_gpc()) {
                
        $str stripslashes($str);
            }
            return 
        htmlspecialchars($str);

        Gruß,

        Anja
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Hast recht Anja...hab das aus meinem meiner Skripte übernommen und nicht bedacht*aschaufmeinhaupt*!
          Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
          der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

          "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

          Kommentar


          • #6
            Hier nochmal ein link, wie man z.B. eine Mail mit Anhang verschicken kann:

            Mails mit Anhang verschicken in PHP | Webmaster Resource

            Bei Fragen und/oder Problemen nochmal melden.

            mfg streuner
            Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
            der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

            "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

            Kommentar


            • #7
              Php5

              Hallo

              Du hattes mir einen Link gesendet, wo ich nachlesen kann,
              wie man mails mit Anhang senden kann.
              Aber leider steht da, daß dies nicht mehr mit PHP 5 geht.
              Mein Webspace benutzt PHP 5.
              Was ist da der Unterschied?

              Es sollen nur *gif/*jpg/*png-Dateien mit dem Formular mitgeschickt werden können.
              Ichhabe auch gelesen, daß man diese beiden Bereiche (text/datei) trennen muß.


              Grüße


              Syrefast

              Kommentar


              • #8
                Unterschied zwischen PHP 5 und PHP 4 wird hier gut erklärt (Englisch):

                PHP: Migrating from PHP 4 to PHP 5.0.x - Manual

                hier ein Tutorial, wie man so ein Kontaktformular mit Mailanhang realisieren kann:

                Emails mit PHP senden - HTML Email - Email mit Anhang
                PHP-Grundlagen / E-Mail mit Anhang versenden - Homepage-Total.de

                das müsste alle deine Fragen beantworten.

                mfg streuner
                Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
                der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

                "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

                Kommentar

                Lädt...
                X