Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/05/2008, 18:12
Avatar de milerweb
milerweb
 
Fecha de Ingreso: enero-2008
Ubicación: Lima peru
Mensajes: 81
Antigüedad: 16 años, 3 meses
Puntos: 1
el talon de aquiles de formail en php5

bueno pues resulta que han migrado mi hosting a php5 y ahora todos los forms que enviaban el mail con formail ya no funcionan ya he cambiado todo lo que hay que cambiar para la nueva version pero aun asi sigue espero ustedes si encuentren el talon de aquiles que haga funcionar este escript aqui les paso el script para que lo vean.

Código PHP:
<?php
# $referers allows forms to be located only on servers which are defined     #
# in this field.                                                             #

$referers = array("","miprimeraweb.com","misegundaweb.biz","www.miterceraweb.biz","micuartaweb.com","www.miquintaweb.com");

#############################################################################

$errors = array();
$invis_array = array("recipient","subject","required","redirect",
                     
"print_blank_fields","env_report",
                     
"missing_fields_redirect","title","bgcolor",
                     
"text_color","link_color","alink_color",
                     
"vlink_color","background","subject","title",
                     
"link","css","return_link_title",
                     
"return_link_url");

/*function in_array($needle,$haystack){                   //remove for PHP4.0... it"s not in 3
  $found = false;
  while (list($key,$val) = each ($haystack)){
    if ($needle == $val){
      $found = true;
    }
  }
  return $found;
}*/

function fill_data(&$from,$to,$tag=""){
  
$temp $from;
  if(!
$from){
    
$temp $to;
  }
  if(
$tag){
    
$temp " ".$tag."=\"".$temp."\"";
  }
  
$from $temp;
}

function 
check_referer($referers){
  if (
count($referers)){
    global 
$errors;
    
$found false;
    
$temp explode("/",$_SERVER["HTTP_REFERER"]);
    
$referer $temp[2];
    
//echo "hh".getenv("HTTP_REFERER")."jj";
    
for ($x=0$x count($referers); $x++){
      if (
$referers[$x] == $referer){
        
$found true;
      }
    }
    if (!
$found){
      
$errors[] = "Usted procede de un dominio sin autorizacion.";
      
error_log("[PHPFormMail] Illegal Referer. (".$_SERVER["HTTP_REFERER"].")"0); 
    }
    return 
$found;
  } else {
    return 
true//Not a good idea, if empty, it will allow it.
  
}
}

function 
decode_vars(){
 
$_POST;
 
$_GET;
  if (
$_SERVER["REQUEST_METHOD"] == "GET"){
    
$a $_GET;
  } else {
    
$a $_POST;
  }
  return 
$a;
}

function 
strip_bad_stuff($data){
  while(list(
$key,$val) = each ($data)){
    if (
$val){
      
$temp $val;
      
$data[$key] = eregi_replace("<!--(.|\n)*-->","[SSI REMOVED]",$val);
      if (
$temp != $data[$key]){
        
error_log("[PHPFormMail] SSI Found and Removed. (".$_SESSION["REMOTE_ADDR"].")"0); 
      }
    }
  }
  return 
$data;
}

function 
error($errors){
  global 
$form;
  if (
$errors){
    if (
$form["missing_fields_redirect"]){
      
Header(  "Localizacion: ".$form["missing_fields_redirect"]);
    } else {
      print 
"<HTML>\n<HEAD>\n";
      print 
"<TITLE>Error</TITLE>\n";
      if(
$form["css"]){
        print 
"<link rel=\"stylesheet\" href=\"".$form["css"]."\">\n";
      }
      print 
"</HEAD>\n\n";
      print 
"<BODY".$form["bgcolor"].$form["text_color"].$form["link_color"].$form["alink_color"].$form["vlink_color"].$form["background"]."\">\n";
      print 
"<H2>Se encontraron los siguientes errores:</H2><BR>\n";
      while (list(
$key,$val) = each ($errors)) {
        print 
$val "<BR>\n";
      }
      print 
"<BR>Por favor use el bot&oacute;n <a href=\"javascript: history.back();\">atras</a> para corregir estos errores.<BR>\n";
      print 
"</BODY>\n</HTML>";
    }
  }
}

