Foros del Web » Programando para Internet » PHP »

Obterner un dato unico

Estas en el tema de Obterner un dato unico en el foro de PHP en Foros del Web. Hola, me gustaría saber si existe alguna forma de obtener un dato que en cada PC sea único, como la IP publica, pero que no ...
  #1 (permalink)  
Antiguo 22/08/2012, 07:13
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Obterner un dato unico

Hola, me gustaría saber si existe alguna forma de obtener un dato que en cada PC sea único, como la IP publica, pero que no varíe nunca.

La IP publica va variando continuamente.

La idea es hacer una web donde solo se pueda registrar una vez, y aunque cambie la IP, o el user quiera poner un nick diferente o un correo diferente al que tiene cuando se registro por primera vez.

No me vale $_server[REMOTE_ADDR]ya que la IP publica cambia, pero si me valdría (si existe) la localización del PC, la MAC (aun que esto creo que no es posible) o algún dato o grupo de datos que se pueda capturar y saber si ya se registro desde ese PC en otra ocasión.

Y del mysql, no hay problema, una vez tenga ese dato único, la consulta irá a ese dato.
  #2 (permalink)  
Antiguo 22/08/2012, 07:23
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Obterner un dato unico

Afortunadamente no hay forma de acceder a esos datos desde el propio navegador por cuestiones de seguridad, lo que mas puedes llegar a obtener es la IP, navegador, lenguaje, sistema operativo, y si analizas la IP país desde el que se accede, en Internet Explorer 6 y anteriores era posible obtener el nombre del PC y si no mal recuerdo la MAC, pero desde la versión 7 comenzó a mejorar la seguridad y anonimato en el navegador...

Si deseas obtener esos datos no te quedará mas opción que acceder a ellos a partir de un applet de java o un activex en IE, de otra forma no es posible...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 22/08/2012, 08:01
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

Código PHP:
Ver original
  1. <?php
  2. $meta = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip=$_SERVER[REMOTE_ADDR]'));
  3.  
  4. echo $meta['geoplugin_latitude'];
  5. echo "<br>";
  6. echo $meta['geoplugin_longitude'];
  7. ?>
INSERTAR esos datos y si existen esas misma latitud y la misma longitud te dice tu ya te as registrado
  #4 (permalink)  
Antiguo 22/08/2012, 08:09
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

Cita:
Iniciado por PepeF Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2. $meta = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip=$_SERVER[REMOTE_ADDR]'));
  3.  
  4. echo $meta['geoplugin_latitude'];
  5. echo "<br>";
  6. echo $meta['geoplugin_longitude'];
  7. ?>
INSERTAR esos datos y si existen esas misma latitud y la misma longitud te dice tu ya te as registrado
OK eso me podria valer.
Aunque no se 100% fiable, por lo menos puede poner un poco mas dificil las cosas a quien intente registrarse dos veces.

Lo malo puede ser que en un bloque de pisos el de primero A y el del segundo A se quieran registrar. (Existe latitude y longitude, ¿existe "altitude"? Es broma.)

---Edito el post----

He probado el codigo y lo que localiza el geoplugin es la ip de mi servidor que esta en una ciudad difernte a la mia.
He estado mirando y mas o menos todos los localizadores de IP's hacen lo mismo.
No se acercan a mi posicion de de casualidad.

Última edición por nanduky; 22/08/2012 a las 08:16 Razón: prueba fallida
  #5 (permalink)  
Antiguo 22/08/2012, 08:31
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

Haber ese script coje tu ip y desde tu ip la calcula lo que pasa que si estas en localhost tu ip es ::1 entonces no puede localizar nada porque eso no es una ip.

Si no estas en localhost publica aqui la direccion de tu web y yo miro si me funciona o no.
  #6 (permalink)  
Antiguo 22/08/2012, 08:39
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Obterner un dato unico

A ver, no tienen en cuenta una cosa, TODOS los servicios de geolocalización NO SON 100% exactos, porque hay varios factores

1) No siempre sus bases de datos son actualizadas
2) Puede estar detrás de un proxy, por lo tanto dará la geolocalización del proxy, no del cliente
3) Igual que la anterior puede estar detrás de una VPN

Por lo tanto, nunca debes de confiar la geolocalización por IP al 100% y menos como para lo que pretende el amigo....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 22/08/2012, 08:51
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

Pero eso es mas seguro para que no se registren 2 vecez la misma persona que no tener nada eso por lo menos en un 50% te salva ahora si no pones nada no te salva nada.
  #8 (permalink)  
Antiguo 22/08/2012, 10:46
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

Esta es la web con tu codigo tal cual. dime si la localización es correcta:

