Foros del Web » Programando para Internet » PHP »

Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Usuario

Estas en el tema de Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Usuario en el foro de PHP en Foros del Web. Hola como estan todos, estoy haciendo una q posee registro de usuarios, inicio de session, activacion por email, cambio de contraseña etc... todo bien hasta ...
  #1 (permalink)  
Antiguo 22/10/2010, 11:29
 
Fecha de Ingreso: octubre-2010
Ubicación: venezuela
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Usuario

Hola como estan todos, estoy haciendo una q posee registro de usuarios, inicio de session, activacion por email, cambio de contraseña etc... todo bien hasta el momento pero ahora quiero establecer unos paremetos de seguridad a una pagina especifica atraves de una funcion que ya tengo hecha y, que solamente pueda accesar esa persona por medio de su "ID" de Usuario.

Por Ejemplo: tenemos dos usuarios y sus IDs que lo establece automaticamente la base de datos cuando se registra una persona. (Pedro ID=1) y tenemos (Juan ID=2), cuando se logea cualquier usuario habra una opcion que lo llevara a su pagina "Prohibida.php" ahora lo que quiero hacer es que estas paginas (Prohibida_1.php = Pedro) y (Prohibida_2.php = Juan)

pueda accesar cada usuario en su session correspondiente es decir que (Pedro ID=1 no pueda entrar a la pagina prohibida_2.php que es la de Juan y viceversa) osea que cada uno pueda ver su pagina Prohibida.php pero a la ves no podran ver las paginas de otros usuarios tambien... todo esto lo quiero hacer reconociendo solamente su "ID" de usuario.


Aqui les muestro como lo estoy haciendo:

La estructura de mi base de datos es esta:
Código PHP:
Ver original
  1. CREATE TABLE IF NOT EXISTS `Users` (
  2.   `User_ID` int(11) NOT NULL auto_increment,
  3.   `Username` varchar(150) NOT NULL,
  4.   `Username_Clean` varchar(150) NOT NULL,
  5.   `Password` varchar(225) NOT NULL,
  6.   `Email` varchar(150) NOT NULL,
  7.   `ActivationToken` varchar(225) NOT NULL,
  8.   `LastActivationRequest` int(11) NOT NULL,
  9.   `LostPasswordRequest` int(1) NOT NULL default '0',
  10.   `Active` int(1) NOT NULL,
  11.   `Group_ID` int(11) NOT NULL,
  12.   `SignUpDate` int(11) NOT NULL,
  13.   `LastSignIn` int(11) NOT NULL,
  14.   PRIMARY KEY  (`User_ID`)
  15. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Pagina de Inicio de session:
Código PHP:
Ver original
  1. <?php
  2.     require_once("config.php");
  3.  
  4.     //Esto impide que el usuario vea esta pagina sin antes haber iniciado session
  5.     if(!isUserLoggedIn()) { header("Location: login.php"); die(); }
  6. ?>
  7. <html>
  8. <head>
  9. <title>Bienvenido a la pagina prohibida de Pedro</title>
  10. </head>
  11.  
  12. <div class="Menu">
  13.  
  14. <ul class="categoryitems">
  15. <li><a href="logout.php">Salir</a></li>
  16. <li><a href="account.php">Inicio</a></li>
  17. <li><a href="<?php  $group2 = $loggedInUser->groupID2(); echo $group2['User_ID']; ?>/prohibida.php">Ir a mi Pag Prohibida</a></li>
  18. <li><a href="change-password.php">Cambiar Contrase&ntilde;a</a></li>
  19. <li><a href="update-email-address.php">Cambiar Email</a></li>
  20. </div>
  21.  
  22. <body>
  23. </body>
  24. </html>

Esta es la funcion isUserLoggedIn():
Código PHP:
Ver original
  1. function isUserLoggedIn()
  2.     {
  3.         global $loggedInUser,$id,$db,$db_table_prefix;
  4.        
  5.         $sql = "SELECT User_ID,
  6.                 Password
  7.                 FROM ".$db_table_prefix."Users
  8.                 WHERE
  9.                 User_ID = '".$db->sql_escape($loggedInUser->user_id)."'
  10.                 AND
  11.                 Password = '".$db->sql_escape($loggedInUser->hash_pw)."'
  12.                 AND
  13.                 Active = 1
  14.                 LIMIT 1";
  15.  
  16.        
  17.         if($loggedInUser == NULL)
  18.         {
  19.             return false;
  20.         }
  21.         else
  22.         {
  23.             //Consulta para asegurar que no hayan sido removidos o baneados de la bse de datos
  24.             if(returns_result($sql) > 0)
  25.             {
  26.                     return true;
  27.             }
  28.             else
  29.             {
  30.                 //resultado para verificar que el usuario salio de la session
  31.                 $loggedInUser->userLogOut();
  32.            
  33.                 return false;
  34.             }
  35.         }
  36.     }

OK hasta ahora todo bien esto lo que hace es que a personas no registradas no les permite ver las Opciones del Usuario. (tendrian que registrarse)


Y cuando van a sus opciones respectivas es decir "Ir a mi Pag Prohibida" lo hace perfecto lo lleva su pagina prohibida deacuerdo a sus IDs de usuarios, ahora el problema es q como hago para denegar el acceso a esa pagina prohibida cuando entra un suario con una ID distinta a la ya preestablecida?


ASI es como estoy haciendo...

NOTA IMPORTANTE: cada una de las paginas prohibidas las tengo en directorios diferentes y cada una le coloco numeros q vienen siendo las IDs de los usuarios osea a cada directorio les tengo su archivo de configuracion, Funcion, etc

La pagina prohibida de Pedro ID=1:
Código PHP:
Ver original
  1. <?php
  2.     require_once("config.php");
  3.  
  4.     //Esto impide que el usuario vea esta pagina sin antes haber iniciado session
  5.     if(!acceso_ID()) { header("Location: login.php"); die(); }
  6. ?>
  7. <html>
  8. <head>
  9. <title>Bienvenido a la pagina prohibida de Pedro</title>
  10. </head>
  11.  
  12. <p>CONTENIDO PROHIBIDO  de PEDRO AQUI!</p>
  13.  
  14. <body>
  15. </body>
  16. </html>

La pagina prohibida de Juan ID=2:
Código PHP:
Ver original
  1. <?php
  2.     require_once("config.php");
  3.  
  4.     //Esto impide que el usuario vea esta pagina sin antes haber iniciado session
  5.     if(!acceso_ID()) { header("Location: login.php"); die(); }
  6. ?>
  7. <html>
  8. <head>
  9. <title>Bienvenido a la pagina prohibida de Juan</title>
  10. </head>
  11.  
  12. <p>CONTENIDO PROHIBIDO  de JUAN AQUI!</p>
  13.  
  14. <body>
  15. </body>
  16. </html>

La funcion acceso_ID que es para la pagina prohibida:
Código PHP:
Ver original
  1. //Comprobando si las IDs son iguales
  2.     function acceso_ID()
  3.     {
  4.         global $db,$id,$db_table_prefix;
  5.        
  6.         $sql = "SELECT
  7.                 User_ID
  8.                 FROM
  9.                 ".$db_table_prefix."Users
  10.                 WHERE
  11.                 User_ID = '".$db->sql_escape($this->user_id)."'";
  12.        
  13.         $result = $db->sql_query($sql);
  14.        
  15.         $row = $db->sql_fetchrow($result);
  16.        
  17.         return ($row['User_ID']);
  18.     }
  19.  
  20.  
  21.  
  22.             //Este ID si es para Pedro que tiene 1
  23.                 $id = 1;
  24.  
  25.  
  26.             //Aqui hago la validacion
  27.                 if ($row['User_ID'] == $id)
  28.                 {
  29.                 header ("Location: prohibida.php");
  30.                 }
  31.                 else
  32.                 {
  33.                 header("Location: no_acceso.php");
  34.                 }


Mi problema es que los usuarios pueden ver las paginas prohibidas de otros usuarios y quiero parar eso quiero denegar el acceso atraves de sus IDs de suarios, es decir que solo puedan entrar solo a su pag prohibida correspondiente

SI alguien por favor me pudiera ayudar mi problema, debe ser un error q estoy cometiendo en esta ultima funcion "acceso_ID", por q lo demas funciona perfecto les pido su ayuda GRACIAS POR LEER ESTE TEMA.

Última edición por wambax; 22/10/2010 a las 11:37
  #2 (permalink)  
Antiguo 22/10/2010, 13:38
Avatar de gusma62  
Fecha de Ingreso: julio-2008
Ubicación: Tepatitlán, Jalisco, Mexico
Mensajes: 167
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

Para esto existe php

Para empezar no deberías tener "páginaProhibidaDeJuan" y "páginaProhibidaDePedro", sino solo una: "paginaProhibida".

Al momento de que el usuario se loguee, entrará a "paginaProhibida", la cual reconocerá al usuario que ingresó y cargará los datos que solo puede ver este usuario:

<title>Bienvenido a la pagina prohibida de <?php echo $usuarioNombre; ?></title>


Espero con esto te de alguna idea, saludos.
  #3 (permalink)  
Antiguo 22/10/2010, 14:07
 
Fecha de Ingreso: octubre-2010
Ubicación: venezuela
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

Hola gracias por responder el tema...

Pero lo que pasa es lo siguiente cada Usuario tiene un gestor de contenido diferente al otro y manejan otra base de datos aparte de la base de datos que manejo para los registros de nuevas personas, lo que quiero es comparar los IDs del Usuario para denegar o no el acceso dependiendo si el ID corresponde al numero de directorio, es decir para cada usuario le tengo un directorio y dentro de el las paginas prohibidas (cada directorio tiene un numero que viene siendo el ID de cada usuario) y cuando le dan a la opcion ir a la pagina prohibida en el Menu lo redireciona a su directorio correspondiente eso lo hace bien con esta sentencia .

Código PHP:
Ver original
  1. <li><a href="<?php  $group2 = $loggedInUser->groupID2(); echo $group2['User_ID']; ?>/prohibida.php">Ir a mi Pag Prohibida</a></li>

Por lo demas esta perfecto.

Última edición por wambax; 22/10/2010 a las 14:52
  #4 (permalink)  
Antiguo 22/10/2010, 19:25
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 8 meses
Puntos: 55
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

si es como me imagino puedes hacer una comparacion de la direccion

ejemplo si pedro es el ID=2 entonces su pagina prohibida es

www.mipagina.com/2/paginaprohibida

de ser asi puedes colocar al principio de estas paginas prohibidas un codigo que verifique el link donde estan ingresando y extraiga de este link el id en este caso el 2, luego lo compare con el id del usuario que esta conectado, si es el correcto lo deje seguir, de lo contrario lo saque
  #5 (permalink)  
Antiguo 22/10/2010, 19:54
 
Fecha de Ingreso: octubre-2010
Ubicación: venezuela
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

Cita:
Iniciado por johhan16 Ver Mensaje
si es como me imagino puedes hacer una comparacion de la direccion

ejemplo si pedro es el ID=2 entonces su pagina prohibida es

[url]www.mipagina.com/2/paginaprohibida[/url]

de ser asi puedes colocar al principio de estas paginas prohibidas un codigo que verifique el link donde estan ingresando y extraiga de este link el id en este caso el 2, luego lo compare con el id del usuario que esta conectado, si es el correcto lo deje seguir, de lo contrario lo saque
Por fin eso es exactamente lo que quiero hacer amigo, EL PROBLEMA es como lo hago?

es decir lo que quiero comparar es si el ID del usuario es igual al numero que yo e preselecionado para la pagina prohibida... es decir tengo 1000 usuarios registrados pues tendre 1000 directorios cada unos de los directorios tendran la paghina prohibida de cada usuario, entonces no quiero q el usuario 1000 vea la web prohibida del usaurio 1 y eso lo quiero hacer con este codigo pero no me hace nada siempre me deja ver lo mismo a todos los directorios... en realidad quiero es comparar el ID con el numero q yo selecione asi como esta en esta funcion... yo se le falta algo para q funcione la comparacion algo esta saliendo mal y tiene q ver con esta funcion... Asi es como lo estoy haciendo pero no me hace la funcion que quiero que es de denegar el acceso cuando EL ID no corresponde a un directorio especifico.

Código PHP:
Ver original
  1. //Comparando si las IDs son iguales
  2.     function acceso_ID()
  3.     {
  4.         global $db,$id,$db_table_prefix;
  5.        
  6.         $sql = "SELECT
  7.                 User_ID
  8.                 FROM
  9.                 ".$db_table_prefix."Users
  10.                 WHERE
  11.                 User_ID = '".$db->sql_escape($this->user_id)."'";
  12.        
  13.         $result = $db->sql_query($sql);
  14.        
  15.         $row = $db->sql_fetchrow($result);
  16.        
  17.         return ($row['User_ID']);
  18.     }
  19.  
  20.             //Este ID es para el Usuario 1
  21.                 $id = 1;
  22.  
  23.  
  24.             //Aqui hago la validacion
  25.                 if ($row['User_ID'] == $id)
  26.                 {
  27.                 header ("Location: prohibida.php");
  28.                 }
  29.                 else
  30.                 {
  31.                 header("Location: no_acceso.php");
  32.                 }


o Como puedo hacer una comparacion de direcciones asi como tu dices johhan16?
de Antemano gracias por responder el tema, y aportar un granito de arena para poder solvertar mi problema, y saludo a la gente del zulia tambien soy de coro falcon :)

Última edición por wambax; 22/10/2010 a las 19:59
  #6 (permalink)  
Antiguo 22/10/2010, 20:39
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 8 meses
Puntos: 55
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

puedes hacerlo de esta forma

Código PHP:
<?php

$direccion
$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$dir_id=substr($direccion,14,1);

echo 
$dir_id;

?>
esta parte es solo para que configures con tu pagina que el substr quede donde debe estar y luego lo compares con el id del usuario.

cabe destacar que asi como lo coloco en este ejemplo solo muestra 1 numero pero si tu crees que tienes mas de 1000 usuarios, entonces los id deberian ser 0001 y de igual forma los directorios para hacer una buena comparacion.

edito:
ejemplo de pagina www.mipagina.com/0001/paginaprohibida.php

id del usuario= 0001
  #7 (permalink)  
Antiguo 22/10/2010, 20:55
 
Fecha de Ingreso: octubre-2010
Ubicación: venezuela
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

Es decir que ese codigo que tienes lo colocaria en cada una de las paginas prohibida?

AMIGO no puedo colocar 0001 por que en la Base de dato no guarda los IDs asi como dices si no desde 1 y tengo 1034 usuarios en mi DB

Lo que quiero es comparar los IDs de la base de datos MYSQL con los Numeros de los directorios que tiene cada usuario e impedir el acceso a otros directorios q no contenga sus mismo IDs

EJEMPLO:
tengo 1000 usuarios en mi base de datos es decir q tengo 1000 IDs
y cada Usuario tiene un directorio con el numero de ID del Usuario entonces quedaria asi (www.mipagina.com/1/paginaprohibida.php.................... hasta llegar al 1000)

Entonces lo que quiero es que el usuario 999 no pueda entrar o ver la pagina prohibida del usuario 1

Alguien me podria dar una solucion de alguna Function para comparar el ID de la base de datos MYSQL y el numero del directorio?

Última edición por wambax; 22/10/2010 a las 21:31
  #8 (permalink)  
Antiguo 23/10/2010, 17:19
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 8 meses
Puntos: 55
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

bueno eso que te pase te funciona para eso debes de investigar un poco, yo he tenido cosas que resolver que me han costado, pero lo he solucionado investigando bastante, sin ofender me imagino que ya haz buscado y no haz dado con la solucion, porque tambien me ha pasado y cuando menos uno lo espera alli esta la solucion

Código PHP:
<?php
$cadena_id 
253;
$contar strlen($cadena_id);

$direccion$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$dir_id=substr($direccion,14,$contar);

echo 
$dir_id;
echo 
'<br>';
echo 
$contar;
?>
fijate lo que acabo de hacer aqui, la variable que dice $cadena_id = 253; alli donde esta el 253 debe estar el id del usuario, los 3 echo que salen al final no van, solo es para que pruebes que el sistema funciona bien, en $dir_id=substr($direccion,14,$contar);, el 14 es de donde va a comenzar a extraer la informacion de la direccion de la pagina, colocalo donde debe estar en tu pagina.

