Foros del Web » Programando para Internet » PHP »

Formulario que recoge la IP del que lo completa

Estas en el tema de Formulario que recoge la IP del que lo completa en el foro de PHP en Foros del Web. Hola a todos! Tengo un formulario armado en HTML y PHP que me envia los datos completados por el usuario por mail. Este formulario esta ...
  #1 (permalink)  
Antiguo 02/12/2009, 07:23
Avatar de Il Dody  
Fecha de Ingreso: abril-2005
Ubicación: Argentina
Mensajes: 88
Antigüedad: 19 años
Puntos: 1
Exclamación Formulario que recoge la IP del que lo completa

Hola a todos!
Tengo un formulario armado en HTML y PHP que me envia los datos completados por el usuario por mail. Este formulario esta dentro de una Intranet. Yo necesito que además recoja el numero de IP de la máquina desde donde se completo el form y se envio?

Me pueden ayudar??

Muchas gracias!!
Saludos.
__________________
IL DODY
  #2 (permalink)  
Antiguo 02/12/2009, 07:27
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Formulario que recoge la IP del que lo completa

$_SERVER['REMOTE_ADDR']; Buscate esa funcion, te devuelve la IP =)
  #3 (permalink)  
Antiguo 02/12/2009, 07:53
Avatar de Il Dody  
Fecha de Ingreso: abril-2005
Ubicación: Argentina
Mensajes: 88
Antigüedad: 19 años
Puntos: 1
Respuesta: Formulario que recoge la IP del que lo completa

Gracias Jackson666!!!

Busque la funcion pero no entiendo como agregarla a mi formulario. Soy muy novata en este tema. Me podras ayudar un poco mas.

Pego el codigo php de mi form: donde debo agregar la funcion?

<?php

$To = $_POST['para'];

//Ejemplo de como usar:
if (form_mail($To,
"Intranet | Formulario de contacto",
"Los datos introducidos en el formulario son:\n\n",
"Intranet"
)
)
echo "Gracias por su comentario y/o sugerencia.";


//Copyright &Acirc;&copy; McAnam.com
function form_mail($sPara, $sAsunto, $sTexto, $sDe){

$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";

if ($sDe)$sCabeceras = "From:".$sDe."\n"; else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0\n";

foreach ($_POST as $sNombre => $sValor)
$sTexto = $sTexto."\n".$sNombre." = ".$sValor;

foreach ($_FILES as $vAdjunto){

if ($bHayFicheros == 0){

$bHayFicheros = 1;

$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";

$sCabeceraTexto = "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";

$sTexto = $sCabeceraTexto.$sTexto;

}

if ($vAdjunto["size"] > 0){

$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";

$oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}

}

if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";

return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
}

?>

Muchas gracias!!!!
__________________
IL DODY
  #4 (permalink)  
Antiguo 02/12/2009, 07:58
 
Fecha de Ingreso: julio-2003
Ubicación: Cochabamba Bolivia
Mensajes: 300
Antigüedad: 20 años, 9 meses
Puntos: 14
Respuesta: Formulario que recoge la IP del que lo completa

Hola, es muy facil solo tienes que hacerlo asi:

Código php:
Ver original
  1. $ip=$_SERVER['REMOTE_ADDR'];

Y listo ya tienes almacenado en la variable $ip la ip del la persona que este mandando en ese momento el formulario, ojo esto lo haces al momento de recoger las variables osea en tu codigo php no en el de tu formulario ya que no es del lado del cliente y el no la ingresa.

Saludos.
__________________
:policia: Uno para todos y todos para uno.

Última edición por sander; 02/12/2009 a las 07:58 Razón: ortografia
  #5 (permalink)  
Antiguo 02/12/2009, 08:04
Avatar de Il Dody  
Fecha de Ingreso: abril-2005
Ubicación: Argentina
Mensajes: 88
Antigüedad: 19 años
Puntos: 1
Respuesta: Formulario que recoge la IP del que lo completa

Bueno, ya pegue la linea en el codigo PHP, pero yo necesito que cuando me llegue el mail con los datos este la IP de la persona que completo el formulario. Eso se puede hacer??

La funcion $ip=$_SERVER['REMOTE_ADDR']; donde guarda las direcciones IP?

Muchas gracias!!
__________________
IL DODY
  #6 (permalink)  
Antiguo 02/12/2009, 08:11
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Formulario que recoge la IP del que lo completa

jeje Dody el valor ya se guarda en $ip, si quieres comprobarlo haz un
Código PHP:
<?php echo $ip?>
.
Lo que tienes que hacer es insertar en el formulario que envias esa variable $ip.

Por ejemplo:

Hola tu ip es $ip. ¿entiendes lo que me refiero?
  #7 (permalink)  
Antiguo 02/12/2009, 08:14
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: Formulario que recoge la IP del que lo completa

Pero tienes que saber que es una variable... es donde se guarda los datos, no es una function.

Mirate un manual.

$_SERVER es un superglobal que es un array que almacena distintos datos, al poner

$ip=$_SERVER['REMOTE_ADDR'];

...guardas en la variable $ip el valor de remote_addr que es eso, la IP de ese usuario.

Pero la ip no se guarda magicamente, al teminar la ejecucion desaparece, asi que la tienes que almacenar en una base de datos (mysql normalmente) o si no tienes puedes guardarla en archivos de texto, pero eso es mas complicado...

Lo dicho, mirate un manual de PHP, no quieras que te lo den todo hecho.
  #8 (permalink)  
Antiguo 02/12/2009, 08:23
 
Fecha de Ingreso: julio-2003
Ubicación: Cochabamba Bolivia
Mensajes: 300
Antigüedad: 20 años, 9 meses
Puntos: 14
De acuerdo Respuesta: Formulario que recoge la IP del que lo completa

Bueno, bueno amigos ya no compliquen mas a la amiga ya que se nota que esta un poco desentendida en esto mira agregue ese valor a tu codigo quedaria asi:

Código php:
Ver original
  1. <?php
  2.  
  3. $To = $_POST['para'];
  4.  
  5. //Ejemplo de como usar:
  6. if (form_mail($To,
  7. "Intranet | Formulario de contacto",
  8. "Los datos introducidos en el formulario son:\n\n",
  9. "Intranet"
  10. )
  11. )
  12. echo "Gracias por su comentario y/o sugerencia.";
  13.  
  14.  
  15. //Copyright &Acirc;&copy; McAnam.com
  16. function form_mail($sPara, $sAsunto, $sTexto, $sDe){
  17.  
  18. $ip=$_SERVER['REMOTE_ADDR'];
  19. $bHayFicheros = 0;
  20. $sCabeceraTexto = "";
  21. $sAdjuntos = "";
  22.  
  23. if ($sDe)$sCabeceras = "From:".$sDe."\n"; else $sCabeceras = "";
  24. $sCabeceras .= "MIME-version: 1.0\n";
  25.  
  26. foreach ($_POST as $sNombre => $sValor)
  27. $sTexto = $sTexto."\n".$sNombre." = ".$sValor;
  28.  
  29. foreach ($_FILES as $vAdjunto){
  30.  
  31. if ($bHayFicheros == 0){
  32.  
  33. $bHayFicheros = 1;
  34.  
  35. $sCabeceras .= "Content-type: multipart/mixed;";
  36. $sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
  37.  
  38. $sCabeceraTexto = "----_Separador-de-mensajes_--\n";
  39. $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  40. $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
  41.  
  42. $sTexto = $sCabeceraTexto.$sTexto."Mail enviado desde la IP=".$ip;
  43.  
  44. }
  45.  
  46. if ($vAdjunto["size"] > 0){
  47.  
  48. $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
  49. $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
  50. $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  51. $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
  52.  
  53. $oFichero = fopen($vAdjunto["tmp_name"], 'r');
  54. $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
  55. $sAdjuntos .= chunk_split(base64_encode($sContenido));
  56. fclose($oFichero);
  57. }
  58.  
  59. }
  60.  
  61. if ($bHayFicheros)
  62. $sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
  63.  
  64. return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
  65. }
  66.  
  67. ?>

Las agregue en las lineas 18 y 42.

Pruebalo y luego nos cuentas como te fue, y te recomiendo que te leas un manual de php ya que estas un poco perdida.

Saludos.
__________________
:policia: Uno para todos y todos para uno.

Última edición por sander; 02/12/2009 a las 08:32 Razón: ortografia
  #9 (permalink)  
Antiguo 02/12/2009, 08:30
Avatar de Il Dody  
Fecha de Ingreso: abril-2005
Ubicación: Argentina
Mensajes: 88
Antigüedad: 19 años
Puntos: 1
Hola!!!! Les agradezco mucho la ayuda!!

Si, realmente no se mucho de PHP y no llego a tener los conceptos basicos para poder programar. Pero necesito hacer funcionar este formulario y ya busque muchisimo en la web y no pude sacar nada en limpio. Por eso les pido ayuda a Uds. No es que quiera todo hecho, es que al no entender lo basico se me hace muy dificil insertar codigo. Y mirando un manual de PHP me puede llevar varias semanas armar algo.

Gracias.
Saludos.

MUchas gracias Sandler!!!!! Por tu ayuda y comprension!!!!

Lo probé pero en el correo que llega no aparece el numero de IP. Estare haciendo algo mal??
__________________
IL DODY

Última edición por GatorV; 02/12/2009 a las 10:38
  #10 (permalink)  
Antiguo 02/12/2009, 08:44
 
Fecha de Ingreso: julio-2003
Ubicación: Cochabamba Bolivia
Mensajes: 300
Antigüedad: 20 años, 9 meses
Puntos: 14
Respuesta: Formulario que recoge la IP del que lo completa

Dime te sale este texto al final del contenido de tu correo?

"Mail enviado desde la IP="

Fijate si te sale ese texto aunque no salga el numero y luego me avisas.

Saludos.
__________________
:policia: Uno para todos y todos para uno.
  #11 (permalink)  
Antiguo 02/12/2009, 09:02
Avatar de Il Dody  
Fecha de Ingreso: abril-2005
Ubicación: Argentina
Mensajes: 88
Antigüedad: 19 años
Puntos: 1
Respuesta: Formulario que recoge la IP del que lo completa

No sale el texto: "Mail enviado desde la IP="

Gracias!
__________________
IL DODY
  #12 (permalink)  
Antiguo 02/12/2009, 09:19
 
Fecha de Ingreso: julio-2003
Ubicación: Cochabamba Bolivia
Mensajes: 300
Antigüedad: 20 años, 9 meses
Puntos: 14
Respuesta: Formulario que recoge la IP del que lo completa

Bueno a ver empezemo con esto:

Cuando mandas un mail te sale el texto que mandes osea digamos "hola quiero ver si llega este email"o algo asi.

Borra todo tu codigo (solo para probar no vayas a perder tu codigo) y pon solo esto:

Código php:
Ver original
  1. <?php echo $_SERVER['REMOTE_ADDR']; ?>

Ejecuta y me avisas si te sale algun numero.

Leendo tu codigo he pescado un error al final de la linea 49 por lo cual deberia salirte error ya que tiene dos ";", pero por lo que veo si te esta funcioando igual.

Dime si no te sale algun error.

Saludos.
__________________
:policia: Uno para todos y todos para uno.
  #13 (permalink)  
Antiguo 02/12/2009, 09:34
Avatar de Il Dody  
Fecha de Ingreso: abril-2005
Ubicación: Argentina
Mensajes: 88
Antigüedad: 19 años
Puntos: 1
Respuesta: Formulario que recoge la IP del que lo completa

Hola! lo probé y envie el formulario;en el lugar donde deberia estar el txt de agradecimiento aparece el numero de mi IP! Hasta ahora voy bien!!! :)

