| |||
variables de sesion en php hola, necesito que alguien me ayude con el siguiente problema: como defino dos variables de sesión para usar simultanemente, una la uso para autenticar usuarios ($_SESSION["autenticado"]) y la otra es para definir el rol de ese usuario, es decir si es "usuario" o "administrador". Los datos los saco de una bd mysql. El tema de la autenticación lo tengo resuelto me faltaría definir los roles. Desde ya muchas gracias. |
| ||||
los roles debes definirlos en tu base de datos.. eso lo haces??? pues como crear niveles de acceso.. si es administrador o usuario... bueno si tienes eso resuelto.. es decir, tus roles definidos en la base de datos.. ya solo te queda comparar... si es administrador entonces haga tal cosa... o si es usuario entonces tal otra.. con las mismas variables de session... if ($_SESSION["rol"] == "Administrador") { // aca lo que pueda hacer o ver el administrador } if ($_SESSION["rol"] == "Usuario") { // aca lo que pueda hacer o ver el usuario } y si es por número es decir nivel de acceso.. 0..1..2....etc es lo mismo... pero ya pones la condición asi por ejemplo if ($_SESSION["rol"] <= 5) { // entoces haces lo que tenes que hacer } bueno eso era solo como una ilustración de lo que podrias hacer.. espero te sirva de algo.. un saludo. |
| |||
Antes que nada les agradezco a ambos la molestia de contestar mi consulta, y me asombro también la rapidez :) Yo tengo en la bd los campos "usuario, contra y tipo", donde este último define si es usuario o admin. Mi duda está en la sintaxis de mi código cuando uso dos variables de sesión en el mismo formulario. El código es: <? mysql_connect('localhost','root',''); mysql_select_db('AdminTS'); $ssql = "SELECT * FROM users WHERE usuario ='$usuario' and contra='$contra'"; $rs=mysql_query($ssql); if (mysql_num_rows($rs)!=0){ session_start(); $_SESSION["autenticado"]="SI"; if ($tipo=="admin"){ $_SESSION["usuario"]="admin";} header("Location: frames2.php"); } else { header("Location: login.php?errorusuario=si"); } mysql_free_result($rs); mysql_close(); ?> // es decir, una vez verificado usuario y psw me asignaría "autenticado=si" y depende el tipo de usuario genero otra variable de sesión para después levantarla desde otro formulario y mostrar los menués adecuados para ese usuario. |
| ||||
mmm tu session_start() debes estar en la primera línea <? session_start(); mysql_connect('localhost','root',''); mysql_select_db('AdminTS'); $ssql = "SELECT * FROM users WHERE usuario ='$usuario' and contra='$contra'"; $rs=mysql_query($ssql); if (mysql_num_rows($rs)!=0){ $_SESSION["autenticado"]="SI"; if ($tipo=="admin"){ $_SESSION["usuario"]="admin";} header("Location: frames2.php"); } else { header("Location: login.php?errorusuario=si"); } mysql_free_result($rs); mysql_close(); ?> mmm y no tenes problema con usar las variables de sesion... |
| |||
Salome, mil gracias por tu ayuda!! Te molesto con una más (espero que sea la última!!!) Si lo anterior está bien entonces el problema lo tengo cuando tomo la variable en el otro formulario. El error que me aparece es: Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /var/www/html/utopix/menuizq.php on line 18 <? session_start(); if ($_SESSION["usuario"]=="admin"){ $user="admin"; } ?> <html> <body> <br> <table > <tr><th>Menú Principal</th></tr> <tr align=left> <td> <a href='consulta.php' target="menuder">Visualizar Tabla</a></td></tr> <? if($user=="admin") echo "<tr align=left><td><a href='consulta2.php' target="menuder">Configurar Tab la</a></td></tr>"; echo "<tr align=left><td><a href='registro.php' target="menuder">Añadir U suario</a></td></tr>"; ?> <tr align=left><td> <br> <a href='salir.php'>Salir</a></td></td> </table> besos |
| ||||
Hola pscheve.... disculpa por la demora es que tenia que terminar con un modulo. bueno yo te diria que lo hagas asi : [PHP] //esto es tuyo $ssql = "SELECT * FROM users WHERE usuario ='$usuario' and contra='$contra'"; $rs=mysql_query($ssql); if (mysql_num_rows($rs)!=0){ session_start(); $_SESSION["autenticado"]="SI"; if ($tipo=="admin"){ $_SESSION["usuario"]="admin";} header("Location: frames2.php"); } else { header("Location: login.php?errorusuario=si"); } ////////////////////////////////////////////////////////////////// //y yo lo haria : //pero que no se te olvide esto debe de venir del archivo index.html o php //como un submit ok //archivo login.php $ssql = "SELECT tipo FROM users WHERE usuario ='$usuario' and contra='$contra'"; $rs=mysql_query($ssql); $get=mysql_fetch_array($rs); //supongo que $tipo es el tipo de usaurio $tipo= $count_get=mysql_num_rows($rs); if($count_get>0){ $autenticado[0]=$get['tipo']; $autenticado[1]=$get['pers_nombres']; //los datos que tu quieras session_start(); if (session_is_registered("autenticado")){ $autenticado[0]=$get['tipo']; $autenticado[1]=$get['pers_nombres']; }else{ session_register("autenticado"); } $aux="Location: ".$WWW->host."/destino1.php"; header($aux); }else{ $aux="Location: ".$WWW->host."/index.php?error=true"; header($aux); } /////////// //////////////////aqui tienes que crear un archivo que va servir como //cabecera ok //archivo valusu.php <? session_start(); if(empty($_SESSION['sai9001'])){ $aux=encode_url_simple("error@en el manejo de la session.@E1@1"); $aux="Location: index.php?error=true"; header($aux); } $USERD->tipo=$sai9001[0]; $USERD->nombre=$sai9001[1]; ?> /////////////////////////////////////////////////// //el archivo destino1.php include("valusu.php"); global $USERD; <? if ($USERD->tipo=="admin"){ $user="admin"; } ?> <html> <body> <br> <table > <tr><th>Menú Principal</th></tr> <tr align=left> <td> <a href='consulta.php' target="menuder">Visualizar Tabla</a></td></tr> <? if($user=="admin") echo "<tr align=left><td><a href='consulta2.php' target="menuder">Configurar Tab la</a></td></tr>"; echo "<tr align=left><td><a href='registro.php' target="menuder">Añadir U suario</a></td></tr>"; ?> <tr align=left><td> <br> <a href='salir.php'>Salir</a></td></td> </table> [PHP] a ver dime que pasa con este codigo... PD: en el archivo ini tiene que estar activado el VARIABLES GLOBALES ok... el tag(<? ?>) y listo... saludos
__________________ Cita: Att...El éxito se alcanza convirtiendo cada paso en una meta y cada meta en un paso :pensando: Tu amigo Willy... :aplauso: |
| |||
Ese tal: $_SESSION["autenticado"]="SI"; está de más como varaible de sesión si ya crean otras varaibels como el "user" o ahora una más extra del "nivel" de acceso .. Fijesen que no aporta nada (más que engrosar el tamaño de una sesión) .. es redundante, ya tienen otras variables que siempre se crean cuando el usuario se autentifica. Un saludo, |
| |||
Willjce gracias por tu voluntad, aunque sigue sin funcionar...tengo un par de consultas para hacerte: en el código de más abajo, la variable de sesión a llamar sería $_SESSION['autenticado'] según como venía del login.php que me mandaste?? y el $USERD->tipo=$autenticado[0]; lo mismo?? otra: en login.php que función cumplen sesion_is_registered y session_register?? bueno, saludos amigo //archivo valusu.php <? session_start(); if(empty($_SESSION['sai9001'])){ $aux=encode_url_simple("error@en el manejo de la session.@E1@1"); $aux="Location: index.php?error=true"; header($aux); } $USERD->tipo=$sai9001[0]; $USERD->nombre=$sai9001[1]; ?> |
| |||
El código funciona a las maravillas Will!!!! Lo único que hay tener cuidado es cuando se presentan los datos en la tabla hay que poner las barras adelante... echo "<tr align=left><td><a href=\'consulta2.php\' target=\"menuder\">Configurar Tabla</a></td></tr>"; echo "<tr align=left><td><a href=\'registro.php\' target=\"menuder\">Añadir Usuario</a></td></tr>"; Muchas gracias comunidad phpera!!! saludos |
| ||||
hola pscheve!!! bueno que bueno que te funcione el codigo que te di!! pero creo que tienes algunas dudas de lo que estas usando te lo voy a aclarar ok... Código PHP: Código PHP:
__________________ Cita: Att...El éxito se alcanza convirtiendo cada paso en una meta y cada meta en un paso :pensando: Tu amigo Willy... :aplauso: |