Foros del Web » Programando para Internet » PHP »

Como funciona el reconocimiento de IP

Estas en el tema de Como funciona el reconocimiento de IP en el foro de PHP en Foros del Web. La verdad es que no se si sea tema de PHP, pero resulta que implemente una sistema de votacion en una pagina web que estamos ...
  #1 (permalink)  
Antiguo 19/08/2003, 16:48
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 11 meses
Puntos: 0
Como funciona el reconocimiento de IP

La verdad es que no se si sea tema de PHP, pero resulta que implemente una sistema de votacion en una pagina web que estamos realizando, la votacion esta hecha para que se vote solamente una vez y esto efectivamente funciona. el problema es en si al momento de estar en la red, pues realizamos las pruebas pertinentes y yo desde mi maquina realize la primer votacion, al intentar hacerlo a traves de otras maquinas de la oficina no se pudo, me imagino que esto es porque tenemos una maquina que es la que distribuye la conexion a internet a las demas.

Tenemos conexion a internet todo el dia y quien nos distribuye la señal, es decir el software es el Winroute Pro.

Mi pregunta es, hay alguna forma de evitar por medio del PHP que esto pase. Es decir que al estar en una red sea solamente una maquina la que pueda votar. Logicamente evitando que esa misma maquina vote varias veces.

Saludos, y espero me puedan ayudar.
  #2 (permalink)  
Antiguo 19/08/2003, 16:54
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
pilla la ip del user y metele una fecha... osea, hasta que no llegue a mañana a las 10:00 am no puede volver a votar.....


mira esto es un ejemplo de lo que yo uso...claro esta que es un poco chungo, lo tengo que pasar a una funcion o un casse, pero te puede servir de ejemplo....

Código PHP:

<?php
if ($_GET['accion']=="votar"){
require (
"aut_config.inc.php");
include(
"counter.inc.php");
$ip=$REMOTE_ADDR;
//··············································································COMPROBAMOS LA IP SI ESTA
$id_mod_nivel$_GET['id'];
$usuario_consultaip2 mysql_query("SELECT $selecttblONLINE FROM $sql_tbl_votos WHERE idtop='$id'") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consultaip2)) {
$ipcompruba"$resultados[ip]";
if (
$ip == $ipcompruba) {
//··············································································SI ESTA LA IP EN LA BASE DE DATOS
$ultfecha "$resultados[tid]";
if (
$fecha_votos $ultfecha) {
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE id='$id' AND idtop=$id") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_close();
} else {
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE id='$id' AND idtop=$id") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_free_result($usuario_consultaip);
mysql_close();
} else {
mysql_query("DELETE FROM $sql_tbl_votos WHERE tid < '$fecha_votos'") or die($Err01);
mysql_close();
}
}
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$contador "$resultados[votos]";
$nweb=$_GET['id'];
$infowebvotos"$resultados[votos]";
$infowebvotos ++;
}
$contador ++;
mysql_query("UPDATE $sql_tabla SET votos='$contador' WHERE id='$id'") or die($Err01);
mysql_close();
//··············································································SI TIENE QUE SUMAR MAS MENOS TIEMPO
  
} else {
//··············································································NO TIENE QUE SUMAR MAS TERMINADO !!!
$id_mod_nivel$_GET['id'];
$nweb=$_GET['id'];
require (
"aut_config.inc.php");
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$infowebvotos "$resultados[votos]";
require(
'html/count.votar.ok.php');
mysql_close();
   }
 }