[URL="http://www.raziel2008.com/pruebaparaborrar.php"]http://www.raziel2008.com/pruebaparaborrar.php[/URL]

no me deja ponerlo como link

Última edición por nanduky; 22/08/2012 a las 10:50 Razón: poner link
  #9 (permalink)  
Antiguo 22/08/2012, 10:57
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

Cita:
Iniciado por nanduky Ver Mensaje
Esta es la web con tu codigo tal cual. dime si la localización es correcta:

[URL="http://www.raziel2008.com/pruebaparaborrar.php"]http://www.raziel2008.com/pruebaparaborrar.php[/URL]

no me deja ponerlo como link
Casi faltaba poco pero no.

Pero bueno da igual no? porque en mi pc siempre sera ese numero entonces ya no podre registrarme otra vez no?
  #10 (permalink)  
Antiguo 22/08/2012, 11:02
 
Fecha de Ingreso: abril-2010
Mensajes: 31
Antigüedad: 14 años
Puntos: 1
Respuesta: Obterner un dato unico

¿Y si usas algún dato, como número de identificación (cédula le llamamos en Costa Rica), o tarjeta de crédito del usuario?

Porque aún si obtienes un dato único de la PC, nada te asegura que dos personas no estén compartiendo la misma PC. ¿Qué pasa si alguien se quiere registrar desde un cyber, por ejemplo?
  #11 (permalink)  
Antiguo 22/08/2012, 11:02
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

¿No tendras un vecino/a arriba o abajo?

Ya seria lo maximo para probar si cambia la localización.

Pues muchas gracias por la ayuda.
  #12 (permalink)  
Antiguo 22/08/2012, 11:05
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

Cita:
Iniciado por Mosazu Ver Mensaje
¿Y si usas algún dato, como número de identificación (cédula le llamamos en Costa Rica), o tarjeta de crédito del usuario?

Porque aún si obtienes un dato único de la PC, nada te asegura que dos personas no estén compartiendo la misma PC. ¿Qué pasa si alguien se quiere registrar desde un cyber, por ejemplo?
No quiero pedir datos personales. No quiero problemas lo de protección de datos.
No tengo mucha idea de seguridad en mysql.
solo necesito un nick, un pass y un correo.
  #13 (permalink)  
Antiguo 22/08/2012, 11:13
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

Esque esto es muy dificl yo no se como lo hacen las paginas.

Tu conoce una pagina que tenga este sistema¿?
  #14 (permalink)  
Antiguo 22/08/2012, 11:24
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

La verdad es que no, si te quieres registrar varias veces en una pagina, normalmente no hay muchos impedimentos, otra cosa que con el tiempo y si vas entrando con los usuarios, que se den cuenta y te baneen.

Pero que no te dejen poniendo correos y usuario diferentes, no he visto ninguna.
  #15 (permalink)  
Antiguo 22/08/2012, 11:30
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obterner un dato unico

Cita:
Iniciado por nanduky Ver Mensaje
No quiero pedir datos personales. No quiero problemas lo de protección de datos.
No tengo mucha idea de seguridad en mysql.
solo necesito un nick, un pass y un correo.
no quieres pedir datos personales por la proteccion de datos ? y el correo no es personal ?? con esos datos nick pass correo ya deberas cumplir con la LOPD

el unico dato unico es la mac que yo sepa y que pasa si un amigo se intenta registrarse desde el mismo ordenador que su amigo , no le vas a dejar registrarse???
  #16 (permalink)  
Antiguo 22/08/2012, 11:36
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Obterner un dato unico

pero segun yo no puedes ver la mac adress con php
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #17 (permalink)  
Antiguo 22/08/2012, 11:37
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

Por el nick y el pass no creo que alla problemas, pueden ser inventados, lo unico el correo, y no pido la contraseña, solo un correo valido para mandarles el codigo de activación, para que no se registren con un correo falso y llenen la base de datos de datos inutiles.
  #18 (permalink)  
Antiguo 22/08/2012, 11:37
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obterner un dato unico

yo no he dicho que con php se pueda ver la mac , he dicho que ese es el uncio dato unico que existe na mas ....

da igual lo que hagas con ese correo al pedirlo ya debes cumplir la lopd si no leete bien todo la documentacion , alomejor lo haces y no pasa nada pero si un usuario te denuncia y no cumples con la lopd cuidado....

cumplir con la lopd no tiene ningun coste , es totalmente gratuito
  #19 (permalink)  
Antiguo 22/08/2012, 11:40
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

No seria mejor que hicieras un sistema de activacion de correo?

Hay mucha jente que pone correos falso y cuando pone activa tu correo para no dar el suyo propio se van de la web.
  #20 (permalink)  
