Contact form with DB import

Gesperrt
Schertle
Beiträge: 55
Registriert: Fr 23. Apr 2004, 14:51

Contact form with DB import

Beitrag von Schertle » Di 25. Feb 2014, 10:41

Hallo wir nutzen ein Modul Kontaktformular anzeigen und eingegebene Daten per eMail verschicken
Author: Andreas Lindner
Version:1.0
Mit ein paar Anpassungen.
Es werden hier ein paar Sachen überprüft und wenn die Pflichtfelder nicht erfüllt sind, wird keine Email verschickt.
Leider ist es dann, aber auch so, dass wenn man dann zurück geht, alle vorherigen Eingaben wieder weg sind und man muss alles wieder neu eingeben.
Wie kann man das verhindern?

Schertle
Beiträge: 55
Registriert: Fr 23. Apr 2004, 14:51

Re: Contact form with DB import

Beitrag von Schertle » Di 25. Feb 2014, 10:52

Code: Alles auswählen

<?php
#Includes
cInclude("classes", "class.phpmailer.php");

#Datenbank
$host       = "CMS_VALUE[8]";
$dbuser     = "CMS_VALUE[9]";
$dbpasswort = "CMS_VALUE[10]";
$dbName     = "CMS_VALUE[11]";
$tabellenName   = "CMS_VALUE[12]";


if (!isset ($_POST['send'])) {
    #Form has not been sent yet
    cInclude('classes', 'class.article.php');
    cInclude('classes', 'class.template.php');

    #Create contact form
    echo '<div class="kontaktformular"/>';
    echo '<form name="kontaktform" id="kontaktform" method="post" action="'.$sess->url("front_content.php?idcat=$idcat&idart=$idart&parentid=$parentid").'">'."\n";
    echo '<input type="hidden" name="send" value="1">';

    if (!is_object($tpl)) {
        $tpl = new Template;
    }
    $tpl->set("s", "NACHNAME", mi18n("Name"));
    $tpl->set("s", "VORNAME", mi18n("Vorname"));
    $tpl->set("s", "STRASSE", mi18n("Strasse"));
    $tpl->set("s", "PLZ", mi18n("Plz"));
    $tpl->set("s", "ORT", mi18n("Ort"));
    $tpl->set("s", "TELEFON", mi18n("Telefon"));
    $tpl->set("s", "KUNDNR", mi18n("Kundnr"));
    $tpl->set("s", "FIRMA", mi18n("Firma"));
    $tpl->set("s", "EMAIL", mi18n("eMail"));
    $tpl->set("s", "LOGIN", mi18n("Login"));
    $tpl->set("s", "PASSWORT", mi18n("Passwort"));
    $tpl->set("s", "WIEDERHOLEN", mi18n("Wiederholen"));
    $tpl->set("s", "PFLICHTFELDER", mi18n("Pflichtfelder"));
    $tpl->set("s", "ABSCHICKEN", mi18n("Abschicken"));
    $tpl->set("s", "LOESCHEN", mi18n("Loeschen"));
    $tpl->set("s", "PFLICHFELDER", mi18n("Pflichtfelder"));
    $tpl->set("s", "UEBERSCHRIFT", mi18n("Ueberschrift"));

    $tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/registrierungsformular.html");
    echo '</form>';
    echo '</div>';
} elseif ($_POST['send'] == 1) {
    #Form has been sent

         $name = $_POST['Nachname'];
         $vorname = $_POST['Vorname'];
         $strasse = $_POST['Strasse'];
         $plz = $_POST['Plz'];
         $ort = $_POST['Ort'];
         $telefon = $_POST['Telefon'];
         $kundnr = $_POST['Kundnr'];
         $firma = $_POST['Firma'];
         $login = $_POST['Login'];
         $email = strtolower($_POST['EMail']);
         $passwort = $_POST['Passwort'];  
         $wiederholen = $_POST['Wiederholen'];      

         mysql_connect("$host","$dbuser","$dbpasswort") or die("Connect nicht möglich: ".mysql_error());
         $sql = "SELECT * from ".$tabellenName."";
         $result = mysql_query($sql) or die(mysql_error());
         $row = mysql_fetch_assoc($result);

         $sql2 = "SELECT * from ".$tabellenName." WHERE login = '$login' or email = '$email'";
         $result2 = mysql_query($sql2);
         $row2 = mysql_fetch_assoc($result2);

    #Check user input
    $noerrors = true;
    $msg = '';
   

         if( $login == $row2['login'] and $Login != '') {
                  $noerrors = false;
                  $msg .= mi18n("Login schon vorhanden!")."<br/>";
         }
         if(preg_match("/ä|ö|ü|Ä|Ü|Ö/", $login)) {
                  $noerrors = false;
                  $msg .= mi18n("Momentan sind Umlaute im Login nicht moeglich!")."<br/>";
         }
         if(preg_match("/ä|ö|ü|Ä|Ü|Ö/", $passwort)) {
                  $noerrors = false;
                  $msg .= mi18n("Momentan sind Umlaute im Passwort nicht moeglich!")."<br/>";
         }
         if( $email == $row2['email']) {
                  $noerrors = false;
                  $msg .= mi18n("Email schon vorhanden!")."<br/>";
         }
    if ($vorname == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihren Vornamen ein!")."<br/>";
    }
    if ($name == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihren Namen ein!")."'<br/>";
    }
    if ($EMail == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihre E-Mail-Adresse ein!")."<br/>";
    }
         if((!preg_match('/^([a-zA-Z0-9äöü])+([a-zA-Zäöü0-9\._-])*@([a-zäöüA-Z0-9_-])+([a-zäöüA-Z0-9\._-]+)+$/', $EMail))|| 
           (substr_count($EMail, "@")!=1||substr_count($EMail, ".")<0||strlen($EMail)<5)) {
                  $noerrors = false;
                  $msg .= mi18n("Bitte geben Sie eine korrekte E-Mail Adresse an!")."<br/>";
         }
    if ($Strasse == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihre Stra&szlig;e ein!")."<br/>";
    }
    if ($Ort == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihren Ort ein!")."<br/>";
    }
    if ($Plz == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihre Plz ein!")."<br/>";
    }
    if ($Firma == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihre Firma ein!")."<br/>";
    }
    if ($Login == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihren Login ein!")."<br/>";
    }
    if ($Passwort == '') {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie Ihr Passwort ein!")."<br/>";
    }
    if ($Passwort != $Wiederholen) {
        $noerrors = false;
        $msg .= mi18n("Es wurden 2 verschiedene Passwoerter eingegeben!")."<br/>";
    }
    if ($Login == $Passwort) {
        $noerrors = false;
        $msg .= mi18n("Login und Passwort duerfen nicht identisch sein!")."<br/>";
    }
    if (strlen($Passwort)<4) {
        $noerrors = false;
        $msg .= mi18n("Bitte geben Sie ein laengeres Passwort an (min. 4 Zeichen)!")."<br/>";
    }
if ($noerrors == false) {
        echo "<p>";
        #Errors have been found
        echo "<strong>".mi18n("Beim Versenden sind folgende Fehler aufgetreten:")."</strong><br/>";
        echo $msg.'<br/>';
        echo '<a href="javascript:history.back();">&lsaquo; '.mi18n("zur&uuml;ck").'</a>';
    } else {


                  mysql_query("INSERT INTO ".$tabellenName." (name, vorname, strasse, plz, ort, rufnummer, kundNr, firma, email, login, passwort) VALUES ('$name', '$vorname', '$strasse', '$plz', '$ort', '$telefon', '$kundnr', '$firma', '$email', '$login', '$passwort')");
        
                  #No errors, create and send mail
        $mail = new phpmailer;
        $mail_body = '<html><head></head><body bgcolor="#ffffff"><table cellspacing="0" cellpadding="2" border="0">';

        if (is_array($_POST)) {
            foreach ($_POST as $key => $value) {
                if ($key != 'send') {
                    $mail_body .= "<tr><td>$key</td><td>$value</td></tr>";
                }
            }
        }

        $mail_body .= '</table></bo'.'dy></html>';
        $mail->Host = "localhost";
        $mail->IsHTML(true);

        #Get mailer from settings
        switch (strtolower("CMS_VALUE[4]")) {
            case "smtp" :
                $mail->IsSMTP();
                $host = "CMS_VALUE[5]";
                $user = "CMS_VALUE[6]";
                $password = "CMS_VALUE[7]";
                                  if (($host != '') && ($user != '') && ($password != '')) {
                                      $mail-> $SMTPAuth = true;
                                      $mail->Host = $host;
                                      $mail->Username = $user;
                                      $mail->Password = $password;
                                  } else if (($host != '') && ($user != '')) {
                                      $mail-> $SMTPAuth = false;
                                      $mail->Host = $host;
                                      $mail->Username = $user;
                                      $mail->Password = "";
                                  }
            
                                  break;
            case "mail" :
                $mail->IsMail();
                break;
            case "sendmail" :
                $mail->IsSendmail();
                break;
            case "qmail" :
                $mail->IsQmail();
                break;
            default :
                }
        $mail->From = "CMS_VALUE[0]";
        $mail->FromName = "CMS_VALUE[2]";
        $mail->AddAddress("CMS_VALUE[1]", "");
        $mail->Subject = "CMS_VALUE[3]";
        $mail->Body = $mail_body;
        $mail->WordWrap = 50;
        $mail->Send();


        #Display message after mail is sent
        echo "<p>".mi18n("Sie haben sich erfolgreich registriert. Vielen Dank!")."<p/><br/>";
    }
}
?>

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Contact form with DB import

Beitrag von Oldperl » Di 25. Feb 2014, 17:08

Das Formular nutzt die history.back-Funktion des Browser um zum Formular zurück zu kommen. Daher ist da der Browser verantwortlich ob die Felder noch gefüllt sind oder nicht. Es gibt IMO 2 Möglichkeiten die Felder weiterhin mit den Eingaben zu erhalten.
  1. Das Formular ohne Seitenwechsel per Javascript oder per AJAX prüfen lassen.
  2. Die Daten per Session mitschleppen und die URL beim Zurück anzugeben.
Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Schertle
Beiträge: 55
Registriert: Fr 23. Apr 2004, 14:51

Re: Contact form with DB import

Beitrag von Schertle » Di 25. Feb 2014, 17:14

Danke für die Info.
Könntest Du mir ein Beispiel für beide Optionen machen?

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Contact form with DB import

Beitrag von Oldperl » Di 25. Feb 2014, 23:03

Hi,

sorry, aber dazu fehlt mir momentan etwas die (Frei-)Zeit, da ich momentan alle Zeit, neben der Arbeit für meine Kunden, in meine Projekte wie das Wordpress-Plugin SemmelstatzReloaded und meine Version der 4.8 stecke.
Für Punkt 1 kann ich aber einen Blick auf jQueryValidate (http://jqueryvalidation.org/), ein jQuery-Plugin empfehlen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Gesperrt