postdata: ya con eso te funcionaria a un 90% lo que quieres solo falta un pequeño detalle que te estoy dejando a ver si puedes resolverlo, luego paso por aqui a ver que ha pasado

Saludos
  #9 (permalink)  
Antiguo 24/10/2010, 17:39
 
Fecha de Ingreso: octubre-2010
Ubicación: venezuela
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

Listo amigo lo hice como me dijiste pero no hace lo que se quiere... mi pregunta es sera que esta funcion la estoy haciendo mal?

Código PHP:
Ver original
  1. //Comprobando si la IDs y el directorio son iguales
  2.     function acceso_id()
  3.     {
  4.         global $db,$db_table_prefix;
  5.        
  6.         $sql = "SELECT
  7.                User_ID
  8.                FROM
  9.                ".$db_table_prefix."Users
  10.                WHERE
  11.                User_ID = '".$db->sql_escape($this->user_id)."'";
  12.        
  13.         $result = $db->sql_query($sql);
  14.        
  15.         $row = $db->sql_fetchrow($result);
  16.        
  17.         return ($row['User_ID']);
  18.     }
  19.  
  20.  
  21.  
  22.             //Aqui hago la validacion
  23.                 if ($group2['User_ID'] == $contar)
  24.                 {
  25.                 header ("Location: prohibida.php");
  26.                 }
  27.                 else
  28.                 {
  29.                 header("Location: no_acceso.php");
  30.                 }
  #10 (permalink)  
Antiguo 26/10/2010, 12:34
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 8 meses
Puntos: 55
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

hazle un echo a $row['User_ID'] y asi sabras si te muestra lo que le solicitas, yo te puedo decir que yo probe aqui lo que te envie y funciona a la perfeccion

edito: si quieres me pasas por privado el nombre de tu pagina y el codigo completo de la pagina prohibida y yo te monto eso

Última edición por johhan16; 26/10/2010 a las 12:48
  #11 (permalink)  
Antiguo 27/10/2010, 19:54
 
Fecha de Ingreso: octubre-2010
Ubicación: venezuela
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Autentificacion multiusuario con PHP y MySQL tomando en cuenta su ID de Us

Cita:
Iniciado por johhan16 Ver Mensaje
hazle un echo a $row['User_ID'] y asi sabras si te muestra lo que le solicitas, yo te puedo decir que yo probe aqui lo que te envie y funciona a la perfeccion

edito: si quieres me pasas por privado el nombre de tu pagina y el codigo completo de la pagina prohibida y yo te monto eso
No hace nada pana, no se que hacer AYUDAAAAA!
1.- estoy colocando tu codigo en la pagina que quiero controlar
2.- y en la funcion le puse el echo que me dijiste

ahora no se que es lo que pasa, ya te envie el PM!



SI puedes enviame el php que hiciste que dices que funciona a la perfeccion, si puedes enviamelo al correo que te envie en el PM del foro.

Última edición por wambax; 28/10/2010 a las 17:02

Etiquetas: multiusuario, mysql, autenticacion, 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 01:44.