Antiguo 22/08/2012, 11:45
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Obterner un dato unico

Cita:
Iniciado por webankenovi Ver Mensaje
yo no he dicho que con php se pueda ver la mac , he dicho que ese es el uncio dato unico que existe na mas ....

da igual lo que hagas con ese correo al pedirlo ya debes cumplir la lopd si no leete bien todo la documentacion , alomejor lo haces y no pasa nada pero si un usuario te denuncia y no cumples con la lopd cuidado....

cumplir con la lopd no tiene ningun coste , es totalmente gratuito
alguien dijo que tu dijiste's' que se podia ver la mac adress con php?

que tal activacion por correo con captcha?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #21 (permalink)  
Antiguo 22/08/2012, 11:46
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

Lo de la LOPD lo tengo que mirar, por que la verdad que ahora me estoy enterando y no se nada del tema, y si es gratis, pues mejor.

Y lo de activación del correo ya está, y si no lo activas antes de 3 horas, se borran todos los datos de registro de la base de datos

he visto que ya hay algo por aqui:

http://www.forosdelweb.com/f83/pasos-basicos-para-cumplir-con-lopd-685037/
  #22 (permalink)  
Antiguo 22/08/2012, 11:47
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

como as echo lo de las 3 horas?
  #23 (permalink)  
Antiguo 22/08/2012, 11:50
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obterner un dato unico

Cita:
Iniciado por PepeF Ver Mensaje
como as echo lo de las 3 horas?
con una comprobacion registrando la hora en el momento de mandarlo y comprobando cuando el usuario lo pulsa y llega a la pagina supongo

LOPD - http://www.agpd.es/portalwebAGPD/jor...ides-idphp.php
  #24 (permalink)  
Antiguo 22/08/2012, 13:01
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

Perdón, no son 3 horas, son 2, pero para el caso, es lo mismo.

En la base de datos se necesita una tabla (tablaUser) con los campos nick, pass y email (yo en mi caso me gusta guardar el instante "time()")

Y otra tabla (tablaValidar) con el nick, pass, email, aleatorio y instante.

en php:

pagina01.php
un formulario con los datos de nick, pass y email (y cada uno lo que necesite)
"no creo que sea necesario poner el codigo de un form"

