Foros del Web » Programando para Internet » PHP »

Restringir el acceso a usuarios

Estas en el tema de Restringir el acceso a usuarios en el foro de PHP en Foros del Web. Hola... Buenos dias... Estoy realizando una pagina para la empresa donde me gustaria limitar el acceso a traves del tipo de usuario, es decir, manager, ...
  #1 (permalink)  
Antiguo 13/04/2012, 08:22
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Restringir el acceso a usuarios

Hola... Buenos dias... Estoy realizando una pagina para la empresa donde me gustaria limitar el acceso a traves del tipo de usuario, es decir, manager, admin, trabajador, etc... Y que no puede ser posible ingresar escribiendo la url... He visto informacion en internet, pero no me ha quedado del todo claro... Muchas gracias

P.D. Cada usuario tendra una carpeta por separado donde iran incluidos los archivos que podra ver, es decir, hay una carpeta admin, con su respectivo index y los archivos que manejara exclusivamente, igual para los otros tipos de usuario
  #2 (permalink)  
Antiguo 13/04/2012, 08:29
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 9 meses
Puntos: 641
Respuesta: Restringir el acceso a usuarios

session_start()
$_SESSION[]

y en tu bd agregar una tabla de grupos de usuarios.
  #3 (permalink)  
Antiguo 13/04/2012, 08:31
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Respuesta: Restringir el acceso a usuarios

Cita:
Iniciado por memoadian Ver Mensaje
session_start()
$_SESSION[]

y en tu bd agregar una tabla de grupos de usuarios.
Vaya, que respuesta tan rapida Disculpa la molestia, pero podrias ser mas especifico... Es que soy un poco novato en php
  #4 (permalink)  
Antiguo 13/04/2012, 08:46
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 9 meses
Puntos: 641
Respuesta: Restringir el acceso a usuarios

es que es un tema amplio, te puse esas funciones por que los eprmisos de una web en php se hacen con sessiones, googlealo, hay muchos ejemplos de uso de sesiones con php
  #5 (permalink)  
Antiguo 13/04/2012, 08:59
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Restringir el acceso a usuarios

Memoadian tiene razon, es un tema muy extenso que te puede afectar a toda tu estructura.
Tal y como yo le resuelvo, es:
1. en index php, llamo a una funcion que hace los includes y conexion a db y verifica usuario (con sesiones). A continuacion, procesa la peticion de la url.
2. El resto de archivos php, necesitan lo inicializado en index.php. Es decir, si no pasas por index, no funciona nada. Asi evitas que se invoque a un archivo 'a pelo'. Tambien te ahorras el control de usuario para cada archivo.
  #6 (permalink)  
Antiguo 13/04/2012, 09:05
Avatar de nicosli  
Fecha de Ingreso: junio-2009
Ubicación: Cancún, Quintana Roo, Mexico
Mensajes: 72
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Restringir el acceso a usuarios

empieza con lo más básico, debes de usar una base de datos para guardar tus usuarios y con $_SESSION[] guardas la sesión y en cada página al inicio debes de poner session_start() para que puedas ver las sessiones guardadas y de ahi permitir o no permitir el acceso al usuario. Definitivamente si es un tema muy extenso.
  #7 (permalink)  
Antiguo 13/04/2012, 09:56
Avatar de a_gomez  
Fecha de Ingreso: marzo-2012
Ubicación: /var/www/
Mensajes: 48
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Restringir el acceso a usuarios

lo puedes hacer de la siguiente manera ...

primero tienes que tener uan base de datos minimo con los campos de ususario, contraseña y un campo grupos ..

yo utulizaria estos campos como minimo ..

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `usuarios` (
  2.   `id` VARCHAR(10) NOT NULL DEFAULT '',
  3.   `login` VARCHAR(15) NOT NULL DEFAULT '',
  4.   `nombre` VARCHAR(15) NOT NULL DEFAULT '',
  5.   `contraseña` VARCHAR(15) NOT NULL DEFAULT '',
  6.   `grupo` VARCHAR(15) NOT NULL DEFAULT '',  
  7. PRIMARY KEY (`id`)
  8. )

haora en tu pagina de login debes tener esta estrucutura..

