Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
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:
<?php 
include('db.php');  
$sql="select * from authorize where username='$user' and group1 <> 'Operador'";
$resultmysql_query($sql);
if(
mysql_num_rows($result))
{
 while( 
$row mysql_fetch_array($result) ) 
    { 
       include(
'menu_adm.html');
       }
    } else {
         include(
'menu_op.html');
         }    

 
 
?>
en este codigo trato de interpretar que si el tipo de usuario es distinto a Operador me deberia salir el menu de administrador "menu_adm.html" de lo contrario el menu de operador "menu_op.html". pero no me funciona!!!. me sale el menu de operador sin importar que el usuario sea administrador.

Saludos
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.

Última edición por enecumene fecha: 14-07-2007 a las 01:25:57.
Responder Con Cita
  #2  
Antiguo 14-07-2007
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Se trata de adivinar el problema?
Responder Con Cita
  #3  
Antiguo 14-07-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
D-MO, disculpa es que lo termine antes completarlo pero ya lo edite y complete lo que trataba de explicar. disculpas.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #4  
Antiguo 14-07-2007
Avatar de Hagen
Hagen Hagen is offline
Miembro
 
Registrado: ene 2004
Posts: 65
Poder: 21
Hagen Va por buen camino
Talking Tal vez el error esté en la consulta

Pues, esta linea esta muy sospechosa
Código PHP:
$sql="select * from authorize where username='$user' and group1 <> 'Operador'"
group1 no sera $group1

La mejor forma de saber si tu consulta "sql" esta bien, es imprimirla antes de ejecutarla.

Saludos...
Responder Con Cita
  #5  
Antiguo 14-07-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿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
Responder Con Cita
  #6  
Antiguo 14-07-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
bueno roman, efectivamente, hice el arreglo que me sugirio Hagen:

Código SQL [-]
$sql="select * from authorize where username='$user' and ".$grupo." <> 'Operador'";

y me sale el siguiente error:

Cita:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\seopc\admin\menu.php on line 5
hay alguna mejor manera de hacerlo?. Gracias.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #7  
Antiguo 14-07-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿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:
echo $sql
para asegurarte que estás mandando lo correcto.

// Saludos
Responder Con Cita
  #8  
Antiguo 14-07-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Ya hice la impresion y ya vi cual es el problema:

Código SQL [-]
  select * from authorize where username='' and group1 <> 'Operador'

donde dice:

Cita:
where username=''
me sale en blanco. estoy tratando de resolverlo pero que va algo tan sencillo me tiene en la loma..

que hago aqui? debo arreglar la consulta. aclaro que tengo un hidden field llamado 'user' y tiene ese valor:

Código PHP:
<? echo $_SESSION[user_name];?>
la consulta la deberia hacer asi?

Código SQL [-]
select * from authorize where username='$_SESSION[user_name]' and group1 <> 'Operador'

seguro que es algo muy sencillo pero no logro caer en ello. Saludos
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #9  
Antiguo 14-07-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Efectivamente eso era lo que me faltaba, ahora si funciona. la consulta lo tenia que hacerla asi:

Código SQL [-]
select * from authorize where username='$_SESSION[user_name]' and group1 <> 'Operador'

Gracias a Roman, D-Mo y Hagen por su tiempo. mil gracias!!
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #10  
Antiguo 14-07-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 14-07-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Bueno dec no se a que te refieres pero yo lo tengo de esta manera:

Código PHP:
<td width="187" valign="top" bgcolor="#000000"><div align="center">
      <p>
      <span class="style19"><? include('menu.php '); ?></span></p>
    </div></td>
no se si de esta manera trae consecuencias negativas.. Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #12  
Antiguo 14-07-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #13  
Antiguo 14-07-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #14  
Antiguo 14-07-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Gracias Dec y Roman, tratare de hacer sus recomendaciones. Mil Gracias.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #15  
Antiguo 14-07-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #16  
Antiguo 14-07-2007
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por enecumene
Ya hice la impresion y ya vi cual es el problema:

Código SQL [-]
select * from authorize where username='' and group1 <> 'Operador'
Te recomiendo ampliamente que uses mysql_error

Hasta Luego .-
__________________
No todo es como parece ser...
Responder Con Cita
  #17  
Antiguo 14-07-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #18  
Antiguo 14-07-2007
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por roman
Pero en este caso no hay error, la consulta es correcta; es sólo que no había ningún registro que la satisficiera.
Claro..., pero como buena práctica yo lo uso siempre para evitar otros quebraderos de cabeza, por otra parte creo que se podría subsanar con count a la variable $result, si es mayor a 0, aplicamos la función mysql_num_rows, no sé, no recuerdo del todo pero al parecer lo he usado en algunas partes de esa forma.

Ya dirán....

Hasta Luego .-
__________________
No todo es como parece ser...
Responder Con Cita
  #19  
Antiguo 14-07-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
count a la variable $result no creo que funcione. En todo caso, se hace un count en la misma consulta sql:

Código SQL [-]
select count(*) from authorize where username='$_SESSION[user_name]' and group1 <> 'Operador'

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
Responder Con Cita
  #20  
Antiguo 14-07-2007
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por roman
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.
Claro, puede ser peligroso, sin embargo las librerías PEAR, específicamente el package DB tiene varios métodos de capturar error, uno de ellos es el getUserInfo y el otro es getDebugInfo, el primero es para entornos de producción y el segundo para entornos de desarrollo, ambos muestran mensajes adecuados para cada situación para no arriesgar la seguridad.

Ahora estoy probando PDO, para ver que tal.

Hasta Luego .-
__________________
No todo es como parece ser...

Última edición por lucasarts_18 fecha: 14-07-2007 a las 06:07:53.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi4PHP, Menu. tipo Qadram JXJ PHP 3 17-06-2007 05:26:06
Que tipo de Menu puedo hacer? Antuan Varios 6 18-07-2005 19:44:35
Menu Tipo Windows niogon Varios 1 21-09-2004 09:26:51
Duda sobre sistema ulti-usuario y mono-usuario simon Varios 1 07-06-2004 18:35:44
menu tipo xp ronimaxh Varios 2 05-08-2003 02:20:20


La franja horaria es GMT +2. Ahora son las 20:51:04.


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
Copyright 1996-2007 Club Delphi