Habe ein kleines Problem beim Kontaktformular von Factory Netform - die gibts nicht mehr, daher auch kein Support mehr.
Wie kann ich in das Teil ein Captcha einbauen? Alle Versuche sind bisher gescheitert.
Hiermal die index.php
Code:
<div class="kontakt"> <form method="post" action="danke.php" enctype="multipart/form-data"> <label for="req_Anrede">Anrede*</label> <select name="req_Anrede"> <option value="">Bitte wähle</option> <option value="Herr">Herr</option> <option value="Frau">Frau</option> </select> <br /> <label for="reqchr_Vorname">Vorname:*</label> <input type="text" name="reqchr_Vorname" size="40"> <br /> <label for="reqchr_Name">Name:*</label> <input type="text" name="reqchr_Name" size="40"> <br /> <label for="reqmail_eMail">E-Mail:*</label><input type="text" name="reqmail_eMail" size="40"> <br /> <label for="req_Betreff">Betreff:*</label><input type="text" name="req_Betreff" size="40"> <br /> <br /> <hr /> <br /> <label for="req_Betreff">Nachricht:*</label><textarea name="req_Nachricht" cols="25" rows="5" wrap="physical"></textarea> <br /> <label for="file_datei">Datei mitschicken:</label><input name="file_datei" type="file" size="30" /> <br /> <div class="center"><input type="reset" name="reset" value="Eingabe löschen"> <input type="submit" name="submit" value="Nachricht senden"><br /> <br /> <div class="klein"><?php echo "Ihre aktuelle IP-Adresse.: <b>".$_SERVER["REMOTE_ADDR"]."</b>"; ?></div> </div></div> </form>
PHP-Code:
<?php
/*
================================================================================
- factory netFORM 2.0.1 - Konfiguration -
- ------------------------------------- -
- Bitte lesen Sie das Hanbuch -
- Dort stehen alle nötigen Informationen zum Einrichten des FormularMailers -
================================================================================
*/
$error->field = '<b>Folgende Felder sind Pflichtangaben:</b>';
$error->entry = '<b>Fehler bei der Eingabe:</b>';
$error->flooding = 'Das Formular wurde versucht mehrmals vom gleichen Absender zu verschicken';
$error->post = 'Das Formular wurde nicht mit der Post-Methode übertragen';
$error->mail = '<i>[key]</i>: Die angegebene Email-Adresse ist nicht gültig';
$error->letter = '<i>[key]</i>: Dieses Feld darf nur Buchstaben enthalten';
$error->nums = '<i>[key]</i>: Dieses Feld darf nur Ziffern enthalten';
$error->data = '<i>[key]</i>: hat ein nicht zulässiges Dateiformat';
$error->file = 'vorlagen/error.htm';
$success = 'vorlagen/okay.htm';
$tempdir = ''; //Der Pfad zum temporären Verzeichnis, wo files
//zwischengespeichert werden. Ohne Slash am Ende angeben.
//Dieses Verzeichnis muss auf chmod 777 gesetzt werden.
$sendfile = 'vorlagen/test.pdf'; //Der Pfad zur Datei, die versendet werden soll.
$attach->filter = '.doc,.vbs,.exe,.bat';
$rec['name'][1] = 'styling factory';
$rec['mail'][1] = 'info@stylingfactory.de';
/*
$rec['name'][2] = '';
$rec['mail'][2] = '';
*/
$referer[1] = 'localhost';
$referlog = 'flood.txt';
$timespan = 1;
$mail->mail = 'vorlagen/mail.txt';
$mail->answer = 'vorlagen/sender.txt';
/*
================================================================================
- HINWEIS: Sollten einige Einstellungsmöglichkeiten unklar sein, -
- dann lesen Sie bitte im Handbuch nach. -
- ---------------------------------------------------------------------------- -
- Bei Problemen wenden Sie sich bitte an info@stylingfactory.de -
- -
- (c)opyright 2002-2003 styling factory -
================================================================================
*/
?>
PHP-Code:
<?php
// evtl. den include-pfad für die config.php anpassen, falls die config verschoben wird
if(!$get = @include("config.php")){
echo "Konnte Konfig-Datei nicht öffnen. Bitte Namen und Pfad kontrollieren!";
die;}
// ab hier bitte nichts mehr ändern | please don't edit the lines below
$version = 'factory netFORM 2.0.2';
@reset ($HTTP_POST_VARS);
$ferr = check_post($HTTP_POST_VARS);
if($ferr == "post"){
echo $error->post;}
if(!$ferr){
$error_msg = $error_blank = "";
$vars = get_vars($HTTP_POST_VARS,$HTTP_POST_FILES,$tempdir);
ref($referer,$serial,$HTTP_REFERER);
while(list($key,$val) = each($vars)){
$val = trim($val);
if(eregi("^num_",$key)){
if(check_nums($val) == "error"){
$error_msg .= str_replace("[key]",preg_replace("/num_/i","",$key),$error->nums)."<br>";}
}
if(eregi("^chr_",$key)){
if(check_chars($val) == "error"){
$error_msg .= str_replace("[key]",preg_replace("/chr_/i","",$key),$error->letter)."<br>";}
}
if(eregi("^mail_",$key)){
$from_mail = $val;
if($val && !ereg('.@.{5}',$val)){
$error_msg .= str_replace("[key]",preg_replace("/mail_/i","",$key),$error->mail)."<br>";}
}
if(eregi("^file_",$key)){
$filt = split(",",$attach->filter);
if($val){
for($i=0;$i<count($filt);$i++){
if(preg_match("/".$filt[$i]."/i",$val)){
$error_msg .= str_replace("[key]",preg_replace("/file_/i","",$key),$error->data)."<br>";}
}
}
}
else if(eregi("^req_",$key)){
if(!$val){
$error_blank .= preg_replace("/req_|req_/i","",$key)."<br>";}
}
if(eregi("^reqnum_",$key) || eregi("^numreq_",$key)){
if(check_nums($val) == "error"){
$error_msg .= str_replace("[key]",preg_replace("/reqnum_|numreq_/i","",$key),$error->nums)."<br>";}
else if(!$val){
$error_blank .= preg_replace("/reqnum_|numreq_/i","",$key)."<br>";}
}
if(eregi("^reqchr_",$key) || eregi("^chrreq_",$key)){
if(check_chars($val) == "error"){
$error_msg .= str_replace("[key]",preg_replace("/reqchr_|chrreq_/i","",$key),$error->letter)."<br>";}
else if(!$val){
$error_blank .= preg_replace("/reqchr_|chrreq_/i","",$key)."<br>";}
}
if(eregi("^reqmail_",$key) || eregi("^mailreq_",$key)){
$from_mail = $val;
if($val && !checkmail($val)){
$error_msg .= str_replace("[key]",preg_replace("/reqmail_|mailreq_/i","",$key),$error->mail)."<br>";}
else if(!$val){
$error_blank .= preg_replace("/reqmail_|mailreq_/i","",$key)."<br>";}
}
if(eregi("^reqfile_",$key) || eregi("^filereq_",$key)){
$filt = split(",",$attach->filter);
if($val){
for($i=0;$i<count($filt);$i++){
if(preg_match("/".$filt[$i]."/i",$val)){
$error_msg .= str_replace("[key]",preg_replace("/reqfile_|filereq_/i","",$key),$error->data)."<br>";}
}
}
if(!$val || $val == "none"){
$error_blank .= preg_replace("/reqfile_|filereq_/i","",$key)."<br>";}
}
}
if($error_blank || $error_msg){
$fl = @fopen($error->file,"r");
$msg = @fread($fl, filesize($error->file));
@fclose($fl);
if($error_blank){
$error_blank = $error->field."<br>".$error_blank;}
if($error_msg){
$error_msg = "<p>".$error->entry."<br>$error_msg</p>";}
$msg = str_replace("[req_error]",$error_blank,$msg);
$msg = str_replace("[ent_error]",$error_msg,$msg);
echo $msg;
}}
if(!$error_blank && !$error_msg){
if(!$vars[template]){
$ref_id = date("Ymd")."-";
@reset ($vars);
$err = FloodProtect($referlog,$REMOTE_ADDR,$timespan);
if($err == "flooding"){
echo $error->flooding;}
else{
$ref_id .= $err;
$fl = @fopen($success,"r");
$conts = @fread($fl, filesize($success));
@fclose($fl);
echo convert_tpl($conts,$vars,$ref_id,$REMOTE_ADDR);
//mail_text read
$fmail = @join ('',@file($mail->mail));
reset($vars);
$fmail = convert_mail($fmail,$vars,$ref_id,$REMOTE_ADDR);
$sub = @preg_match_all("/subject:(.*)\n/i",$fmail,$subject);
$fmail =@preg_replace("/subject:(.*)\n/i","",$fmail);
$i=1;
$smail = new mime();
while($i <= sizeof($rec['mail'])){
$smail->mime_mail();
$smail->subject = trim(str_replace("Subject:","",$subject[0][0]));
$smail->body = $fmail;
reset($vars);
while(list($key,$val) = each($vars)){
if((@preg_match("/^(reqfile_|filereq_)/i",$key) || @preg_match("/^file_/i",$key)) && $val != "none"){
$fil = split(":",$val);
if($fil[0]){
$attachment = fread(fopen($tempdir."/".$fil[0],"rb"),filesize($tempdir."/".$fil[0]));
@unlink($tempdir."/".$fil[0]);
$smail->add_attachment($attachment,$fil[0],$fil[1]);
}}}
$smail->from = $from_mail;
$smail->headers = "X-Mailer: $version";
$smail->to = $rec['mail'][$i];
$smail->send();
$i++;}
$amail = @join ('',@file($mail->answer));
reset($vars);
$amail = convert_mail($amail,$vars,$ref_id,$REMOTE_ADDR);
$sub = @preg_match_all("/subject:(.*)\n/i",$amail,$subject);
$amail =@preg_replace("/subject:(.*)\n/i","",$amail);
reset($vars);
while(list($name,$val) = each($vars)){
if(@preg_match("/(mail|reqmail|mailreq)_(.*)/i",$name)){
if(trim($val)){
$tmail = new mime(); $tmail->mime_mail();
$tmail->subject = trim(str_replace("Subject:","",$subject[0][0]));
$tmail->body = $amail;
//get attach
if($attachfile){
$tattach = fread(fopen($sendfile,"rb"),filesize($sendfile));
$tmail->add_attachment($tattach,basename($sendfile),"*/*");
}
//end attach
$tmail->from = $rec['name'][1]." <".$rec['mail'][1].">";
$tmail->headers = "X-Mailer: $version";
$tmail->to = $val;
$tmail->send();
}
}
//end read text
}}
}else{
$fl = fopen($vars[template],"r");
$content = fread($fl,filesize($vars[template]));
fclose($fl);
$content = stripcslashes($content);
reset($vars);$preforms = "";
while(list($hid,$va) = each($vars)){
if($hid != "template"){
$preforms .= "<input type=\"hidden\" name=\"$hid\" value=\"$va\">";
}}
$content = str_replace("</form>",$preforms."</form>",$content);
}
//echo $content;
echo convert_tpl($content,$vars,$ref_id,$REMOTE_ADDR);
}
function get_vars($postvars,$filevars,$tempdir){
while(list($key,$var) = each($postvars)){
$vars[$key] = htmlspecialchars(trim($var));
}
while(list($key,$var) = each($filevars)){
$vars[$key] = $var[name].":".$var[type];
@copy($var[tmp_name],$tempdir."/".$var[name]);
}
return $vars;}
function check_post($postvars){
if(empty($postvars)){
$err = "post";
}
return $err;}
function ref($referer,$serial,$ref){
$tt = "(";
for($i=1;$i<=count($referer);$i++){
$tt .= ".".$referer[$i].".|".$referer[$i];
if($i < count($referer)){
$tt .= "|"; }
}
$tt .= ")";
if(!@eregi($tt,$ref)){
echo "Zugriff verweigert<br>
$ref";
die;}
echo "<!-- $serial .:FormMail PRO:. -->";
}
function FloodProtect($file,$ip,$time){
$savenew = FALSE;
if(file_exists($file)){
$fp = @fopen($file,"r");
$i=0;
while (!feof($fp)) {
$line[$i] = trim(fgets($fp,100000));
$i++;}
@fclose($fp);
$check = split(",",$line[0]);
$err = "".($check[sizeof($check)-1]+1)."";
$err = str_pad($err,3,"0", STR_PAD_LEFT);
if(@preg_match_all("/(($ip),(\d*))/i",$line[1],$compair)){
$comp = split(",",$compair[1][0]);
if((time()-$comp[1]) < $time){
$err = "flooding";}
else{
$line[1] = @preg_replace("/$ip,".$comp[1]."/i","$ip,".time(),$line[1]);
$line[0] .= ",$err";
$savenew = TRUE;}
}
else if(!@preg_match_all("/$ip/i",$line[1])){{
$line[1] .= ",$ip,".time();}
$line[0] .= ",$err";
$savenew = TRUE;
}
if($check[0] < date("Ymd")){
$err = "001";
$line[0] = date("Ymd").",$err";
$savenew = TRUE;}
}else{
$err = "001";
$line[0] = date("Ymd").",$err";
$line[1] = $ip.",".time();
$savenew = TRUE;
}
if($savenew){
$fp = @fopen($file,"w");
@fputs($fp,$line[0]."\n".$line[1]);
@fclose($fp);}
@chmod ($file,0700);
return $err;}
function check_nums($field){
if(eregi("([a-z])",$field)){
$err="error";}
return $err;}
function check_file($field,$filter){
if(eregi("([a-z])",$field)){
$err="error";}
return $err;}
function check_chars($field){
if(eregi("([0-9|!-?])",$field)){
$err="error";}
return $err;}
class mime
{
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;
function mime_mail(){
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}
function add_attachment($message, $name, $ctype,$encode = "base64"){
$this->parts[] = array ("ctype" => $ctype,"message" => $message,"encode" => $encode,"name" => $name);
}
function build_message($part){
$message = $part["message"];
if($part["encode"] == "base64"){
$message = chunk_split(base64_encode($message));
}
$encoding = $part["encode"];
return "Content-Type: ".$part[ "ctype"]."; ".
($part[ "name"]? " name = \"".$part[ "name"]. "\"" : "").
"\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}
function build_multipart(){
$boundary = "----=_NextPart_FNF_".md5(uniqid(time()));
$multipart = "From: ".$this->from."\n";
$multipart .= "Content-Type: multipart/mixed; boundary = \"$boundary\"\n\nThis is a MIME encoded message.\n\n--$boundary";
for($i = sizeof($this->parts)-1; $i >= 0; $i--)
{
$multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
}
return $multipart.= "--\n";
}
function send(){
$mime = "";
if (!empty($this->body))
$this->add_attachment($this->body, "", "text/plain","quoted-printable");
$mime .= $this->headers."\n";
$mime .= "MIME-Version: 1.0\n".$this->build_multipart();
@mail($this->to, $this->subject, "", $mime);
}
};
function checkmail($email) {
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,5}$", $email, $check)) {
return true;
}
return false;
}
function convert_mail($text,$vars,$id,$referer){
reset($vars);
while(list($key,$val) = each($vars)){
$text = @preg_replace("/\[$key\]/i",$val,$text);
}
$text = @preg_replace("/\[referenz\]/i",$id,$text);
$text = @preg_replace("/\[ip\]/i",$referer,$text);
$text = @preg_replace("/\[date\]/i",date("d.m.Y"),$text);
$text = @preg_replace("/\[time\]/i",date("H:i:s"),$text);
$text = @preg_replace("/\[!(.*)(\d*\.?\d*)(.*)!\]/e","\\1",$text);
return $text;}
function convert_tpl($string,$vars,$id,$referer){
@reset($vars);
while(list($key,$val) = @each($vars)){
$string = @preg_replace("/\[$key\]/i",$val,$string);
}
$string = @preg_replace("/\[referenz\]/i",$id,$string);
$string = @preg_replace("/\[ip\]/i",$referer,$string);
$string = @preg_replace("/\[date\]/i",date("d.m.Y"),$string);
$string = @preg_replace("/\[time\]/i",date("H:i:s"),$string);
$string = @preg_replace("/\[!(.*)(\d*\.?\d*)(.*)!\]/e","\\1",$string);
return $string;}
?>
DANKE schonmal
Einen Kommentar schreiben: