Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2013, 16:06
Fenixmc
 
Fecha de Ingreso: febrero-2013
Ubicación: Badajoz
Mensajes: 5
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta PHP en ocasiones manda datos en blanco.

Hola Amigos:
Muchas veces me ha ayudado el foro a solucionar problemas varios pero en esta ocasión no veo que va mal en ell código ni encuentro solución en el foro, espero que me podáis echar un cable.
A grandes rasgos... el PHP es llamado desde un submit en un HTML; toma unos datos del formulario, extrae la IP del usuario y manda 3 correos, 2 de ellos son para el equipo de programación y un tercero es a la cuenta del usuario. Pues bien, en ocasiones el PHP manda datos correctos, como estos, a las cuentas de los programadores:

ATENCION: Antes de dar respuesta verificar con el panel de control si ha confirmado la consulta desde su bandeja de correo.
IP del usuario: 84.121.79.41

* Envia: jose maria XXXXXXXX
* E-mail: [email protected]

* Asunto: Empleo

* Mensaje: Habiendo leido que habria alguna vacante de empleo publico quisiera preguntarles la posiblidad de poder acceder a ellas. Si son tan amables de enviarme las bases. Gracias.

Y en ocasiones manda esto (aunque en el HTML se validan correctamente que todos los datos solicitados tengan un mínimo de longitud y un email correcto con usuario+@+dominio+. y 2 o 3 caracteres)


ATENCION: Antes de dar respuesta verificar con el panel de control si ha confirmado la consulta desde su bandeja de correo.
IP del usuario: 92.82.234.94

* Envia:
* E-mail:

* Asunto:

* Mensaje:

El código del PHP es el siguiente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP formulario de contacto</title>
</head>
<?php

//Optención de IP REAL.
function getRealIP(){
if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' ) {
$client_ip = ( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" );

// los proxys van añadiendo al final de esta cabecera
// las direcciones ip que van "ocultando". Para localizar la ip real
// del usuario se comienza a mirar por el principio hasta encontrar
// una dirección ip que no sea del rango privado. En caso de no
// encontrarse ninguna se toma como valor el REMOTE_ADDR

$entries = preg_split('/[, ]/', $_SERVER['HTTP_X_FORWARDED_FOR']);
reset($entries);
while (list(, $entry) = each($entries)) {
$entry = trim($entry);
if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) ) { // http://www.faqs.org/rfcs/rfc1918.html
$private_ip = array(
'/^0\./',
'/^127\.0\.0\.1/',
'/^192\.168\..*/',
'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
'/^10\..*/');
$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
if ($client_ip != $found_ip) {
$client_ip = $found_ip;
break; } } } }
else {
$client_ip = ( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" ); }

return $client_ip; }

//levanto las los datos a traves de variables
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$asunto = $_POST['asunto'];
$consulta = $_POST['consulta'];
$ip = getRealIP();

// armo los mails con la info levantada
mail('[email protected]', 'Consulta desde el formulario Web', "* Envia: $nombre \r\n* E-mail: $email \r\n\r\n* Asunto: $asunto \r\n\r\n* Mensaje: $consulta", "From: $email \r\n\r\n ATENCION: Antes de dar respuesta verificar con el panel de control si ha confirmado la consulta desde su bandeja de correo. \r\n IP del usuario: " .$ip );

mail('[email protected]', 'Consulta desde el formulario Web', "* Envia: $nombre \r\n* E-mail: $email \r\n\r\n* Asunto: $asunto \r\n\r\n* Mensaje: $consulta", "From: $email \r\n\r\n ATENCION: Antes de dar respuesta verificar con el panel de control si ha confirmado la consulta desde su bandeja de correo. \r\n IP del usuario: " .$ip );

mail($email, 'Su consulta desde el formulario Web:', "* Envia: $nombre \r\n* E-mail: $email \r\n\r\n* Asunto: $asunto \r\n\r\n* Mensaje: $consulta", "From: $email \r\n\r\n Gracias por usar este servicio, en breve le daremos respuesta.");

// Una vez que se envia, vuelvo al formulario ancunciando que los datos se enviaron
echo "<script>history.back(alert(\"Su consulta se ha mandado y está siendo procesada, gracias.\"));</script>";
echo "<script>window.close();</script>";

?>
<body>
</body>
</html>

Saludos y gracias por vuestra ayuda.