//··············································································NO TIENE QUE SUMAR MAS FIN
 
} else {
//··············································································NO ESTA LA IP EN LA BASE DE DATOS
 
}
}
require (
"aut_config.inc.php");
$ip=$REMOTE_ADDR;
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE ip='$ip' AND idtop='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
mysql_close();
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$infowebvotos "$resultados[votos]";
require(
'html/count.votar.ok.php');
mysql_close();
//exit;
}
exit;
}
mysql_query("INSERT INTO $sql_tbl_votos (tid, ip, idtop) VALUES (now(),'$ip','$id')") or die($Err01);
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$consulta mysql_query("SELECT id FROM $sql_tbl_votos WHERE id='$id'") or die($Err01);
$prexiste mysql_num_rows ($consulta);
mysql_free_result($consulta);
if (
$prexiste != 0) {
//mysql_free_result($usuario_consultaip);
mysql_close();
} else {
mysql_query("DELETE FROM $sql_tbl_votos WHERE tid < '$fecha_votos'") or die($Err01);
mysql_close();
}
}
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$contador "$resultados[votos]";
$nweb=$_GET['id'];
$infowebvotos"$resultados[votos]";
}
mysql_query("UPDATE $sql_tabla SET votos='$contador' WHERE id='$id'") or die($Err01);
mysql_close();
mysql_free_result($usuario_consulta);
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$contador "$resultados[votos]";
$nweb=$_GET['id'];
$infowebvotos"$resultados[votos]";
$infowebvotos ++;
}
mysql_query("UPDATE $sql_tabla SET votos='$infowebvotos' WHERE id='$id'") or die($Err01);//cuenta visita la 1º vez
mysql_free_result($usuario_consulta);
mysql_close();
require (
"aut_config.inc.php");
$id_mod_nivel$_GET['id'];
$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla WHERE id=$id_mod_nivel") or die($Err01);
while(
$resultados mysql_fetch_array($usuario_consulta)) {
$infowebvisitas "$resultados[votos]";
require(
'html/count.votar.php');
mysql_close();
}
?>
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 19/08/2003 a las 21:49
  #3 (permalink)  
Antiguo 19/08/2003, 17:34
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 11 meses
Puntos: 0
gracias amigo por la idea, intentare hacer lo que me dices, de darle tiempo de vida a algunos parametros.

Saludos. y Gracias revisare el script.
  #4 (permalink)  
Antiguo 19/08/2003, 23:11
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
si, pero con una funcion pq lo mio es patetico...jajaja, yo ahora mismo voy a empezar a cambiarlo a una funcion... estoy en ello
__________________
3w.valenciadjs.com
3w.laislatv.com
  #5 (permalink)  
Antiguo 19/08/2003, 23:15
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
No creo que exista forma de solucionar esto por medio de IP's, ya que a ojos de la página web, la máquina que la está accesando es la que tiene la conexión de salida a internet, y no puede saber que máquina local es la que lo está viendo.

Mi sugerencia sería: cookies.

__________________
Manoloweb
  #6 (permalink)  
Antiguo 20/08/2003, 08:32
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 11 meses
Puntos: 0
Ok, pero si podria ser problema de configuracion al momento de dar la señal al internet, pues ayer en la universidad probe realizar la votacion con varios de mis amigos y si funciono, ahi cada maquina tiene una ip diferente si mal no estoy.

Tratare de ver por ese lado tambien.

Gracias.

Con respecto a las cookies, supuestamente el script ahora tiene esa opcion para evitar el spam en la votacion. Pero no se realmente porque no funciona.

Cabe aclarar que baje un script GNU para esto.

Saludos.
  #7 (permalink)  
Antiguo 20/08/2003, 13:24
 
Fecha de Ingreso: febrero-2003
Ubicación: Guanare
Mensajes: 90
Antigüedad: 21 años, 2 meses
Puntos: 0
Estou completamente de acuerdo con Manoloweb, ya que la cookies, ya que cuando vote la primera vez grabaras antes o despues la cookies, si lo vuelve a intentar el script debera estar hecho para buscar la cookies, si existe logicamente no podra hacerlo creo. jejejej
  #8 (permalink)  
Antiguo 20/08/2003, 13:37
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 21 años, 11 meses
Puntos: 0
Ok, gracias amigos, por las respuestas tratare de verlo por medio de cookies, preguntando e investigando un amigo que trabaja en esto de las conexiones a internet, me comento que el servicio que tenemos en la oficina es de una IP tipo C, la cual solo le da un unico numero a la que saca y recibe la señal, tal y como ustedes lo menciona, pero que si existe la posibilidad de generar ips propias para cada uno de los mismos de mi rede pero eso subiria el costo del enlace.

Saludos.

Y gracias.
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 15:51.