Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Restringir acceso a ciertas paginas a algunos usuarios logeados

Estas en el tema de Restringir acceso a ciertas paginas a algunos usuarios logeados en el foro de PHP en Foros del Web. Hola a todos de nuevo! hoy vengo con un tema muy bueno, y es el de restringir accesos a ciertas paginas de mi web site ...
  #1 (permalink)  
Antiguo 20/08/2014, 10:44
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta Restringir acceso a ciertas paginas a algunos usuarios logeados

Hola a todos de nuevo! hoy vengo con un tema muy bueno, y es el de restringir accesos a ciertas paginas de mi web site a algunos usuarios logeados (ya lo se, el titulo lo dice -.- pero no importa jeje)... es decir es como darle privilegios a ciertos usuarios y a otros no... yo ya tengo mis codigos donde se logea mis usuarios de la BD, y tengo varios y estos entran a la web sin problemas; ahora como seria para negarles a algunos el acceso a ciertas paginas especificas?... GRACIAS! por la atencion desde ya... saludos
  #2 (permalink)  
Antiguo 20/08/2014, 11:14
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Hola! Mira, necesitamos algo más de información.

Pero en esencia, te diría que hicieras una tabla con los niveles de acceso en tu bbdd, y otra en la que cruzas según que usuario y qué privilegio.

Y luego, al comienzo de cada página, evalúa si el usuario que está navegando tiene acceso o no en base a ese valor (Bien porque lances la query, bien porque lo cargues durante el loggin en $_SESSION o $_COOKIE)

Es muy vago todo, pero es la esencia, ya te lo puedes complicar lo que quieras.

Un saludo!
__________________
diseño web | Clan Rol
  #3 (permalink)  
