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 originalCREATE TABLE IF NOT EXISTS `Users` (
`User_ID` int(11) NOT NULL auto_increment,
`Username` varchar(150) NOT NULL,
`Username_Clean` varchar(150) NOT NULL,
`Password` varchar(225) NOT NULL,
`Email` varchar(150) NOT NULL,
`ActivationToken` varchar(225) NOT NULL,
`LastActivationRequest` int(11) NOT NULL,
`LostPasswordRequest` int(1) NOT NULL default '0',
`Active` int(1) NOT NULL,
`Group_ID` int(11) NOT NULL,
`SignUpDate` int(11) NOT NULL,
`LastSignIn` int(11) NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Pagina de Inicio de session:
Código PHP:
Ver original<?php
require_once("config.php");
//Esto impide que el usuario vea esta pagina sin antes haber iniciado session
if(!isUserLoggedIn
()) { header("Location: login.php"); die(); } ?>
<html>
<head>
<title>Bienvenido a la pagina prohibida de Pedro</title>
</head>
<div class="Menu">
<ul class="categoryitems">
<li><a href="logout.php">Salir</a></li>
<li><a href="account.php">Inicio</a></li>
<li><a href="<?php $group2 = $loggedInUser->groupID2(); echo $group2['User_ID']; ?>/prohibida.php">Ir a mi Pag Prohibida</a></li>
<li><a href="change-password.php">Cambiar Contraseña</a></li>
<li><a href="update-email-address.php">Cambiar Email</a></li>
</div>
<body>
</body>
</html>
Esta es la funcion isUserLoggedIn():
Código PHP:
Ver originalfunction isUserLoggedIn()
{
global $loggedInUser,$id,$db,$db_table_prefix;
$sql = "SELECT User_ID,
Password
FROM ".$db_table_prefix."Users
WHERE
User_ID = '".$db->sql_escape($loggedInUser->user_id)."'
AND
Password = '".$db->sql_escape($loggedInUser->hash_pw)."'
AND
Active = 1
LIMIT 1";
if($loggedInUser == NULL)
{
return false;
}
else
{
//Consulta para asegurar que no hayan sido removidos o baneados de la bse de datos
if(returns_result($sql) > 0)
{
return true;
}
else
{
//resultado para verificar que el usuario salio de la session
$loggedInUser->userLogOut();
return false;
}
}
}
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<?php
require_once("config.php");
//Esto impide que el usuario vea esta pagina sin antes haber iniciado session
if(!acceso_ID
()) { header("Location: login.php"); die(); } ?>
<html>
<head>
<title>Bienvenido a la pagina prohibida de Pedro</title>
</head>
<p>CONTENIDO PROHIBIDO de PEDRO AQUI!</p>
<body>
</body>
</html>
La pagina prohibida de Juan ID=2:
Código PHP:
Ver original<?php
require_once("config.php");
//Esto impide que el usuario vea esta pagina sin antes haber iniciado session
if(!acceso_ID
()) { header("Location: login.php"); die(); } ?>
<html>
<head>
<title>Bienvenido a la pagina prohibida de Juan</title>
</head>
<p>CONTENIDO PROHIBIDO de JUAN AQUI!</p>
<body>
</body>
</html>
La funcion acceso_ID que es para la pagina prohibida:
Código PHP:
Ver original//Comprobando si las IDs son iguales
function acceso_ID()
{
global $db,$id,$db_table_prefix;
$sql = "SELECT
User_ID
FROM
".$db_table_prefix."Users
WHERE
User_ID = '".$db->sql_escape($this->user_id)."'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
return ($row['User_ID']);
}
//Este ID si es para Pedro que tiene 1
$id = 1;
//Aqui hago la validacion
if ($row['User_ID'] == $id)
{
header ("Location: prohibida.php"); }
else
{
header("Location: no_acceso.php"); }
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.