Menu por tipo de usuario
Saludos compañeros del foro!!. tengo un problema, trabajo con php+Mysql, y sucede lo siguiente estoy tratando de hacer un include con menu por el tipo de usuario, me explico, si el usuario logeado es administrador le deberia salir un menu especifico para administrador, y si el usuario es operador le deberia salir un menu especifico para operador diferente al del administrador. espero haberme explicado bien. anexo les dejo el codigo que utilizo:
Código PHP:
Saludos |
Se trata de adivinar el problema?
|
D-MO, disculpa es que lo termine antes completarlo pero ya lo edite y complete lo que trataba de explicar. disculpas.
|
Tal vez el error esté en la consulta
Pues, esta linea esta muy sospechosa
Código PHP:
La mejor forma de saber si tu consulta "sql" esta bien, es imprimirla antes de ejecutarla. Saludos... |
¿Estás seguro de que esa consulta te regresa algo? Porque da la impresión de que no encuentra nada y mysql_num_rows regresa 0. También podría ser que haya un error en la consulta. Si display_errors está inactivo, no lo notarías pero haría que mysql_num_rows regrese false.
// Saludos |
bueno roman, efectivamente, hice el arreglo que me sugirio Hagen:
y me sale el siguiente error: Cita:
|
¿Mejor manera de hacer qué? ¿Reproducir el error? Si en tu tabla hay un campo llamado group1 entonces no haría falta ningún cambio. Por el contrario, si no existe tal campo, entonces habría que ver qué es lo que realmente intentabas al poner group1 (no era una variable porque se presenta un error).
El hecho de que ahora te muestre un error significa que sí tienes activado el display_errors. Por tanto, parece que la consulta era correcta pero no te está regresando nada. Quizá nosea Operador, sino operador (o minúscula). En todo caso, haz como dice Hagen, e imprime la consulta: Código PHP:
// Saludos |
Ya hice la impresion y ya vi cual es el problema:
donde dice: Cita:
que hago aqui? debo arreglar la consulta. aclaro que tengo un hidden field llamado 'user' y tiene ese valor: Código PHP:
seguro que es algo muy sencillo pero no logro caer en ello. Saludos |
Efectivamente eso era lo que me faltaba, ahora si funciona. la consulta lo tenia que hacerla asi:
Gracias a Roman, D-Mo y Hagen por su tiempo. mil gracias!! |
Hola,
Yo lo que me pregunto es si el acceso a "menu_adm.html" podría tener algunas consecuencias negativas, puesto que, al fin y al cabo, alguien podría dar con la URL necesaria... no sé. Digo que me lo pregunto, evidentemente, no sé si pasaría algo o no podría pasar nada. |
Bueno dec no se a que te refieres pero yo lo tengo de esta manera:
Código PHP:
|
Hola,
Pues nos vamos a "menu.php". Yo me refiero a que alguien averigue que existe un archivo "menu_adm.html" y lo "visite". En este caso, si el contenido es el que muestras, se incluirá el Script "menu.php". Ahora bien, ¿puede haber algún problema porque alguien "sin privilegios" acceda a "menu.php"? Yo no lo sé. Y esa es la duda que tenía. Pero, ya digo, que tal vez no haya ningún problema, que en realidad es algo que me ha chocado, pero, nada más, puedo estar equivocado y que en realidad no se de ningún problema. :) |
dec tiene razón. Si toda la seguridad se basa en esa elección en menu.php, alguien podrá acceder directo a menu_adm.html. Quizá baste que pongas menu_adm.html fuera del alcance global, bien sea sacándolo del árbol de directorios web e indicando la ruta completa en el include, o bien con alguna directiva de Apache en un htaccess (suponiendo que usas Apache).
// Saludos |
Gracias Dec y Roman, tratare de hacer sus recomendaciones. Mil Gracias.
|
Cuando autenticas al usuario, bien podrías guardar su estatus de operador en otra variable de sesión, y así evitar una consulta al servidor en cada aceso al menú.
// Saludos |
Cita:
Hasta Luego .- |
Pero en este caso no hay error, la consulta es correcta; es sólo que no había ningún registro que la satisficiera.
// Saludos |
Cita:
Ya dirán....:D Hasta Luego .- |
count a la variable $result no creo que funcione. En todo caso, se hace un count en la misma consulta sql:
pues de esta manera minimizamos el tamaño de los datos que se traen del servidor. Porque, a menos que se necesiten otros datos, en este contexto parece que sólo se quiere validar, así que basta saber si el valor regresado es 0 o mayor que 0. Ahora bien, lo de usar mysql_error tambien hay que hacerlo con cuidado; yo diría que sólo durante el desarrollo pero no en producción, porque puede mostrar información acerca de nuestra base de datos que no convenga. // Saludos |
Cita:
Ahora estoy probando PDO, para ver que tal. Hasta Luego .- |
Hola,
Yo he visto usar la función "mysql_error()" únicamente para comprobar si su resultado es distinto a una cadena vacía, lo que indicaría que se produjo un error. O sea, no tanto para mostrar el mensaje de error sino para saber que existe. De todos modos, si se puede comprobar de otro modo... no se. Yo sólo quería decir que lo he visto hacer así. :) |
Cita:
Código PHP:
Hasta Luego .- |
Dec:
Lo que puse mas arriba al momento de producirse un error arrojaría lo siguiente: Código:
Se registro el siguiente error al seleccionar la base de datos, descripción del error : Unknown database 'lucasarts_gvm' Hasta Luego .- |
Yo uso el mysql_error() y me funciona muy bien. Saludos.
|
Cita:
Cita:
// Saludos |
Cita:
qué cosas no... :p Hasta LUego .- |
La franja horaria es GMT +2. Ahora son las 19:02:55. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi