Foros del Web » Programando para Internet » PHP »

el talon de aquiles de formail en php5

Estas en el tema de el talon de aquiles de formail en php5 en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/05/2008, 18:12
Avatar de 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);
?>
  #2 (permalink)  
Antiguo 12/05/2008, 19:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: el talon de aquiles de formail en php5

ya intentaste usar el error_reporting(E_ALL) para ver que arroja?
haz intentado saber que funciones estan descativadas (o clases) ???
estas completamente seguro de que YA intentaste mas formas de debuggear y/o loggear tu script???
estas seguro que no alteraste de mas el script???
seguramente guardaste un copia de seguridad parta PHP4... eso si nos seria muy util....???

si es asi... esperemos que alguien NOS ayude... o reporta esto a Zend
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:58.