Antiguo 20/08/2014, 12:32
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Hola! bueno mira esto es lo que en esencia tengo que es lo que hasta el momento me permite loguearme correctamente y ya...
Control.php:
Código PHP:
Ver original
  1. <?
  2.      /* A continuación, realizamos la conexión con nuestra base de datos en MySQL */
  3.      $link = mysql_connect("localhost","elian4_user1","kaeling");
  4.      mysql_select_db("elian4_mip", $link);
  5.  
  6.      /* El query valida si el usuario ingresado existe en la base de datos. Se utiliza la función
  7.      htmlentities para evitar inyecciones SQL. */
  8.      $myusuario = mysql_query("select idusuario from usuarios
  9.                                 where idusuario =  '".htmlentities($_POST["usuario"])."'",$link);
  10.      $nmyusuario = mysql_num_rows($myusuario);
  11.  
  12.      //Si existe el usuario, validamos también la contraseña ingresada y el estado del usuario...
  13.      if($nmyusuario != 0){
  14.           $sql = "select idusuario
  15.               from usuarios
  16.               where estado = 1
  17.               and idusuario = '".htmlentities($_POST["usuario"])."'
  18.               and clave = '".md5(htmlentities($_POST["clave"]))."'";
  19.           $myclave = mysql_query($sql,$link);
  20.           $nmyclave = mysql_num_rows($myclave);
  21.  
  22.           //Si el usuario y clave ingresado son correctos (y el usuario está activo en la BD), creamos la sesión del mismo.
  23.           if($nmyclave != 0){
  24.                session_start();
  25.                //Guardamos dos variables de sesión que nos auxiliará para saber si se está o no "logueado" un usuario
  26.                $_SESSION["autentica"] = "SIP";
  27.                $_SESSION["usuarioactual"] = mysql_result($myclave,0,0); //nombre del usuario logueado.
  28.                //Direccionamos a nuestra página principal del sistema.
  29.                header ("Location: admin.php");
  30.           }
  31.           else{
  32.                echo"<script>alert('La contrase\u00f1a del usuario no es correcta.');
  33.               window.location.href=\"index.php\"</script>";
  34.           }
  35.      }else{
  36.           echo"<script>alert('El usuario no existe.');window.location.href=\"index.php\"</script>";
  37.      }
  38.      mysql_close($link);
  39. ?>

Seguridad.php

Código PHP:
Ver original
  1. <?
  2.  
  3. if($_SESSION["autentica"] != "SIP"){
  4.     header("Location: index.php");
  5.     exit();
  6. }
  7. ?>

Espero y podamos ver como hacer... Gracias!
  #4 (permalink)  
Antiguo 20/08/2014, 12:40
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Échale un vistazo a esto, probablemente te sirva.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 20/08/2014, 14:25
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

A la verdad toda esa información es algo compleja para entender rapidamente, me gustaria es saber como trabajar con lo que ya tengo hecho...
  #6 (permalink)  
Antiguo 20/08/2014, 14:53
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

consegui fue unas lineas php para pedir usuario y contraseña al querer entrar a una pagina especifica, pero cuando valido sigue igual apareciendo el cuadro de dicha validacion como si el usuario y contraseña ingresada fueran incorrectas... esta es la linea:

Código PHP:
Ver original
  1. <?php
  2.    if (($PHP_AUTH_USER!="Joe") || ($PHP_AUTH_PW!="123")) {
  3.       header('WWW-Authenticate: Basic realm="Acceso restringido"');
  4.       header('HTTP/1.0 401 Unauthorized');
  5.       echo 'Authorization Required.';
  6.       exit;
  7.    }
  8. ?>

que opinan al respecto?
  #7 (permalink)  
Antiguo 21/08/2014, 03:43
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

mira, yo en tu caso, viendo tu script me ceñiría a lo siguiente:

1.Ir al phpmyadmin de tu base de datos y añadir un campo de tipo tinyint con el que controlar los privilegios que se vayan escalando en la tabla de usuarios. Debería ser algo así:
ALTER TABLE `usuarios` ADD `privilegios` TINYINT(1) NOT NULL DEFAULT '0' ;

2.Cambia la consulta en la que buscas un el usuario y a lo que buscas el user sacas el privilegio, la de la línea 14 por
$sql = "SELECT idusuario, privilegios FROM usuarios WERE estado = 1 AND idusuario = '".htmlentities($_POST["usuario"])."' AND clave = '".md5(htmlentities($_POST["clave"]))."'";

3.En el if de la línea 23, añades una nueva variable de sesión como más te guste. Algo así podría valer:
$datos =mysql_fetch_array($myclave);
$_SESSION["nivel"] = datos[1];

4.En las páginas que quieras proteger, pues añades algo así:

if($_SESSION["nivel"] >= 0){
//Aquí metes tu página
}else{
echo 'no tienes nivel suficiente';
}

Es un sistema muy básico y mejorable, pero creo que te puede hacer el apaño mientras vas descubriendo por tí mismo cómo hacer más cosas. La idea es que pueda ser un sistema escalable: 0 para usuarios registrados, 1 para usuarios especiales, 2 para mods, 3 para admins... o como quieras :D

Espero que te sea de ayuda!!!
__________________
diseño web | Clan Rol
  #8 (permalink)  
Antiguo 21/08/2014, 06:33
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Excelente gracias por la guia ya voy a comenzar a plicarla, aunque una duda más... en la parte donde de valida con la variable de sesion if($_SESSION["nivel"] >= 0){, puedo colocarle dos condiciones.. osea que si mi admin es valor 0 y alguien más tiene acceso a esa seccion de la pagina (valor 3 digamos), puedo condicionar a que valide los dos valores? algo como:

=0 and =3.
puedo hacerlo asi o eso ya requiere de más cosas?...

GRACIAS!!!! :D
  #9 (permalink)  
Antiguo 21/08/2014, 10:56
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Si, claro, tu puedes poner las condiciones que quieras. Imagina que quieres que una página pueda ser vista por el grupo de usuarios con permiso 1, y el de permiso 4. pues en el if, añades las condiciones que sean, una detrás de otra:

if($_SESSION["nivel"] == 1 && $_SESSION["nivel"] == 4){
//Aquí metes tu página
}else{
echo 'no tienes nivel suficiente';
}

Esto es muy simple, pero te puede servir para lo que tienes entre manos, y puedes ampliarlo fácilmente. En las faqs/wiki de forosdelweb puedes encontrar muchos manuales que te pueden ayudar a ir expandiendo esto.

Espero que te sea de ayuda.

Un saludo!
__________________
diseño web | Clan Rol
  #10 (permalink)  
Antiguo 21/08/2014, 12:43
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Gracias! tu aporte ha sido de gran ayuda!... para la pagina y para mi que sigo aprendiendo
  #11 (permalink)  
Antiguo 21/08/2014, 14:06
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Me alegro, todos pasamos por estas cosas, para eso estamos.

Un saludo!
__________________
diseño web | Clan Rol
  #12 (permalink)  
Antiguo 25/08/2014, 06:42
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Hola compañero disculpa te moleste de nuevo pero tuve otros pendientes no permitiendome la situación poder probar toda la adaptación de mi código con el que me ayudaste... y resulta que en la edición del php control mandaba un error con la linea 23 y conclui que era que a "datos" le hacia falta este signo "$" y pues lueo que lo agregue si pude iniciar sesión; más con las lineas a agregar en la pagina a restringir ahi si no he sabido interpretar lo más seguro y pues me manda este error: Parse error: syntax error, unexpected '}' in /home2/elian4/public_html/mip/proyecto.php on line 5

y esta es la linea que tengo, presiento que se debe a que no he sabido llamar a la pagina si el privilegio esta activo jejeje:
Código PHP:
Ver original
  1. <?php
  2. if($_SESSION["nivel"] = 0){
  3. proyecto.php
  4. }else{
  5. echo 'no tienes nivel suficiente';
  6. }
  7. ?>

Gracias y ojala puedas colaborarme que solo me falta esto para mi proyecto jejeje
  #13 (permalink)  
Antiguo 25/08/2014, 07:02
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Muy buenas,

vamos a ver. Imagino que debes sustituir todo el código que has puesto por:

Código PHP:
    <?php
    
if($_SESSION["nivel"] == 0){
    include(
"proyecto.php");
    }else{
    echo 
'no tienes nivel suficiente';
    }
    
?>
Y ahora, un poco de manuales. Para poder ir investigando, ganando autonomía y, en definitiva, aprender el lenguaje, hay que leer algunas cosillas.
Operadores booleanos, necesario para todo lo básico que tenga que ver con operaciones de lógia.
Include y Require, la base para reciclar códgio.

Un saludo!!!
__________________
diseño web | Clan Rol
  #14 (permalink)  
Antiguo 25/08/2014, 08:33
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Hola Toledo, basandome en tu linea de códigos y viendo los ejemplos del link del include que me pasaste, segun mi pagina hace el salto cuando es el usuario correcto pero me sale la pagina es del host diciendo error 500 internal server error, y en la barra de la url se ve la ruta que se supone deberia tomar, es decir proyecto.php... que pasa ahi?... tambien probe de esta forma y todos los usuarios se van a la pagina que hice de acceso restringido :O aunque solo lo tenia con un signo igual y no los dos, mas con los dos se queda como pegado al punto de que el navegador me dice esto: Firefox ha detectado que el servidor está redirigiendo la solicitud a esta dirección de una manera en la que nunca terminará...

estos son mis codigos:

para la pagina que deseo bloquear:

Código PHP:
Ver original
  1. <?php
  2. if($_SESSION["nivel"] == 0){
  3. header("Location: http://www.kaelingenieros.com/mip/proyecto.php");
  4. }else{
  5. header("Location: http://www.kaelingenieros.com/mip/acceso_restringido.php");
  6. }
  7. ?>

y este el de php control...

Código PHP:
Ver original
  1. <?
  2.      /* A continuación, realizamos la conexión con nuestra base de datos en MySQL */
  3.      $link = mysql_connect("localhost","elian4_user1","kaeling");
  4.      mysql_select_db("elian4_mip", $link);
  5.  
  6.      /* El query valida si el usuario ingresado existe en la base de datos. Se utiliza la función
  7.      htmlentities para evitar inyecciones SQL. */
  8.      $myusuario = mysql_query("select idusuario from usuarios
  9.                                 where idusuario =  '".htmlentities($_POST["usuario"])."'",$link);
  10.      $nmyusuario = mysql_num_rows($myusuario);
  11.  
  12.      //Si existe el usuario, validamos también la contraseña ingresada y el estado del usuario...
  13.      if($nmyusuario != 0){
  14.           $sql = "select idusuario, privilegios
  15.               from usuarios
  16.               where estado = 1
  17.               and idusuario = '".htmlentities($_POST["usuario"])."'
  18.               and clave = '".md5(htmlentities($_POST["clave"]))."'";
  19.           $myclave = mysql_query($sql,$link);
  20.           $nmyclave = mysql_num_rows($myclave);
  21.  
  22.           //Si el usuario y clave ingresado son correctos (y el usuario está activo en la BD), creamos la sesión del mismo.
  23.           if($nmyclave != 0){
  24.           $datos =mysql_fetch_array($myclave);
  25. $_SESSION["nivel"] = $datos[1];
  26.                session_start();
  27.                //Guardamos dos variables de sesión que nos auxiliará para saber si se está o no "logueado" un usuario
  28.                $_SESSION["autentica"] = "SIP";
  29.                $_SESSION["usuarioactual"] = mysql_result($myclave,0,0); //nombre del usuario logueado.
  30.                //Direccionamos a nuestra página principal del sistema.
  31.                header ("Location: admin.php");
  32.           }
  33.           else{
  34.                echo"<script>alert('La contrase\u00f1a del usuario no es correcta.');
  35.               window.location.href=\"index.php\"</script>";
  36.           }
  37.      }else{
  38.           echo"<script>alert('El usuario no existe.');window.location.href=\"index.php\"</script>";
  39.      }
  40.      mysql_close($link);
  41. ?>

que hay de mal pues segun estan bien...
  #15 (permalink)  
Antiguo 25/08/2014, 09:03
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Ambas url me redirigen a http://www.kaelingenieros.com/mip/index.php. ¿Esto es correcto?

Y, luego, en el script de control, inicia tu php así:
<?php

en vez de
<?

Por si acaso no tienes los short tags
__________________
diseño web | Clan Rol
  #16 (permalink)  
Antiguo 25/08/2014, 09:13
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

si es correcto pues si no estas logueado te devuelve a la index, y aunque coloque el <?php siguen las mismas dificultades... es más, vi que en la linea de bloqueo de la pagina el cero (0) no estaba distinguido entre comillas y se las coloque pero lo que pasa ahora por eso es que a todos los usuarios los manda a la pagina restringida... en el php no veo donde se especifique los valores del campo privilegios en la variable datos... sera por eso que no identifica ninguna distincion de usuario????... actualmente tengo asi la linea:

Código PHP:
Ver original
  1. <?php
  2. if($_SESSION["nivel"] == "0"){
  3. header("Location: proyecto.php");
  4. }else{
  5. header("Location: acceso_restringido.php");
  6. }
  7. ?>

y digo lo del campo privilegios pues en un php que tengo que valida el usuario en cada pagina que se llama seguridad la sentencia es asi... por eso quedo muy inquieto con la situacion que se me presenta ahora...

Código PHP:
Ver original
  1. <?
  2.  
  3. if($_SESSION["autentica"] != "SIP"){
  4.     header("Location: index.php");
  5.     exit();
  6. }
  7. ?>
  #17 (permalink)  
Antiguo 25/08/2014, 09:31
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Muy buenas,

El session_start(); debe estar en cada página, al principio, incluso en la que controla el nivel.
A ver si vamos dando con ello.

Un saludo!
__________________
diseño web | Clan Rol
  #18 (permalink)  
Antiguo 26/08/2014, 05:43
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Cita:
Iniciado por Jlopez2014 Ver Mensaje
Hola compañero disculpa te moleste de nuevo pero tuve otros pendientes no permitiendome la situación poder probar toda la adaptación de mi código con el que me ayudaste... y resulta que en la edición del php control mandaba un error con la linea 23 y conclui que era que a "datos" le hacia falta este signo "$" y pues lueo que lo agregue si pude iniciar sesión; más con las lineas a agregar en la pagina a restringir ahi si no he sabido interpretar lo más seguro y pues me manda este error: Parse error: syntax error, unexpected '}' in /home2/elian4/public_html/mip/proyecto.php on line 5

y esta es la linea que tengo, presiento que se debe a que no he sabido llamar a la pagina si el privilegio esta activo jejeje:
Código PHP:
Ver original
  1. <?php
  2. if($_SESSION["nivel"] = 0){
  3. proyecto.php
  4. }else{
  5. echo 'no tienes nivel suficiente';
  6. }
  7. ?>

Gracias y ojala puedas colaborarme que solo me falta esto para mi proyecto jejeje
El problema esta seguro que dentro de tu archivo proyecto.php no tienes cerrada unas llaves { y hace saltar ese error. Lee el codigo y mira que todas las llaves esten cerradas.
Tambien debes poner el session_start() al principio de tu script.
y $_SESSION["nivel"] = 0 siempre sera true por que lo que haces es asignar el valor 0 a $_SESSION["nivel"].
$_SESSION["nivel"] == "0" tampoco es valido por que interpreta el 0 como un string en vez de hacerlo como un numero entero.

Para php la tabla de la verdad en este caso seria
Cita:
"0" !== 0
__________________
http://www.roglastudios.es

Última edición por Dalam; 26/08/2014 a las 05:51
  #19 (permalink)  
Antiguo 26/08/2014, 06:20
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Así es! :D estoy aprendiendo a utilizar bien todo lo relacionado a las variables de sesion... gracias por tu aporte! :D pero el codigo me funciono con el cero entre comillas, probare quitandolas
  #20 (permalink)  
Antiguo 27/08/2014, 16:56
 
Fecha de Ingreso: abril-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Exclamación Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Entonces el código entero cual sería es que estoy haciendo una cosa igual y no se como se hace, AYUDA! :D
  #21 (permalink)  
Antiguo 28/08/2014, 06:14
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Hola!, no se si el aclarar tus dudas se pueda en este tema o debas crear uno, como veras soy nuevo en esto del foro más cuenta que tienes y así como me colaboraron y enseñaron yo te colaboro... feliz día! :D
  #22 (permalink)  
Antiguo 28/08/2014, 07:06
 
Fecha de Ingreso: abril-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Exclamación Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Pero el código que habeis compartido finalmente como queda esque no me funciona
  #23 (permalink)  
Antiguo 28/08/2014, 14:49
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Hola mrjanino disculpa la demora pero andaba ocupado, bueno en resumen el codigo queda asi:

primero el php que protege la pagina o da privilegios de acceder a unos cuantos usuarios:

Código PHP:
Ver original
  1. <?php
  2.     include("seguridad.php");
  3.     include("conexion.php");
  4.    
  5.     if($_SESSION["nivel"] == "1" or $_SESSION["nivel"] == "0"){
  6. ?>

ese va en la cabecera y este va el final de todo tu codigo... es la continuacion...

Código PHP:
Ver original
  1. <?php
  2.     }else{
  3.     header("Location: acceso_restringido.php");
  4.     }
  5.     ?>

y el php del control seria asi:

Código PHP:
Ver original
  1. <?
  2.      /* A continuación, realizamos la conexión con nuestra base de datos en MySQL */
  3.      $link = mysql_connect("localhost","elian4_user1","kaeling");
  4.      mysql_select_db("elian4_mip", $link);
  5.  
  6.      /* El query valida si el usuario ingresado existe en la base de datos. Se utiliza la función
  7.      htmlentities para evitar inyecciones SQL. */
  8.      $myusuario = mysql_query("select idusuario from usuarios
  9.                                 where idusuario =  '".htmlentities($_POST["usuario"])."'",$link);
  10.      $nmyusuario = mysql_num_rows($myusuario);
  11.  
  12.      //Si existe el usuario, validamos también la contraseña ingresada y el estado del usuario...
  13.      if($nmyusuario != 0){
  14.           $sql = "select idusuario, privilegios
  15.               from usuarios
  16.               where estado = 1
  17.               and idusuario = '".htmlentities($_POST["usuario"])."'
  18.               and clave = '".md5(htmlentities($_POST["clave"]))."'";
  19.           $myclave = mysql_query($sql,$link);
  20.           $nmyclave = mysql_num_rows($myclave);
  21.           $datos =mysql_fetch_array($myclave);
  22.  
  23.           //Si el usuario y clave ingresado son correctos (y el usuario está activo en la BD), creamos la sesión del mismo.
  24.           if($nmyclave != 0){
  25.                session_start();
  26.                //Guardamos dos variables de sesión que nos auxiliará para saber si se está o no "logueado" un usuario
  27.                $_SESSION["nivel"] = $datos[1];
  28.                $_SESSION["autentica"] = "SIP";
  29.                $_SESSION["usuarioactual"] = mysql_result($myclave,0,0); //nombre del usuario logueado.
  30.                //Direccionamos a nuestra página principal del sistema.
  31.                header ("Location: admin.php");
  32.           }
  33.           else{
  34.                echo"<script>alert('La contrase\u00f1a del usuario no es correcta.');
  35.               window.location.href=\"index.php\"</script>";
  36.           }
  37.      }else{
  38.           echo"<script>alert('El usuario no existe.');window.location.href=\"index.php\"</script>";
  39.      }
  40.      mysql_close($link);
  41. ?>

con estas lineas el permitir acceso solo a un grupo de usuarios es posible :D
  #24 (permalink)  
Antiguo 29/08/2014, 03:34
 
Fecha de Ingreso: abril-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Pregunta Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Y este código donde va en seguridad.php o en conexión.php o en la misma pestaña? No sé dónde va! :(

Código PHP:
<?
     
/* A continuación, realizamos la conexión con nuestra base de datos en MySQL */
     
$link mysql_connect("localhost","elian4_user1","kaeling");
     
mysql_select_db("elian4_mip"$link);
 
     
/* El query valida si el usuario ingresado existe en la base de datos. Se utiliza la función 
     htmlentities para evitar inyecciones SQL. */
     
$myusuario mysql_query("select idusuario from usuarios 
                                 where idusuario =  '"
.htmlentities($_POST["usuario"])."'",$link);
     
$nmyusuario mysql_num_rows($myusuario);
 
     
//Si existe el usuario, validamos también la contraseña ingresada y el estado del usuario...
     
if($nmyusuario != 0){
          
$sql "select idusuario, privilegios
               from usuarios
               where estado = 1
               and idusuario = '"
.htmlentities($_POST["usuario"])."' 
               and clave = '"
.md5(htmlentities($_POST["clave"]))."'";
          
$myclave mysql_query($sql,$link);
          
$nmyclave mysql_num_rows($myclave);
          
$datos =mysql_fetch_array($myclave);
 
          
//Si el usuario y clave ingresado son correctos (y el usuario está activo en la BD), creamos la sesión del mismo.
          
if($nmyclave != 0){
               
session_start();
               
//Guardamos dos variables de sesión que nos auxiliará para saber si se está o no "logueado" un usuario
               
$_SESSION["nivel"] = $datos[1];
               
$_SESSION["autentica"] = "SIP";
               
$_SESSION["usuarioactual"] = mysql_result($myclave,0,0); //nombre del usuario logueado.
               //Direccionamos a nuestra página principal del sistema.
               
header ("Location: admin.php");
          }
          else{
               echo
"<script>alert('La contrase\u00f1a del usuario no es correcta.');
               window.location.href=\"index.php\"</script>"

          }
     }else{
          echo
"<script>alert('El usuario no existe.');window.location.href=\"index.php\"</script>";
     }
     
mysql_close($link);
?>
  #25 (permalink)  
Antiguo 29/08/2014, 08:19
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Restringir acceso a ciertas paginas a algunos usuarios logeados

Hola!, tardo en responder por el trabajo jeje, pero ese ultimo codigo es del php "control" que da acceso a la pagina inicial y de paso con la modificacion hecha regula los privilegios junto al otro codigo; seguridad.php es el que no deja entrar manualmente a niguna pagina si no se esta logueado... espero poderte colaborar ;)

Etiquetas: login, restringir, usuario
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 19:47.