Hace tiempo hice una pregunta similar, lamentablemente no tuve respuesta. El problema es este: Por segunda ocasión, mi proveedor de hosting me ha enviado un correo alertándome del mal uso de la función mail() de PHP que se encuentra en mis formularios, con la advertencia de que pueden dar de baja mi sitio.
Me han enviado también un ejemplo de código que puede ser incluído en mis formularios para evitar esta situación. La cuestión es que no sé cómo incluirlo (en qué parte) pues mis conocimientos de PHP son poco menos que básicos.
Si alguien pudiera indicarme como incluir ese dichoso código en mi formulario, les estaré eternamente agradecido; a continuación coloco los códigos.
Este es el código del formulario que estoy utilizando:
Código PHP:
<?php
include("global.inc.php");
$errors=0;
$error="Se encontraron los siguientes errores mientras se enviaba la información.<ul>";
pt_register('POST','Email');
pt_register('POST','Nombredelservidorpublico');
pt_register('POST','Apellidodelservidorpublico');
pt_register('POST','Hechosqueconstituyenladenuncia');
$Hechosqueconstituyenladenuncia=preg_replace("/(\015\012)|(\015)|(\012)/"," <br />", $Hechosqueconstituyenladenuncia);if($Email=="" || $Nombredelservidorpublico=="" || $Apellidodelservidorpublico=="" || $Hechosqueconstituyenladenuncia=="" ){
$errors=1;
$error.="<li>No llenó uno o más de los espacios requeridos. Por favor regrese e inténtelo de nuevo.";
}
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$Email)){
$error.="<li>Escribió una dirección de correo inválida";
$errors=1;
}
if($errors==1) echo $error;
else{
$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]=="on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF),"/"));
$message="Nombre completo: ".$Nombrecompleto."
Primer apellido:".$Primerapellido."
Segundo apellido:".$Segundoapellido."
Calle: ".$Calle."
Numero:".$Numero."
Colonia:".$Colonia."
Ciudad:".$Ciudad."
Telefono: ".$Telefono."
Email: ".$Email."
Nombre del servidor publico: ".$Nombredelservidorpublico."
Primer apellido del servidor publico: ".$Apellidodelservidorpublico."
Segundo apellido del servidor publico:".$Segundoapellidodelservidor."
Hechos que constituyen la denuncia: ".$Hechosqueconstituyenladenuncia."
";
$message = stripslashes($message);
mail("[email protected],","Denuncia de corrupción",$message,"From: phpFormGenerator");
header("Refresh: 0;url=http://www.midominio.com/gracias.htm");
?><?php
}
?>
Código PHP:
<?php
function pt_register()
{
$num_args = func_num_args();
$vars = array();
if ($num_args >= 2) {
$method = strtoupper(func_get_arg(0));
if (($method != 'SESSION') && ($method != 'GET') && ($method != 'POST') && ($method != 'SERVER') && ($method != 'COOKIE') && ($method != 'ENV')) {
die('The first argument of pt_register must be one of the following: GET, POST, SESSION, SERVER, COOKIE, or ENV');
}
$varname = "HTTP_{$method}_VARS";
global ${$varname};
for ($i = 1; $i < $num_args; $i++) {
$parameter = func_get_arg($i);
if (isset(${$varname}[$parameter])) {
global $$parameter;
$$parameter = ${$varname}[$parameter];
}
}
} else {
die('You must specify at least two arguments');
}
}
?>
Código PHP:
<?php
function ValidarDatos($campo){
//Array con las posibles cabeceras a utilizar por un spammer
$badHeads = array("Content-Type:",
"MIME-Version:",
"Content-Transfer-Encoding:",
"Return-path:",
"Subject:",
"From:",
"Envelope-to:",
"To:",
"bcc:",
"cc:");
//Comprobamos que entre los datos no se encuentre alguna de
//las cadenas del array. Si se encuentra alguna cadena se
//dirige a una página de Forbidden
foreach($badHeads as $valor){
if(strpos(strtolower($campo), strtolower($valor)) !== false){
header("HTTP/1.0 403 Forbidden");
exit;
}
}
}
//Ejemplo de llamadas a la funcion
ValidarDatos($_POST['email']);
ValidarDatos($_POST['asunto']);
ValidarDatos($_POST['mensaje']);
?>
Muchas gracias.