Buenas tardes comunidad. Es la primera vez que me animo a escribir aunque consulto bastante por estas paginas cuando tengo dudas. Aviso, soy novato a mas no poder en PHP, el problema es el siguiente, por medio de scripts encontrados por la web he realizado un formulario para envio de correo, despues de haber solucionados unos errores que he encontrado, aun me quedan dos que no se como solucionar.
Los dos errores son iguales a excepcion del nombre de la variable. Los errores son:

Undefined variable: field in var/www/vhost....
Undefined variable: key in var/www/vhost....

Por lo que entiendo me indica que no existen esas variables, el problema esta en que no se en que parte del archivo debo declarar la variables y cual es su contenido. Para declarar ya se que es algo como:
$field="lo que sea"
$key="lo que sea"
Pero en que parte hago la declaracion y cual debera ser su contenido?
El codigo que dispongo es el siguiente:

<?
@import_request_variables("gpc");
$youremail = "sucorreo@dominio.es"; //SU DIRECCION DE CORREO
$subject = "Solicitud Contacto"; // TITULO DEL ASUNTO
$redirect = "contacto.php";//URL AL QUE SE REDIRECCIONA UNA VEZ ENVIADO
$secs = "5";// TIEMPO PARA REDIRECIONAR (5 SEG.)

if(preg_match("/MIME-Version:/",$postVars)) {
mail("sucorreo@dominio.es", "Form Hijack Attempt", "A spam relay was attempted from the Web site and was blocked.", "From:SpamMonitor");
die();
} //BLOCKING spam

$secret = ssshhitsasecret;
$token = md5(rand(1, 1000).$secret);
$_SESSION[token] = $token;
?>
Siguen lineas html....
...
...
<?
//a partir de aqu? hay una serie de variables que impiden que los spammers usen nuestro formulario
$name = stripslashes($name);
$message = stripslashes($message);
$headers = "From: " . $email . "\r\n\r\n";
//This is where the email is sent using your values from above. Be sure to update this if you change any fields in contact.php
mail("$youremail", "$subject","
Name: $name
Email: $email
Subject: $phone
Message:\n\r $message
IP: $ip
Browser Info: $httpagent
Referral : $httpref
Date : $date",$headers);
// Strip \r and \n from the email address
$_POST[email] = str_replace("\r", "", $_POST[email]);
$_POST[email] = str_replace("\n", "", $_POST[email]);

//*****COMMENT: if you have problems with the lines 40/41, replace these for:
//NOTA IMPORTANTE: pudiera que ser que la configuraci?n de tu host, no admitiera esta l?neas de c?digo:
//$_POST[email] = preg_replace("\r", "", $_POST[email]);
//$_POST[email] = preg_replace("\n", "", $_POST[email]);

//Soluci?n: reemplazalas por:
//$_POST[email] = str_replace("\r", "", $_POST[email]);
//$_POST[email] = str_replace("\n", "", $_POST[email]);//*****

$_SESSION[token] = $token;
$token = md5(rand(1, 1000).$secret);
$secret = ssshhitsasecret;
$field = preg_replace( "/[\n\r]+/", " ", $field );
// Quitar encabezados - Remove injected headers
$find = array("/bcc\:/i","/Content\-Type\:/i","/cc\:/i","/to\:/i");
$_POST[email] = preg_replace($find, "", $_POST[email]);
$message = preg_replace($find, "", $message);
$email=str_replace("\r","\n",$email);
$name=str_replace("\r","\n",$name);
$message=str_replace("\r","\n",$message);
$phone=str_replace("\r","\n",$phone);

//("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) Original
//("/^[\w\.]+@[\w]+\.[\w\.]+/i", $email) Abreviado
if(!preg_match("/^[\w\.]+@[\w]+\.[\w\.]+/i", $email)) {
ob_clean();
mail("$youremail", "Mensaje eliminado", "$message", "From: $name <$email>");
exit("Mensaje eliminado. Algun dato introducido es incorrecto.");
}
if (preg_match("/(bcc$|content-type|mime-version|--)/", $key) )
print_error("Field names indicate exploit."); //BLOCKING SPAM
?>

He modificado las funciones eregi por preg_match ahi donde hacia falta, pues saltaba el error de deprecated. Pero los 2 ultimos errores no he logrado encontrar solucion.
Me alegraria encontrar en esta comunidad la solucion a este problema.
Un saludo a todos y gracias por la ayuda que prestais.
JLZ
Pertenece a la categoría:

No hay respuestas para esta pregunta