Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/10/2010, 11:29
wambax
 
Fecha de Ingreso: octubre-2010
Ubicación: venezuela
Mensajes: 9
Antigüedad: 13 años, 6 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