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?
Contact form with DB import
Re: Contact form with DB import
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ß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();">‹ '.mi18n("zurü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/>";
}
}
?>
-
- Beiträge: 4255
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Contact form with DB import
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.
Ortwin
- Das Formular ohne Seitenwechsel per Javascript oder per AJAX prüfen lassen.
- Die Daten per Session mitschleppen und die URL beim Zurück anzugeben.
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
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Contact form with DB import
Danke für die Info.
Könntest Du mir ein Beispiel für beide Optionen machen?
Könntest Du mir ein Beispiel für beide Optionen machen?
-
- Beiträge: 4255
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Kontaktdaten:
Re: Contact form with DB import
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
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
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog