Hallo
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
die config.php
und die netform.php
wäre nett wenn mir dabei einer helfen könnten
DANKE schonmal
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
Kommentar