function 
check_required($form){
  global 
$errors;
  
$problem true;
  if (!
$form["recipient"]) {
    
$problem false;
    
$errors[] = "No hay un destinatario para enviar este mensaje.";
  }
  if (
$form["required"]){
    
$splitstring split(",",$form["required"]);
    for(
$x=0$x count($splitstring); $x++){
      if (!
$form[$splitstring[$x]]) {
        
$problem false;
        
$errors[] = "El valor requerido (<b>" $splitstring[$x] . "</b>) no se ha completado.";
      }
    }
  }
  return 
$problem;
}

function 
send_mail($form,$invis_array){
  
$toarray explode(",",$form["recipient"]);
  
$mailbody "\nA continuación se muestran los datos que el usuario ha proporcionado desde su web.\nEste mensaje fue enviado por\n";
  
$mailbody.= $form["Nombre"]. " (" .$form["email"].") on " date("F dS, Y") ."\n\n";

     while (list(
$key,$val) = each ($form)){
       if (!
in_array($key,$invis_array)){
         if ((
$form["print_blank_fields"]) || ($val)){
           
$mailbody .= $key.": "$val ."\n";
         }
       }
     }
     
     if (
$form["env_report"]){
       
$mailbody .= "\n\n-------- Otros datos de interés obtenidos --------\n";
       
$mailbody .= "HOST REMOTO: ".$_SERVER["REMOTE_HOST"]."\n";
       
$mailbody .= "DIRECCION REMOTA: ".$_SERVER["REMOTE_ADDR"]."\n";
       
$mailbody .= "USUARIO REMOTO: ".$_SERVER["REMOTE_USER"]."\n";
       
$mailbody .= "USUARIO HTTP: ".$_SERVER["HTTP_USER_AGENT"]."\n";
   
$mailbody .= "\n\n------      Servicio ofrecido por           -------\n";
       
$mailbody .= "-------- http://www.miweb.com   ------------\n";
       
$mailbody .= "---------- Ingenieria Informatica  ----------------\n";
     }

$cabeceras 'From: [email protected] (web)' "\r\n" .
   
'Reply-To: [email protected] (web)' "\r\n" .
   
'X-Mailer: PHP/' phpversion();

    for (
$tobla 0$tobla count($toarray); $tobla++){
//      mail($toarray[$tobla],$form["subject"],$mailbody,"From: " .$form["email"]. " (" .$form["Nombre"]. ")\nX-Mailer: PHPFormMail (http://www.paginasdeoro.com)");
      
mail($toarray[$tobla], $form["subject"],$mailbody$cabeceras);      
    }
}

$form strip_bad_stuff(decode_vars());
fill_data($form["bgcolor"],"#FFFFFF","bgcolor");
fill_data($form["text_color"],"#000000","text");
fill_data($form["link_color"],"#0000FF","link");
fill_data($form["alink_color"],"#FF0000","alink");
fill_data($form["vlink_color"],"#000099","vlink");
fill_data($form["background"],"","background");

if(
check_referer($referers) && check_required($form)){
  
fill_data($form["subject"],"WWW Form Submission");
  
fill_data($form["email"],"[email protected]");
  
fill_data($form["Nombre"],"Cliente desconocido");
  
fill_data($form["title"],"Form Results");
    
  
send_mail($form,$invis_array);
    
  if (
$form["redirect"]){
    
Header("Location: ".$form["redirect"]);
  } else {
    print 
"<HTML>\n<HEAD>\n";
    print 
"<TITLE>".$form["title"]."</TITLE>\n";
    if(
$form["css"]){
      print 
"<link rel=\"stylesheet\" href=\"".$form["css"]."\">\n";
    }
    print 
"</HEAD>\n\n";
    print 
"<BODY".$form["bgcolor"].$form["text_color"].$form["link_color"].$form["alink_color"].$form["vlink_color"].$form["background"]."\">\n";
    print 
"<H2>La información que se muestra a continuaci&oacute;n le ha sido enviada:</H2><BR>\n";
    while (list(
$key,$val) = each ($form)) {
      if (!
in_array($key,$invis_array)){
        print 
"<b>".$key .":</b> ".$val "<BR>\n";
      }
    }
    if(
$form["return_link_url"] && $form["return_link_title"]){
      print 
"<BR><a href=\"".$form["return_link_url"]."\">".$form["return_link_title"]."</a>\n";
    }
    print 
"<center><a href=\"http://www.miweb.com\">web</a><br>Ingenier&iacute;a Inform&aacute;tica</center>\n";
    print 
"</BODY>\n</HTML>";
  }
}

error($errors);
?>