Omití avisarte que no recibi el correo con los datos que complete del form! :(
__________________
IL DODY
  #14 (permalink)  
Antiguo 02/12/2009, 09:45
 
Fecha de Ingreso: julio-2003
Ubicación: Cochabamba Bolivia
Mensajes: 300
Antigüedad: 20 años, 9 meses
Puntos: 14
De acuerdo Respuesta: Formulario que recoge la IP del que lo completa

Bueno vamos bien, modifique tu codigo pruebalo ahora y me avisas como te fue:

Código php:
Ver original
  1. <?php
  2.  
  3. $To = $_POST['para'];
  4.  
  5. //Ejemplo de como usar:
  6. if (form_mail($To,
  7. "Intranet | Formulario de contacto",
  8. "Los datos introducidos en el formulario son:\n\n",
  9. "Intranet"
  10. )
  11. )
  12. echo "Gracias por su comentario y/o sugerencia.";
  13.  
  14.  
  15. //Copyright &Acirc;&copy; McAnam.com
  16. function form_mail($sPara, $sAsunto, $sTexto, $sDe){
  17.  
  18. $ip=$_SERVER['REMOTE_ADDR'];
  19. $bHayFicheros = 0;
  20. $sCabeceraTexto = "";
  21. $sAdjuntos = "";
  22.  
  23. if ($sDe)$sCabeceras = "From:".$sDe."\n"; else $sCabeceras = "";
  24. $sCabeceras .= "MIME-version: 1.0\n";
  25.  
  26. foreach ($_POST as $sNombre => $sValor)
  27. $sTexto = $sTexto."\n".$sNombre." = ".$sValor;
  28.  
  29. foreach ($_FILES as $vAdjunto){
  30.  
  31. if ($bHayFicheros == 0){
  32.  
  33. $bHayFicheros = 1;
  34.  
  35. $sCabeceras .= "Content-type: multipart/mixed;";
  36. $sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
  37.  
  38. $sCabeceraTexto = "----_Separador-de-mensajes_--\n";
  39. $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  40. $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
  41.  
  42. $sTexto = $sCabeceraTexto.$sTexto;
  43.  
  44. }
  45.  
  46. if ($vAdjunto["size"] > 0){
  47.  
  48. $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
  49. $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";
  50. $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  51. $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
  52.  
  53. $oFichero = fopen($vAdjunto["tmp_name"], 'r');
  54. $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
  55. $sAdjuntos .= chunk_split(base64_encode($sContenido));
  56. fclose($oFichero);
  57. }
  58.  
  59. }
  60.  
  61. if ($bHayFicheros)
  62. $sTexto .= "Mail enviado desde la IP=".$ip.$sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
  63.  
  64. return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
  65. }
  66.  
  67. ?>

Copialo y pegalo tal como esta.

Saludos.
__________________
:policia: Uno para todos y todos para uno.
  #15 (permalink)  
Antiguo 02/12/2009, 09:51
Avatar de Il Dody  
Fecha de Ingreso: abril-2005
Ubicación: Argentina
Mensajes: 88
Antigüedad: 19 años
Puntos: 1
Respuesta: Formulario que recoge la IP del que lo completa

Hola Sander! (vuelvo a agrdecerte toda tu ayuda!!!!)

te cuento que ahora me llega el mail, pero en el contenido solo llega esto:
----
Los datos introducidos en el formulario son:

Nombre = 2
Apellido = 2
Sector_en_el_que_trabaja = 2
para = [email protected]
Comentarios = 2
-----

En el cuerpo tendria que llegar el numero de IP?
Gracias!!
__________________
IL DODY
  #16 (permalink)  
Antiguo 02/12/2009, 10:54
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Formulario que recoge la IP del que lo completa

Te dejo una funcion para obtener la IP de kien envia un formulario:

Código PHP:
// Funcion obtener IP de quien envia correo

function getIP() {
  if (isSet(
$_SERVER)) {
    if (isSet(
$_SERVER["HTTP_X_FORWARDED_FOR"])) {
      
$realip $_SERVER["HTTP_X_FORWARDED_FOR"];
    } elseif (isSet(
$_SERVER["HTTP_CLIENT_IP"])) {
      
$realip $_SERVER["HTTP_CLIENT_IP"];
    } else {
      
$realip $_SERVER["REMOTE_ADDR"];
    }
  } else {
    if ( 
getenv"HTTP_X_FORWARDED_FOR" ) ) {
      
$realip getenv"HTTP_X_FORWARDED_FOR" );
    } elseif ( 
getenv"HTTP_CLIENT_IP" ) ) {
      
$realip getenv"HTTP_CLIENT_IP" );
    } else {
      
$realip getenv"REMOTE_ADDR" );
    }
  }
  return 
$realip;
}

$ip   getIP();
$host gethostbyaddr($_SERVER['REMOTE_ADDR']); 
Y a esta la llamas asi:
Código PHP:
echo "<b>Email IP:</b><br> ".$ip."<br>".$host."; 
Espero te sirva
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #17 (permalink)  
Antiguo 02/12/2009, 13:18
Avatar de Il Dody  
Fecha de Ingreso: abril-2005
Ubicación: Argentina
Mensajes: 88
Antigüedad: 19 años
Puntos: 1
Respuesta: Formulario que recoge la IP del que lo completa

Hola JessicaTJ!!! Muchas gracias por tu ayuda!!!

Lo he probado y no me funciona! Quizas yo no este colocando bien el codigo, o sea, en el lugar preciso.

La primera parte la coloco luego de
<?php

echo "<b>Email IP:</b><br> ".$ip."<br>".$host.";
esto donde va????

Muchas gracias.
Saludos!!!
__________________
IL DODY
  #18 (permalink)  
Antiguo 02/12/2009, 13:50
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Formulario que recoge la IP del que lo completa

Cita:
Iniciado por Il Dody Ver Mensaje
<?php
echo "<b>Email IP:</b><br> ".$ip."<br>".$host.";
esto donde va????

Muchas gracias.
Saludos!!!
Eso lo colocas en el archivo que envia y procesa el formulario, la funcion la adjuntas tambien en dicho archivo.
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶

Última edición por JessicaTJ; 08/12/2009 a las 15:27
  #19 (permalink)  
Antiguo 04/12/2009, 05:42
Avatar de Il Dody  
Fecha de Ingreso: abril-2005
Ubicación: Argentina
Mensajes: 88
Antigüedad: 19 años
Puntos: 1
Respuesta: Formulario que recoge la IP del que lo completa

Muchas gracias a TODOS por el aporte!!!
Saludos y felices fiestas!
__________________
IL DODY
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 04:43.