Código PHP:
Ver original
  1. <html>
  2. <head></head>
  3. <body>
  4.     <form action="controladora.php" method="post" class="log">
  5.     <h3 align="center"> POR FAVOR DIGITE SU USUARIO Y CONTRASEÑA </h3>
  6.     <br><br>
  7.         <table align="center" width="30%">
  8.             <tr align="right">
  9.                 <td>
  10.                     <b>USUARIO:</b>
  11.                 </td>
  12.                 <td  width="15%">
  13.                     <input type="text" name="usuario"  SIZE="20%" >
  14.                 </td>
  15.             </tr>
  16.             <tr align="right">
  17.                 <td>
  18.                     <b>CONTRASEÑA:</b>
  19.                 </td>
  20.                 <td  width="15%">
  21.                     <input type="password" name="pass"  SIZE="21%">
  22.                 </td>
  23.             </tr>
  24.             <tr align="center">
  25.                 <td colspan="2">
  26.                     <?php
  27.                         if (isset($_GET["error"]) && $_GET["error"] == "true"){?>
  28.                             Usuario y contraseña erroneos.
  29.                             <?php
  30.                             }
  31.                             ?>
  32.                 </td>
  33.             </tr>
  34.             <tr>
  35.                 <td colspan="2" align="center"><br><br><br>
  36.                     <input type="submit" name="enviar" value="ENTRAR">
  37.                 </td>
  38.             </tr>
  39.         </table>
  40.     </form>
  41. <body>
  42. </html>

ok si te fijas el form envia los datos a una pagina de control ... que es esta

Código PHP:
Ver original
  1. <?php
  2.     require("conexion.php");
  3.  
  4.     if(isset($_POST["usuario"])){
  5.         $usuario=$_POST["usuario"];
  6.     }
  7.     if(isset($_POST["pass"])){
  8.         $clave=$_POST["pass"];
  9.     }
  10.     $consulta="SELECT * FROM usuarios WHERE login = '$usuario' AND contraseña= '$clave'";
  11.     $datos=mysql_query($consulta,$link) or die (mysql_error());
  12.    
  13.     $cantidad=mysql_num_rows($datos);
  14.     if($cantidad <= 0){
  15.         header("location:index.php?error=true");
  16.     }else{
  17.        
  18.         session_start();
  19.         $fila=mysql_fetch_array($datos);
  20.         $_SESSION["id"]=$fila["id"];
  21.        
  22.  
  23.         // Aqui tendras que poner tantos if como grupos tengas ....
  24.        
  25.                               if($fila["grupo"]== 'GRUPO1'){  
  26.        
  27.             header("location:grupo1/index.php");
  28.         }else{
  29.              if($fila["grupo"]== 'GRUPO2'){
  30.                                                  
  31.                                                       header("location:grupo2/index.php");
  32.                                                
  33.                                               }
  34.         }
  35.        
  36.     }
  37. ?>

Espereo que me entiandas y si necesitas ayuda solo comenta .....
  #8 (permalink)  
Antiguo 13/04/2012, 10:12
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Respuesta: Restringir el acceso a usuarios

Cita:
Iniciado por a_gomez Ver Mensaje
lo puedes hacer de la siguiente manera ...

primero tienes que tener uan base de datos minimo con los campos de ususario, contraseña y un campo grupos ..

yo utulizaria estos campos como minimo ..

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `usuarios` (
  2.   `id` VARCHAR(10) NOT NULL DEFAULT '',
  3.   `login` VARCHAR(15) NOT NULL DEFAULT '',
  4.   `nombre` VARCHAR(15) NOT NULL DEFAULT '',
  5.   `contraseña` VARCHAR(15) NOT NULL DEFAULT '',
  6.   `grupo` VARCHAR(15) NOT NULL DEFAULT '',  
  7. PRIMARY KEY (`id`)
  8. )

haora en tu pagina de login debes tener esta estrucutura..

Código PHP:
Ver original
  1. <html>
  2. <head></head>
  3. <body>
  4.     <form action="controladora.php" method="post" class="log">
  5.     <h3 align="center"> POR FAVOR DIGITE SU USUARIO Y CONTRASEÑA </h3>
  6.     <br><br>
  7.         <table align="center" width="30%">
  8.             <tr align="right">
  9.                 <td>
  10.                     <b>USUARIO:</b>
  11.                 </td>
  12.                 <td  width="15%">
  13.                     <input type="text" name="usuario"  SIZE="20%" >
  14.                 </td>
  15.             </tr>
  16.             <tr align="right">
  17.                 <td>
  18.                     <b>CONTRASEÑA:</b>
  19.                 </td>
  20.                 <td  width="15%">
  21.                     <input type="password" name="pass"  SIZE="21%">
  22.                 </td>
  23.             </tr>
  24.             <tr align="center">
  25.                 <td colspan="2">
  26.                     <?php
  27.                         if (isset($_GET["error"]) && $_GET["error"] == "true"){?>
  28.                             Usuario y contraseña erroneos.
  29.                             <?php
  30.                             }
  31.                             ?>
  32.                 </td>
  33.             </tr>
  34.             <tr>
  35.                 <td colspan="2" align="center"><br><br><br>
  36.                     <input type="submit" name="enviar" value="ENTRAR">
  37.                 </td>
  38.             </tr>
  39.         </table>
  40.     </form>
  41. <body>
  42. </html>

