Foros del Web » Programando para Internet » PHP »

mailer con HTTP_SERVER_VARS['HTTP_REFERER']

Estas en el tema de mailer con HTTP_SERVER_VARS['HTTP_REFERER'] en el foro de PHP en Foros del Web. Hola gente ! una ves mas recurro en busca de una mano. Les cuento, resulta que estoy modificando un pequeño script, que envia un mail ...
  #1 (permalink)  
Antiguo 05/10/2004, 00:31
 
Fecha de Ingreso: mayo-2003
Ubicación: Mar del Plata
Mensajes: 373
Antigüedad: 14 años, 7 meses
Puntos: 0
mailer con HTTP_SERVER_VARS['HTTP_REFERER']

Hola gente ! una ves mas recurro en busca de una mano.
Les cuento, resulta que estoy modificando un pequeño script, que envia un mail a mi casilla. Este cumple la siguiente funcion el usuario inserta su nombre, y le da "enviar", luego de procesar el script llega a mi casilla un mail diciendome, su numero de ip, su puerto y su referido (referer), El script anda a la perfeccion pero el unico problema es que para mi es importante saber el referido, pero el referido que me da por resultado es la direccion de el formulario en html, yo nesesitaria saber el referido anterior a ese. No se si me explico, supongamos que el usuario viene de www.google.com.ar por ejemplo y llega a www.miserver.com/mail/index.html, y completa el formulario, el referido que me llega al mail es www.miserver.com/mail/index.html y no www.google.com.ar que es realmente lo que nesesito.
Bueno aca les dejo el codigode los dos archivos que hay(un html y un php)

mail.php
Código:
<?php 
  ## VARIABLES
  ## Dirección de tu correo
$micorreo="[email protected]"; 
  ## Asunto axiliar si no lo introduce un asunto que identifique la procedencia del correo.
$xasunto="$nombre hiso click en el baner";
 ## Pagina final de gracias. Si el formulario no incluye este campo oculto del formulario. 
$gracias_defecto="http://www.miserver.com.ar"; 
  ## Página final si se produce un error al enviar el correo
$error_correo="http://confirmar.miserver.com.ar/error.htm"; 
  ## variable auxiliar, que produce un salto de línea
$retorno="\r\n";

  ## CABECERAS DE CORREO
  ## Diversas cabeceras para el correo. Luego, lo usaremos para enviar el correo.
  ## $nombre $correo son variables que contienen los valores de: nombre y correo del formulario.
$headers = "MIME-Version: 1.0\r\n" ;
  ## campos y variables nombre, $nombre y correo $correo. No pueden ser modificados
  ## Han de mantenerse en el formulario para utilizar el mismo script con distintos formularios 
$headers .= "From: $nombre<$correo>\r\n";
  ## Responder al correo
$headers .= "Reply-To: $correo<$correo>\r\n";
  ## Otras cabeceras que pueden ponerse si ocurren problemas u omitirse si todo va bien.
  ## Obligatoriamente, cada elemento de la cabecera termina en \r\n Nueva línea.
  ## $headers .= "X-Mailer: PHP/" . phpversion();
  ## $headers .= "X-Sender: $correo<$correo>\r\n";
  ## $headers .= "Return-Path: <$correo>\r\n";
  ## $headers .= "Cc: $nombre<$correo>\r\n"; 

  ## CUERPO DEL MENSAJE INICIO
  ## Obtención de la IP del visitante
  ## Empezamos a contruir el mensaje final, sumando los elementos del mensaje
$mfinal.="Datos de $nombre :\r\n";
$mfinal.="IP: ";
  ## Guardamos la IP del visitante
$mfinal.=$HTTP_SERVER_VARS['REMOTE_ADDR'];
$mfinal.="\r\n";
$mfinal.="Puerto: ";
$mfinal.=$HTTP_SERVER_VARS['REMOTE_PORT'];
$mfinal.="\r\n";
$mfinal.="Referido desde la pagina: ";
$mfinal.=$HTTP_SERVER_VARS['HTTP_REFERER'];
$mfinal.="  ";
  ## Y el puerto del usuario

  ## añadimos dos retornos de línea
