Mit folgendem Modul habe ich Probleme:
http://www.redaxo.de/165-0-moduldetails ... ule_id=231
Die Sache ist, dass das Formular irgendwie keine Umlaute akzeptiert. Weder im Namensfeld, noch im Nachrichtenfeld.
Ich poste hier meinen leicht abgewandelten Code:
EINGABE:
Code: Alles auswählen
Bitte die entsprechenden Felder ausfüllen, da sonst das Kontaktformular nicht funktionsfähig ist.
<br>
Bezeichner Namensfeld:
<br><input type=text size=10 class=inp100 name=VALUE[1] value="REX_VALUE[1]"><br><br>
Bezeichner EMail-feld:
<br><input type=text size=10 class=inp100 name=VALUE[2] value="REX_VALUE[2]"><br><br>
Bezeichner Personenanzahl:
<br><input type=text size=10 class=inp100 name=VALUE[10] value="REX_VALUE[10]"><br><br>
Bezeichner Text-/Nachrichtenfeld:
<br><input type=text size=10 class=inp100 name=VALUE[3] value="REX_VALUE[3]"><br><br>
Aufschrift auf Senden-Button:
<br><input type=text size=10 class=inp100 name=VALUE[4] value="REX_VALUE[4]"><br><br>
Meldung bei nicht korrekt ausgefülltem Formular:
<br><textarea name=VALUE[5] cols=80 rows=2 class=inp100>REX_VALUE[5]</textarea><br><br>
Meldung bei erfolgreicher Versendung des Formulars:
<br><textarea name=VALUE[6] cols=80 rows=2 class=inp100>REX_VALUE[6]</textarea><br><br>
EMail an die das Formular versendet werden soll:
<br><input type=text size=10 class=inp100 name=VALUE[7] value="REX_VALUE[7]"><br><br>
EMail an die das Formular als Kopie versendet werden soll:
<br><input type=text size=10 class=inp100 name=VALUE[8] value="REX_VALUE[8]"><br><br>
Titel der EMail:
<br><input type=text size=10 class=inp100 name=VALUE[9] value="REX_VALUE[9]"><br><br>
Code: Alles auswählen
<?php
session_start();
// ============== Form config ==============
// Daten für die Ausgabe der Fehlermeldung,
// Überschrift, Legend, Beschreibung, Feldnamen, "Submit"-Button
$page_info = "";
$hack_message = "REX_VALUE[5]";
//Formular
$form_header = "";
$form_legend = "";
$form_info = "";
$form_name = "REX_VALUE[1]";
$form_firma = "";
$form_email = "REX_VALUE[2]";
$form_personen = "REX_VALUE[10]";
$form_message = "REX_VALUE[3]";
$submit_value = "REX_VALUE[4]";
$submit_titel = "Zum Absenden bitte nur 1x klicken";
// Danke-Seite
$thanks_message = "REX_VALUE[6]";
// Empfänger E-Mail
$empfaenger="REX_VALUE[7]";
$empfaengerBC="REX_VALUE[8]";
$email_titel="REX_VALUE[9]";
// ============== Ende Form config ==============
// Daten aus Form config konvertieren
if ( !function_exists('clean_text')) {
function clean_text($value = "")
{
$value = htmlentities($value);
return $value;
}
}
$page_info = clean_text($page_info);
//$hack_message = clean_text($hack_message);
$form_legend = clean_text($form_legend);
$form_personen = clean_text($form_personen);
//$form_email = clean_text($form_email);
$form_firma = clean_text($form_firma);
$form_message = clean_text($form_message);
$submit_value = clean_text($submit_value);
//$submit_titel = clean_text($submit_titel);
//$thanks_message = clean_text($thanks_message);
// ============== Formularüberprüfung ==============
if (!function_exists ('cleanup')) {
function cleanup($string) {
// falls magic quotes on
if (get_magic_quotes_gpc())
{
$string = stripslashes($string);
}
$string = addslashes($string);
$string = strip_tags($string);
// "--","#";";","`","/" Ausfiltern von SQL-Statements
$string = str_replace(array("--","- -","#",";","`","/","<",">","{","}","[","]"),array("","","","","","","","","","","",""),$string);
// - mit Leerzeichen dazwischen (SQL-Kommentare!)
$string = preg_replace('#-\s+-#i',"",$string);
return $string;
} // end function cleanup
} // if (!function_exists ('cleanup'))
if (!function_exists ('checkName')) {
function checkName($string) {
// $name am Anfang Buchstabe; keine Zahlen und Nicht-Wortzeichen; dann
// beliebig viele Buchstaben, Bindestriche, Leerzeichen und Punkte
if (preg_match("/^[^\W\d_]([^\W\d_]|[\-\'\ä\Ä\ö\Ö\ü\Ü\s\.\?\?\?\?\?\?\?])*$/", stripslashes($string)))
{
return true; // OK
} else {
return false; // falsche Eingabe
}
} // end function checkName
} // if (!function_exists ('checkName'))
if (!function_exists ('checkNumeric')) {
function checkNumeric($string) {
// nur Zahlenr
if (preg_match("/^\d*$/", stripslashes($string)))
{
return true; // OK
} else {
return false; // falsche Eingabe
}
} // end function checkNumeric
} // if (!function_exists ('checkNumeric'))
if (!function_exists ('checkEmail')) {
function checkEmail($string) {
// $email mindestens a@a.aa
if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", stripslashes($string)))
{
return true; // OK
} else {
return false; // falsche Eingabe
}
} // end function checkEmail
} // if (!function_exists ('checkEmail'))
if (!function_exists ('checkMessage')) {
function checkMessage($string) {
// $email mindestens a@a.aa
if (preg_match("/^[^\d_]([^\W]|[\-\'\ä\Ä\ö\Ö\ü\Ü\s\"\.\!\?\;\,\:\?\%\(\)\+\=\@\*\?\?\?\?\?\?\?])*$/", stripslashes($string)))
{
return true; // OK
}
else
{
return false; // falsche Eingabe
}
} // end function checkMessage
} // if (!function_exists ('checkMessage'))
$hack = false; // Bool'sche Variable zeigt an, ob
// ein Hackingversuch vorliegt
// Auslesen und Säubern der Daten aus $_POST
if (sizeof($_POST) == 0)
{
$name = "";
$firma = "";
$email = "";
$message = "";
$submit = "";
$personen = "";
} else {
$name = $_POST["name"];
$email = $_POST["email"];
$personen = $_POST["personen"];
$firma = $_POST["firma"];
$message = $_POST["message"];
$submit = $_POST["submit"];
$sicherheit = $_POST["sicherheitscode"];
$name = cleanup($name);
$email = cleanup($email);
$personen = cleanup($personen);
$firma = cleanup($firma);
$message = cleanup($message);
$submit = cleanup($submit);
// Verifizieren der Daten
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']); } else {
$hack = true; $feld = 'Sicherheitscode';
}
if (checkName($name)!=1)
{
$hack = true; $feld = $form_name;
}
if (checkEmail($email)!=1)
{
$hack = true; $feld = $form_email;
}
if (checkMessage($message)!=1)
{
$hack = true; $feld = $form_message;
}
} // end else
// ============== Ende FormularÜberprüfung ==============
?>
<?php
// beim ersten Aufruf oder unkorrekten Eingaben Formular ausgeben
if (($submit == "") OR (($submit == $submit_value) AND ($hack == true)))
{
// Bei inkorrekten Eingaben eine Fehlermeldung ausgeben:
if ($hack)
{
?>
<p><?php echo $hack_message; ?></p>
<ul>
<li><?php echo $feld; ?></li>
</ul>
<?php
} // end if ($hack)
else
{
if ($page_info != "")
{
echo "<p>" . $page_info . "</p>\n";
}
} // end else
?>
<div id="formwrap">
<!-- Einfaches Kontaktformular mit Captcha. Code von CHRONO.net Media Works. http://www.chrono.net -->
<div id="form">
<form id="kontakt" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<fieldset>
<?php
echo "<legend><strong>" . $form_legend . "</strong></legend>\n";
?>
<label for="name"><strong><?php echo $form_name; ?></strong></label><br />
<input class="inpt" type="text" id="name" name="name" size="38" title="<?php echo $form_name; ?>" value="<?php echo stripslashes($name); ?>" tabindex="1" /><br /><br />
<label for="email"><strong><span lang="en"><?php echo $form_email; ?></span></strong></label><br />
<input class="inpt" type="text" id="email" name="email" size="38" title="<?php echo $form_email; ?>" value="<?php echo stripslashes($email); ?>" tabindex="2" /><br /><br />
<label for="personen"><strong><span lang="en"><?php echo $form_personen; ?></span></strong></label><br />
<input class="inpt" type="text" id="personen" name="personen" size="38" title="<?php echo $personen; ?>" value="<?php echo stripslashes($personen); ?>" tabindex="3" /><br /><br />
<label for="message"><strong><?php echo $form_message; ?></strong></label><br />
<textarea class="txt" id="message" name="message" title="<?php echo $form_message; ?>" cols="36" rows="8" tabindex="4"><?php echo stripslashes($message); ?></textarea><br /><br />
<label for="captcha"><strong>Sicherheitscode</strong></label><br /><?php if($REX['REDAXO'] ==0) {
?><img src="captcha/captcha.php" border="0" title="Sicherheitscode" align="left"><input type="text" name="sicherheitscode" size="4"><?php } ?><br /><br />
<input type="submit" class="senden" name="submit" value="<?php echo $submit_value; ?>" title="<?php echo $submit_titel; ?>" tabindex="5" /><br />
</fieldset>
</form>
</div>
</div>
<?php
} // if (($submit == "") OR (($submit == $submit_value) AND ($hack == true)))
elseif (($submit == $submit_value) AND ($hack == false))
{
//email abschicken
$recipient=$empfaenger;
$subject=$email_titel;
$header="From: " . $email . "\n";
$mail_body ="Das Anfrage-Formular wurde am " . date("d.m.Y") . " um " . date("H:i") . "h ausgeführt.\n";
$mail_body.="Folgende Werte wurden eingetragen:\n\n";
$mail_body.="Name: " . $name . "\n";
$mail_body.="E-Mail: " . $email . "\n\n";
$mail_body.="Anzahl der Personen: " . $personen . "\n\n";
$mail_body.="Message:\n\n";
$mail_body.=$message . "\n\n ---- Ende der automatisch generierten eMail ----";
mail($recipient,$subject,$mail_body,$header);
if ($empfaengerBC != ''){
$recipient=$empfaengerBC;
mail($recipient,$subject,$mail_body,$header);
}
echo '<br /><br /><p class="center"><strong>'.$thanks_message.'</strong></p>'."\n";
}
?>
Da ich ein wenig im Stress bin, wäre es mir auch recht, wenn mir jemand ein anderes Kontaktformular(mit Captcha) weisen könnte. Die Website läuft unter 3.2 und nur mit einer Sprache.
Ich habe auch schon versucht, do form! an die 3.2 Version anzupassen(woher es ja eigentlich auch stammt), aber das bekomme ich leider nicht hin.
Beste Grüße,
Marc