Foros del Web » Programando para Internet » PHP »

redirigir a un usuario dependiendo del nivel de acceso

Estas en el tema de redirigir a un usuario dependiendo del nivel de acceso en el foro de PHP en Foros del Web. Hola forosdelweb ya se que soy pesado pero es que ma vais solucionando las dudas y pequeños problemas que tenia que no sabia ni hacer ...
  #1 (permalink)  
Antiguo 30/10/2011, 15:29
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 13 años, 1 mes
Puntos: 1
redirigir a un usuario dependiendo del nivel de acceso

Hola forosdelweb ya se que soy pesado pero es que ma vais solucionando las dudas y pequeños problemas que tenia que no sabia ni hacer un formulario y ahora se hasta sql xd

PD:Espero poder recompensarlo :)

Cuando hago un login consigo que me salga no eres administrador , porque tengo una casilla con un numero y no deja acceder, pero me gustaría saber como podría ser posible al reves si los datos son ciertos que acceda a la administración xd

Alguna idea o habria que canviar algun parámetro?


----

if ($numrows!=2)
{
while ($row = mysql_fetch_assoc($query))
{
$dbusername = $row['email1'];
$dbpassword = $row['password1'];
$admin = $row ['permisos'];
if ($activated =='0')
{
die("Tu no eres administrador.");
exit();
}

}
  #2 (permalink)  
Antiguo 30/10/2011, 15:44
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

Bueno yo no lo harias así, yo lo haría con sesiones

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.  
  4.     $user = $_SESSION['user'];
  5.     switch ($user) {
  6.     case "admin":
  7.         echo "Eres admin";
  8.     break;
  9.     case "mod":
  10.         echo "eres mod";
  11.     break;
  12.     case "user":
  13.         echo "usuario normal";
  14.     break;
  15. }
  16. ?>

claro que tu mismo creas el $_SESSION['user'] con los datos de la bd.

Eso haría yo espero te sirva.
  #3 (permalink)  
Antiguo 30/10/2011, 15:50
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

cual seria mas sguro de los dos?? es que el metodo que conozco me gusta mas ..
  #4 (permalink)  
Antiguo 30/10/2011, 15:58
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

Pues de seguridad no se, el ejemplo que te mostré lo he visto en muchos sistemas prefabricados por eso lo adopté, es un poco más ordenado pero además el uso de sessiones te permite no estar preguntando a cada rato a la bd por los datos del usuario lo que se traduce en un menos carga al servidor, pues con una consulta las sessiones duran cierto tiempo y solo tienes que saber como usarlas bien.
  #5 (permalink)  
Antiguo 30/10/2011, 16:09
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

y de la otra manera me lo sabrias explicar como funciona? :P es que asi puedo elejir entre los dos metodos :)
  #6 (permalink)  
Antiguo 30/10/2011, 16:28
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

la verdad que a tu código no le hayo mucho sentido.

Código PHP:
Ver original
  1. if ($numrows!=2)//dice que si la variable $numrows es diferente de 2 proceda a
  2. {
  3.     while ($row = mysql_fetch_assoc($query))//hacer un ciclo de los datos de la bd
  4.     {
  5.          $dbusername = $row['email1'];//usuario de la base de datos igual a:
  6.          $dbpassword = $row['password1'];//paswword de la base de datos igual a
  7.          $admin = $row ['permisos'];//permisos de admin
  8.          if ($activated =='0')//no se de donde sale $activated
  9.          {
  10.                   die("Tu no eres administrador.");//mata la conexion a la bd
  11.                   exit();//sale del ciclo
  12.          }
  13.     }
  14. }

Por lo que veo este script permite conectarte a la bd pero tomando los datos de la bd :S

o sea como que pretendes hacer?

la verdad no me puedo imaginar la idea de eso.
  #7 (permalink)  
Antiguo 31/10/2011, 04:17
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

lo que hace es que mira un numero que he asignado al usuario y si es 2 por ejemplo puede pasar.

Huy ha habido error al copia el $activated tendria que ser $admin ... es que nse pk se ha copiado asi.

Gracias ! de verdad lo que me gustaria saber es si es 1 puede acceder pero si es 2 no.. y todo esto se hace a traves de if y etc pero la parte positiva no se realizarla
  #8 (permalink)  
Antiguo 31/10/2011, 09:39
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 14 años, 4 meses
Puntos: 21
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

Esta es una comprobación y redirección de usuarios, con dos tablas, una tabla personal y otra tabla usuario, donde se consulta en la tabla personal para saber si el número de cedula existe, y luego compararlo con la tabla usuario para conocer si puede ser un usuario o no, y dependiendo de esos valores redirigirlo a varias paginas separadas de acuerdo al tipo de usuario.

Este ejemplo no está ordenado, pero supongo que ilustra como se puede hacer lo que estás pidiendo

Código PHP:
<?
session_start
();//contral de sesion;
require("configuracion.php");//trae datos necesarios para establecer la conexion del archivo configuracion.php;
$con=mysql_connect($bd_host,$bd_user,$bd_password);//Conexion a la BD;
mysql_select_db($bd_base);//selecciona la BD;
$query="SELECT * FROM usuario_tb where login='$usuario' and password='$clave'"//consulta a la BD;
$result=mysql_query($query);//consultar a la BD;
if(mysql_num_rows($result)>0)//verifica si es un usuario con cuenta;
{
    
$reg=mysql_fetch_object($result);
    
//echo $reg->cedula;
    
$query2="SELECT nombre_emp,apellido_emp FROM personal_tb where cedula_emp='$reg->cedula'"//consulta a la BD;
    
$result2=mysql_query($query2);//consultar a la BD
    
$reg2=mysql_fetch_object($result2);
    
//echo $reg2->nombre_emp;
    
$nombre=$reg2->nombre_emp;
    
session_register('nombre');//(mientas tanto) despues buscar el nombre en la tabla empleado y guardar en login de sesion;
    //echo $reg->tipo;
    
$_SESSION['nombre']=$reg2->nombre_emp;//alamacena el login en el arreglo de sesion;
    
$_SESSION['apellido']=$reg2->apellido_emp;//alamacena el login en el arreglo de sesion;
    
if($reg->tipo=='Super Usuario')//verifica que tipo de empleado (depende la vista a mostrar)cambiar luego por numero;
        
header("Location:Index3.php");//redireccionamiento;
    
else
    if(
$reg->tipo=='Administrativo')
        
header("Location:Index2.php");//redireccionamiento;
    
else
    if(
$reg->tipo=='Visitante')
        
header("Location:Index4.php");//redireccionamiento;
}
else
{
    
?> <script> alert("Disculpe, Nombre de usuario o Clave incorrectos, por favor verifique"); </script> <?
    
echo '<script languaje="Javascript">location.href="index.php"</script>'//MENSAJE DE COMPROVACION;
}    
?>
  #9 (permalink)  
Antiguo 31/10/2011, 10:00
Avatar de Santiago_  
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

Yo también opino que usar sesiones te va a resultar mucho más cómodo que cualquier otro método, más que nada, por que sólo tendrás que realizar la validación una vez, y no cada vez que accedas a otra página.
Luego en cada página verifica la sesión , si existe el usuario, en caso contrario tira al usuario, y envialo a la pagina de inicio, tan fácil como eso.
  #10 (permalink)  
Antiguo 01/11/2011, 04:17
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

okey pues utilizare las sesiones :)
  #11 (permalink)  
Antiguo 01/11/2011, 14:12
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

he intentaodo entender esto del login y no hay manera de conseguirlo xd de momento he creado un archivo con la configuración de la siguiente manera

configuracion.php

$bd_host = "localhost";
$bd_user = "kfernandez92";
$bd_password = "brothers";
$bd_base = "kfernandez";
$connect =mysql_connect("$bd_host","$bd_user","$bd_password ") or die ("No está conectado");
mysql_select_db("$bd_base") or die ("No seleccionada bd");

Lo demas no lo entiendo o seria de la siguiente manera

$query="SELECT * FROM tabladelabdwhere login=¿'$usuario'? and password='$clave'"; //consulta a la BD;
  #12 (permalink)  
Antiguo 01/11/2011, 21:58
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

Creo que tienes mal los conceptos, el usuario y tu sistema siempre estarán conectados a la base de datos lo que vas a hacer es asignar permisos dependiendo de los datos que te arroje la bd.

la consulta puede ser asi, si es que el campo login es el nombre de tu usuario

debes crear por ejemplo una tabla de usuarios que contenga

id|nombre|pass|grupo

y en ella poner por ejemplo
// en este caso el id debe generarse solo con autoincrement
2|pepe|*****|4

de modo que cuando tu haces esta consulta

SELECT * FROM tabladelabd where nombre=pepe and password=*****;

te devuelva todos esos datos y tu con el numero del grupo le das los permisos con el switch case o los if, espero explicarme bien.
  #13 (permalink)  
Antiguo 06/11/2011, 10:23
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

estoy probando iniciar sesion con las variables y me da problemas , voy a cambiar el metodo

En la bd si es 10 eres administrador

http://img67.xooimage.com/files/6/7/d/bd1-2e79af0.png

Este es el login2.php

$email1=$_POST["email1"];
$password1=$_POST["password1"];
if ($email1&&$password1);
{
$connect =mysql_connect("localhost","kfernandez","brothers" ) or die ("No está conectado");
mysql_select_db("kfernandez") or die ("No seleccionada bd");
$query = mysql_query("SELECT * FROM web WHERE email1='$email1'");
$numrows = mysql_num_rows($query);
{
while ($row = mysql_fetch_assoc($query))
{
$dbusername = $row['email1'];
$dbpassword = $row['password1'];
$dbalias = $row['alias'];
$dbname = $row['name'];
$dbsurname = $row['surname'];
$selected = $row['permisos'];
}
if ($email1==$dbusername&&$password1==$dbpassword)
{
echo "Has accedido ";
session_start();
$user = $_SESSION['user'];
switch ($user) {
case "admin":
echo "Eres admin";
break;
case "mod":
echo "eres mod";
break;
case "user":
echo "usuario normal";

break;
}
}
else
echo "Contraseña errónea";
}
}
  #14 (permalink)  
Antiguo 06/11/2011, 16:00
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

session_start()

debe ir al inicio del script, nunca despues.

necesitas ver algun ejemplo de administracion de usuarios en php.

estas muy revuelto.
  #15 (permalink)  
Antiguo 07/11/2011, 08:00
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: redirigir a un usuario dependiendo del nivel de acceso

okey , bueno gracias de todas formas :) :D yalo he conseguido de otra manera.

Etiquetas: dependiendo, formulario, mysql, nivel, redirigir, sql, 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 22:26.