ok si te fijas el form envia los datos a una pagina de control ... que es esta

Código PHP:
Ver original
  1. <?php
  2.     require("conexion.php");
  3.  
  4.     if(isset($_POST["usuario"])){
  5.         $usuario=$_POST["usuario"];
  6.     }
  7.     if(isset($_POST["pass"])){
  8.         $clave=$_POST["pass"];
  9.     }
  10.     $consulta="SELECT * FROM usuarios WHERE login = '$usuario' AND contraseña= '$clave'";
  11.     $datos=mysql_query($consulta,$link) or die (mysql_error());
  12.    
  13.     $cantidad=mysql_num_rows($datos);
  14.     if($cantidad <= 0){
  15.         header("location:index.php?error=true");
  16.     }else{
  17.        
  18.         session_start();
  19.         $fila=mysql_fetch_array($datos);
  20.         $_SESSION["id"]=$fila["id"];
  21.        
  22.  
  23.         // Aqui tendras que poner tantos if como grupos tengas ....
  24.        
  25.                               if($fila["grupo"]== 'GRUPO1'){  
  26.        
  27.             header("location:grupo1/index.php");
  28.         }else{
  29.              if($fila["grupo"]== 'GRUPO2'){
  30.                                                  
  31.                                                       header("location:grupo2/index.php");
  32.                                                
  33.                                               }
  34.         }
  35.        
  36.     }
  37. ?>

Espereo que me entiandas y si necesitas ayuda solo comenta .....


Esta bastante claro tu ejemplo... Supongo que en el if($fila) cuando haces la comparacion, en mi caso lo sustituyo por el nombre del grupo, es decir, admin, manager, etc.... No me quedo muy claro el if que haces en el formulario, si no es mucha molestia, me lo podrias explicar mejor... Muchas gracias
  #9 (permalink)  
Antiguo 13/04/2012, 10:17
Avatar de a_gomez  
Fecha de Ingreso: marzo-2012
Ubicación: /var/www/
Mensajes: 48
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Restringir el acceso a usuarios

este if se hace para llamar la variable cuando colocas mal es usuario o la contraseña se recarga la pagina pero con un mensaje...

Código PHP:
Ver original
  1. <?php
  2.              if (isset($_GET["error"]) && $_GET["error"] == "true"){?>
  3.              Usuario y contraseña erroneos. // Este es el mensaje
  4. <?php
  5.             }
  6.  ?>
  #10 (permalink)  
Antiguo 13/04/2012, 10:21
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Respuesta: Restringir el acceso a usuarios

Cita:
Iniciado por a_gomez Ver Mensaje
este if se hace para llamar la variable cuando colocas mal es usuario o la contraseña se recarga la pagina pero con un mensaje...

Código PHP:
Ver original
  1. <?php
  2.              if (isset($_GET["error"]) && $_GET["error"] == "true"){?>
  3.              Usuario y contraseña erroneos. // Este es el mensaje
  4. <?php
  5.             }
  6.  ?>
Esta bien Por cierto, tendria que hacer un include al archivo (que en tu caso se llama controladora.php) en todas las paginas?
  #11 (permalink)  
Antiguo 13/04/2012, 10:31
Avatar de a_gomez  
Fecha de Ingreso: marzo-2012
Ubicación: /var/www/
Mensajes: 48
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Restringir el acceso a usuarios

no eso es inecesario....
por que creees que deberia ir el include ???

la pagina de control solo se debe usar cuando el ususario hace un intento de logueo si el logueo es correcto

va a entrar a su carpeta de grupo correspondiente lo que debe ir en cada pagina es la varible de session
para tener el control de que solo el usuario logueado pueda acceder a la pagina y ademas pueda cerrar su session ..