$mfinal.=$retorno;
$mfinal.=$retorno; 

  ## CUERPO DEL MENSAJE AÑADIDO DE CAMPOS AL MENSAJE
  ## $vareliminar Número de botones del formulario y campos ocultos (últimos elementos) + 1 --> en este caso (1+1)
  ## Si queremos eliminar del mensaje el campo oculto de la página final $vareliminar=3;
$vareliminar=2;
  ## Almacenar en un array los nombres de variables del formulario enviado
$claves_array=array_keys ($HTTP_GET_VARS);
  ## de i=0 hasta el número de campos del formulario, - variables a eliminar
for ($i=0;$i<=(count($HTTP_GET_VARS)-$vareliminar);$i++){
  ## Obtenemos el nombre de cada campo en concreto
$nombrevar=$claves_array[$i];
  ## Sumamos el nombre de campo de formulario al mensaje final
$mfinal .= $nombrevar;
$mfinal .= ": ";
  ## Y añadimos el contenido que haya introducido nuestro visitante
$mfinal .= $HTTP_GET_VARS[$nombrevar]; 
  ## Separamos cada campo por dos retornos, podemos eliminar uno
$mfinal .= $retorno;
$mfinal .= $retorno;
}
  ## Si no hay asunto, o no contiene nada, le damos al email un asunto defecto
if (is_null($asunto)){ $asunto2="$nombre hiso click en el baner";}
  ## Si hay asunto, añadimos un prefijo propio para identificar que es correo desde la web.
else { $asunto2 ="Asunto-> $asunto"; }

  ## ENVÍO DEL CORREO
  ## Para finalizar, envíamos el correo, y comprobamos el resultado
$resultado=mail($micorreo, $asunto2, $mfinal, $headers);
  ## Si quisiésemos enviar un mensaje de acuso de recibo, añadimos esta línea, sabiendo que:
  ## tenemos que asignar estas variables $asuntoreply (Asunto), $mreply (mensaje), $headers2(mensaje)
  ## de modo similar a como hemos construido las variables anteriores
  ## $resultado2=mail($correo, $asuntoreply, $mreply, $headers2);

  ## COMPROBACIÓN
  ## Si no se ha podido enviar el correo.
if ($resultado ==true) 
{
  ## Si no hay página de gracias carga las página de defecto
if (is_null($pagina_gracias)){ header( "Location: $gracias_defecto" );}
else{ 
  ## Si hay página de gracias, cárgala
header( "Location: $pagina_gracias" );
}
}
  ## Si se ha producido un error, advierte al usuario
else header( "Location: $error_correo" );
?>

index.html

Código:
<FORM name = "formulario" ACTION="mail.php" METHOD="POST" onSubmit="return validate1(this)">


<INPUT TYPE="hidden" NAME="correo" VALUE="[email protected]">
<p align="center">
<BR>

<FONT color="#000000" size="2"><b>Nombre</b></FONT>
<INPUT TYPE="text" NAME="nombre" size="40">
<BR>


<BR>

<INPUT TYPE="hidden" NAME="pagina_gracias" VALUE="http://confirmar.miserver.com.ar/agregado_satisfactorio.htm">

<INPUT name="submit" TYPE="submit" VALUE="Enviar">

</FORM>
  #2 (permalink)  
Antiguo 05/10/2004, 01:31
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Sencillo, crea un campo oculto en el formulario que lo llenas con el valor del referer al mostrar el formulario.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 05/10/2004, 11:51
 
Fecha de Ingreso: mayo-2003
Ubicación: Mar del Plata
Mensajes: 373
Antigüedad: 14 años, 7 meses
Puntos: 0
y eso ? :S como lo puedo hacer ?
perdon por mi ignorancia .. no soy muy bueno en esto :S
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 19:10.