Foros del Web » Programando para Internet » PHP »

como crear verificador de acceso de usuarios

Estas en el tema de como crear verificador de acceso de usuarios en el foro de PHP en Foros del Web. Buenas a Todos! antes que nada quiero aclarar que no quiero que me den el codigo o que me lo hagan, si no que despues ...
  #1 (permalink)  
Antiguo 18/06/2015, 15:27
 
Fecha de Ingreso: abril-2003
Ubicación: Mexico
Mensajes: 604
Antigüedad: 21 años
Puntos: 23
Pregunta como crear verificador de acceso de usuarios

Buenas a Todos!

antes que nada quiero aclarar que no quiero que me den el codigo o que me lo hagan, si no que despues de dias de estar dandole vueltas ya mi cabeza no encuentra la salida a algo que considero simple pero que realmente no logro pensar como hacerlo

les explico:
Necesito verificar que un usuario no pueda accesar como otros en mas de 5 ocasiones en minimo 24hrs.

ejemplo:
pedro conoce el usuario y clave de juan, manuel, jorge, maricela, mariela, roberto, etc. y puede acceder haciendose pasar por ellos realizando tramites x,

Ahora lo que necesito es que pedro pueda acceder las veces que quiera a hacer lo que quiera y que maximo pueda acceder con 4 (cuatro) cuentas adicionales para aquello de "ayudar al amigo" pero no mas por dia.

lo que tengo es:
base de datos con los datos generales de los usuarios en donde esta tambien su usuario y contraseña que ellos mismos pusieron.
Tabla con los accesos en donde se almacena el nombre, usuario, hora y fecha y la IP, tambien tengo un campo de Status pero que no utilizo actualmente.

Cada vez que accesa el usuario es registrado su acceso, ya sea si entro 1 vez o 20 veces se almacena con los datos que menciono

ahora... lo que quiero hacer es que

al entrar el usuario se realice el registro normal pero que tambien compare si esta entrando con la misma IP como si fuera otro usuario

se me ocurre comparar la IP con los nombres de usuario y aqui es donde me atoro, porque son varias condiciones,

que por ejemplo si entro como pedro, juan, manuel y jorge son menos de 5 accesos para la misma IP pueda continuar accesando como esos usuarios por todo el dia pero si intenta con un 5º o 6º usuario (margarita, roberto, etc.) no le permita el acceso y le saque la leyenda que no puede accesar porque rebaso el limite.
pero al llegar las 00:01hrs ya no se tomen en cuenta esos accesos y pueda volver a usar hasta 4 usuarios, ejemplo pedro, roberto, margarita, mariela y asi sucesivamente.
de antemano una disculpa por lo extenso pero estoy tratando de explicar mi idea y entenderan porque ando complicado

mi codigo de acceso es este:
Código PHP:
<?php
$query 
sprintf("SELECT * FROM archivo WHERE usuario='%s'",
            
mysql_real_escape_string($busca));
$result mysql_query($query);
      
session_start(); // empezamos la session
      
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');
while (
$row mysql_fetch_assoc($result)) {
      
$_SESSION['login']=$busca;
      
$_SESSION['nomb']=$nombre// Asignamos el Nombre
      
$ip $_SERVER['REMOTE_ADDR'];  //IP de donde visita para control
    //a partir de aqui registro su entrada en la base de datos para el historial de accesos
      
mysql_query("insert into entradas (nombre,usuario,fecha,ipentra) 
                values ('$nombre','$busca',NOW(),'$ip')"
,$link)or die(print mysql_error());
header('location: index.php');
}
De nuevo de antemano gracias por su ayuda.

Saludos!
__________________
¡El Respeto al Derecho Ajeno Es la Paz!
  #2 (permalink)  
Antiguo 19/06/2015, 11:15
Avatar de Apolo_13  
Fecha de Ingreso: mayo-2015
Mensajes: 40
Antigüedad: 8 años, 11 meses
Puntos: 4
Respuesta: como crear verificador de acceso de usuarios

Hola, pinta muy interesante tu problema. me uno a la causa jaja.

mira, mas o menos esto podria ser una posible solución. faltan los metodos que esa parte te toca a ti.
Código PHP:
Ver original
  1. <?php
  2.         //sacar de la bd
  3.         if (usuarioExiste()):
  4.             $registros;
  5.             //$registros = cursor; la variable registros almacenara todas las filas de una consulta para una ip en concreto. Osea el resultado del select
  6.             //agregarBD(ip -- idUser -- horaDeInicio);
  7.             //tienes que tener una tabla con los campos: ip -- id_usuario -- horaDeInicio (cuando accede con ese usuario)
  8.             agregarBD($ip,$idUser,$horaIni);
  9.             //si han pasado menos de 24 horas y el numero de registros es menor a 5
  10.             if(isMenosDe24h($registros) && isRegistrosMenorA6()):
  11.                 iniciarAcceso();
  12.             else:
  13.                 //si han pasado mas de 24h borrarmos sus registros de la BD y acede al sistema
  14.                 if(!isMenosDe24h(registros)):
  15.                     borrarRegistrosBD();
  16.                     iniciarAcceso();
  17.                 else:
  18.                     //en cualquier otro caso lo enviamos u una pagina de acceso denegado
  19.                     header("Location: accesoDenegado.php");
  20.                 endif;
  21.             endif;
  22.         else:
  23.             print "no existe el usuario";
  24.         endif;
  25.         ?>

explicacion de metodos:
------------------------------
usuarioExiste() : boolean --> se hace un select con el user y el password introducion en el form del html, y si te devuelve una fila, tienes que devolver true, en caso contrario lo contrario, osea false :p

agregarBD() : void --> insertar los 3 parametros, la ip, el id del user y la hora de inicio(la hora en el momento en el que se logea). Esos params en una tabla que solo tenga esas 3 columns.


ojo, aqui viene lo mas importante
isMenosDe24h() : boolean --> con la variable registros la recorres y te quedas con la primera hora del primer acceso de ese usuario. Y luego comparas esa fecha con la hora del sistema y si han pasado menos de 24 hr devolvera true, caso contrario false.

isRegistrosMenorA6() : boolean--> simplemente haces un select de los id del users para la ip en concreto. Lo haces con un distinct. ejemp: "select distinct idUser where ip = '{$ip}'". Luego cuentas el numero de registros, p.ejemp con mysql_num_rows(). y si es menor a 6 true sino false.

iniciarAcceso() : void --> aqui implementas la logica que quieras para acceder al sistema.

borrarRegistrosBD() --> borrar los registros en la tabla para la ip en concreto.


p.d: seguramente hayan mas formas y mas eficientes, pero a priori es lo que se me ocurre.

Saludos!
__________________
¿Buscas respuestas? eemmmmm.....¡Abstrae tu mente!

Última edición por Apolo_13; 19/06/2015 a las 11:25

Etiquetas: fecha, mysql, registro, select, tabla, usuarios
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 03:15.