Código PHP:
Ver original
  1.         if (isset($_GET["cerrar"])){
  2.             session_unset();
  3.             session_destroy();
  4.             unset($_SESSION["id"]);
  5.         }
  6.         if (!isset($_SESSION["id"])){
  7.             header("location:login.php");
  8.         }

y solo bastaria un href ...

Código HTML:
Ver original
  1. <a href="form.php?cerrar=true">Cerrar Sesion</a>

seria inecesario colocar un include de controladora .......
  #12 (permalink)  
Antiguo 13/04/2012, 10:39
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Respuesta: Restringir el acceso a usuarios

Cita:
Iniciado por a_gomez Ver Mensaje
no eso es inecesario....
por que creees que deberia ir el include ???

la pagina de control solo se debe usar cuando el ususario hace un intento de logueo si el logueo es correcto

va a entrar a su carpeta de grupo correspondiente lo que debe ir en cada pagina es la varible de session
para tener el control de que solo el usuario logueado pueda acceder a la pagina y ademas pueda cerrar su session ..



Código PHP:
Ver original
  1.         if (isset($_GET["cerrar"])){
  2.             session_unset();
  3.             session_destroy();
  4.             unset($_SESSION["id"]);
  5.         }
  6.         if (!isset($_SESSION["id"])){
  7.             header("location:login.php");
  8.         }

y solo bastaria un href ...

Código HTML:
Ver original
  1. <a href="form.php?cerrar=true">Cerrar Sesion</a>

seria inecesario colocar un include de controladora .......
Muchas gracias... En dado caso, si se podria incluir el ultimo codigo (donde se destruye la sesion y se redirige si no existe una sesion) en un archivo, para evitar tener que colocarlo en cada una de las paginas? Y disculpa la molestia
  #13 (permalink)  
Antiguo 13/04/2012, 10:58
Avatar de a_gomez  
Fecha de Ingreso: marzo-2012
Ubicación: /var/www/
Mensajes: 48
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Restringir el acceso a usuarios

es necesario e indispensable para todas las paginas depues del logueo..
supongamos que despues de que el usuario se loguea en tu sistema entra una pagina la cual seria algo asi ..

supongamos que esta pagina se llama admin.php ....

Código PHP:
Ver original
  1. <html>
  2. <head></head>
  3. <body>
  4. // aqui va el inicio de la session
  5.  
  6. // estos if son para cuando el usuario desea cerrar la session.
  7.  
  8.         if (isset($_GET["cerrar"])){
  9.             session_unset();
  10.             session_destroy();
  11.             unset($_SESSION["id"]);
  12.         }
  13. // este if dirige a la pagina despues de dar cerrar session
  14.  
  15.         if (!isset($_SESSION["id"])){
  16.             header("location:login.php");
  17.         }
  18.  
  19.  
  20. ------------------------------------------------------------
  21.  
  22. En esta parte va lo que es tu pagina como tal
  23. -----------------------------------------------------------
  24.  
  25.  
  26. // este es el enlace para cerrar la session
  27.  
  28. <a href="admin.php?cerrar=true">Cerrar Sesion</a>
  29.  
  30. </body>
  31. </html>
  #14 (permalink)  
Antiguo 13/04/2012, 10:59
Avatar de a_gomez  
Fecha de Ingreso: marzo-2012
Ubicación: /var/www/
Mensajes: 48
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Restringir el acceso a usuarios

si no se hace esto cualquier persona que coloque la url en el navegador puede acceder a la pagina sin necesidad de loguearse ye so no tendria sentido ...

me refiero a que si una perso coloca http://tuservidor/admin/index.php va a acceder a la informacion que debe acceder solo un adminitrador podria mirar sin necesidad de pasar por el sisitema de logueo
  #15 (permalink)  
Antiguo 13/04/2012, 11:21
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 6 meses
Puntos: 9
Respuesta: Restringir el acceso a usuarios

Cita:
Iniciado por a_gomez Ver Mensaje
si no se hace esto cualquier persona que coloque la url en el navegador puede acceder a la pagina sin necesidad de loguearse ye so no tendria sentido ...

me refiero a que si una perso coloca http://tuservidor/admin/index.php va a acceder a la informacion que debe acceder solo un adminitrador podria mirar sin necesidad de pasar por el sisitema de logueo
Te entiendo perfectamente... Lo bueno es que solo es copiar y pegar Muchas gracias por tu ayuda hermano... Y a los demas por sus respuestas y por su tiempo

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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:56.