pagina02.php
Código PHP:
Ver original
  1. //capturar los datos del formulario en variables
  2. $nick = $_POST['nick'];
  3. $pass = $_POST['pass'];
  4. $email = $_POST['email'];
  5.  
  6. //los datos para conectar
  7. $host = "localhost";
  8. $user = "nombreUsiario";
  9. $passw = "123456";
  10. $dataBase = "baseDeDatosUsada",
  11. $tablaValidar = "tablaValidar";
  12. $tablaUser = "tablaUser";
  13.  
  14. //conectar con el servidor MySQL
  15.     $conectar = @mysql_connect($host,$user,$passw)
  16.         or die('No se puede conectar con el servidor);
  17.  
  18. //conectar con la base de datos que queremos usar
  19.     $resultado = @mysql_select_db($dataBase)
  20.         or die('no se puede conectar con la base de datos
  21.  
  22. //aqui pongo el codigo que uso para boorar los datos si no se registra antes de las dos horas
  23. //realmente quien los borra despues las dos horas es el primer usuario que entra a la web,
  24. //que boorar todos las registros caducados.
  25.  
  26. //cojer el tiempo en que caduca el registro
  27. $regCaducado = time() - 7200;
  28. //borrar los registros si no se han confirmado antes de 2h
  29. $caducado = @mysql_query("DELETE FROM $tablaValidar WHERE instante <='".$regCaducado."'");
  30.  
  31. //me salto todos los pasos de comprobar que un usuario a rellenado los campos obligatorios del form,
  32. //si ya esta registrado con ese correo o si ya existe el nombre de usuario etc.
  33.  
  34. //para el problema con las ñ y los acentos yo uso en en mysql y en todas las paginas
  35. //que recojan datos de los formularios
  36. mysql_query ("SET NAMES 'utf8'");
  37.  
  38. //capturamos el instante,
  39. $instante = time();
  40. //crear un numero aleatorio de 10 digitos
  41. $numAleatorio = rand(0000000000, 9999999999);
  42. //tambien se puede usar MD5()
  43.  
  44. //consulta para la tabla de registros
  45. $consultaRegistro_db = "INSERT INTO $tablaValidar
  46.                     (nick, pass, email, aleatorio, instante)
  47.                     VALUES
  48.                     (\"$nick\", \"$pass\", \"$email\", \"$numAleatorio\", \"$instante\")
  49.                     ";
  50.  
  51. //mandar la consulta a la base de datos
  52. $enviarConsultaRegistro_db = @mysql_query($consultaRegistro_db) or die("No se pueden guardar los registros ");
  53.  
  54. //ahora hay que mandar un correo al usuario que se registra
  55.  
  56. //enviar un correo para que confirme el email
  57. $cabecera = "Content-type: text/html; charset=utf-8\n";
  58. $cabecera .= "MIME-Version: 1.0\n";
  59. $cabecera .= "From: [email protected]\n";
  60. $cabecera .= "Reply-To: [email protected]\n\n";
  61.  
  62. $mensaje = "Recibes este mensaje por que te has registrado donde se.<br />\n";
  63. $mensaje .= "Si no te has registrado, borra este correo<br /><br />\n";
  64. $mensaje .= "Estos son tus datos:<br />";
  65. $mensaje .= "Nombre: $nick<br />";
  66. $mensaje .= "Correo: $email<br /><br />";
  67. $mensaje .= "Confirma tu registro desde este enlace:<br />";
  68. $mensaje .= "<a href='http://www.tuweb.com/pagina03.php?codigo=$numAleatorio'>http://www.tuweb.com/pagina03.php?codigo=$numAleatorio</a>";
  69.  
  70. $para = $email;
  71. $sujeto = "Mensaje de confirmacion de registro";
  72.  
  73. @mail($para, $sujeto, $mensaje, $cabecera) or die ("No se ha podido registrar correctamente ");

pagina03.php
Código PHP:
Ver original
  1. //recojer el numero aleatrorio de la URL
  2. $numeroAleatorio = $_GET['codigo'];
  3.  
  4. //conectar con la base de datos
  5. //no voy a poner otra vez el codigo por que es lo mismo que enpagina02.php
  6. mysql_query ("SET NAMES 'utf8'");
  7.  
  8. //recuperar los datos del usuario
  9. //se crea la consulta y se mete en una variable
  10. $recuperar = @mysql_query("SELECT id, nick, pass, email, instante FROM $tablaValidar WHERE  aleatorio = '".$numeroAleatorio."'") or die("No se ha podido mandar la consulta ");
  11. //se meten los datos en un array
  12. $datosArray = mysql_fetch_array($recuperar,MYSQL_ASSOC);
  13.  
  14. $nick = $datosArray['nick'];
  15. $pass = $datosArray['pass'];
  16. $email = $datosArray['email'];
  17. $instante = $datosArray['instante'];
  18.  
  19. //si hay un registro que guardar lo guardamos y borramos los datos del registro
  20.  
  21. @mysql_query("DELETE FROM $tablaValidar WHERE aleatorio = '".$numeroAleatorio."'LIMIT 1") or die("no borrado ");
  22.  
  23.  
  24. //una variable para guardar la consulta de introducir los datos en la tabla de la database
  25. $consultaUser_db = "INSERT INTO $tablaUser
  26.                     ( nick, pass, email, instante)
  27.                     VALUES
  28.                     ( \"$nick\", \"$pass\", \"$email\", \"$instante\")
  29.                     ";
  30.  
  31. $enviarConsultaUser_db = @mysql_query($consultaUser_db) or die("Sesion caducada ");

Y creo que ya está todo lo necesario.
espero que este claro.

Última edición por nanduky; 22/08/2012 a las 13:10
  #25 (permalink)  
Antiguo 22/08/2012, 13:26
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

solo necesita esto:

$regCaducado = time() - 7200;
  #26 (permalink)  
Antiguo 22/08/2012, 14:02
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

Vaya
  #27 (permalink)  
Antiguo 22/08/2012, 14:51
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

jajaja pero bueno gracias de todas manera.
  #28 (permalink)  
Antiguo 23/08/2012, 05:09
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obterner un dato unico

Cita:
Iniciado por PepeF Ver Mensaje
solo necesita esto:

$regCaducado = time() - 7200;

y eso ?? en la linea 27 de su script si miras bien veras $regCaducado = time() - 7200; no entiendo tu respuesta la verdad
  #29 (permalink)  
Antiguo 23/08/2012, 07:21
Avatar de nanduky  
Fecha de Ingreso: octubre-2008
Ubicación: Corbera del Llobregat
Mensajes: 33
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Obterner un dato unico

Creo que se refiere a que no necesitaba todo el codigo, solo necesitaba lo de la linea 27
  #30 (permalink)  
Antiguo 23/08/2012, 12:00
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 8 meses
Puntos: 27
Respuesta: Obterner un dato unico

Si eso mismo es

Etiquetas: dato, mysql, registro, unicos
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:42.