Foros del Web » Programando para Internet » PHP »

Autentificador de Cluster + javascript

Estas en el tema de Autentificador de Cluster + javascript en el foro de PHP en Foros del Web. Estoy realizando una pagina en dreamweaver en donde uso capaz para mostrar menus desplegables, dependiendo el usario que acceseda se visualizaran los menus que tengan ...
  #1 (permalink)  
Antiguo 04/12/2003, 11:13
 
Fecha de Ingreso: noviembre-2002
Ubicación: Veracruz
Mensajes: 48
Antigüedad: 21 años, 5 meses
Puntos: 0
Autentificador de Cluster + javascript

Estoy realizando una pagina en dreamweaver en donde uso capaz para mostrar menus desplegables, dependiendo el usario que acceseda se visualizaran los menus que tengan asignados.

ok, bueno lo que trato de hacer es lo siguiente:

El autentificador de cluster cuenta con una variable que se llama nivel de acceso, bueno esa variable esta bien por que me sirve pero aparte agregue 8 variables mas poniedoles "menu1...menu8" respectivamente. En el archivo aut_verifica.inc.php hice los siguiente cambios:

Código PHP:
$_SESSION['id']=$usuario_datos['ID'];
$_SESSION['nivel']=$usuario_datos['nivel'];
$_SESSION['login']=$usuario_datos['usuario'];
$_SESSION['pass']=$usuario_datos['pass'];
$_SESSION['menu1']=$usuario_datos['menu1'];
$_SESSION['menu2']=$usuario_datos['menu2'];
$_SESSION['menu3']=$usuario_datos['menu3'];
$_SESSION['menu4']=$usuario_datos['menu4'];
$_SESSION['menu5']=$usuario_datos['menu5'];
$_SESSION['menu6']=$usuario_datos['menu6'];
$_SESSION['menu7']=$usuario_datos['menu7'];
$_SESSION['menu8']=$usuario_datos['menu8']; 
para pasar los valores de cada uno de los menus que son valores enteros 0 y 1, dependiendo el valor es coo se activara el menu correspondiente.

Una vez que accese a la pagina del menu coloco al inicio de la pagina lo siguiente:

Código PHP:
<?
require("aut_verifica.inc.php");
$nivel_acceso=10// Nivel de acceso para esta página.
if ($nivel_acceso <= $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
?>
para poder obtener los valores, bueno coloco todo lo demas titulos, cabeceras, etc...y las funciones para mostrar las capas y todo eso en html

despues puse algo muy sencillo como esto:

Código PHP:
<?php
  
if ($_SESSION['menu1'] == 1)
      
$valor_1 "show";
  else 
      
$valor_1 "hide";
?>
y luego pretendo pasar el valos a la funcion de la capa de la siquiente forma :

Código PHP:
<td height=20 width=120 class="menuprinc" variable onMouseOver="MM_showHideLayers('Menu1','',<?php $valor_1?>,'bitacora','','hide','ilicitos','','hide','danos','','hide','matriz','','hide');AM_timeroff()" onMouseOut=AM_timeron()><div align="center" class="menuprin">Subestaciones</div></td>
y ahi esta todo el problema; no se que estoy haciendo mas al pasar el valor o si estoy colocando mal los datos.
ya probe tambien poniendolo <? echo $valor_1; ?> y nada...

Alguien puede ayudarme o indicarme si esto se puede hacer o no es valido, o de plano no se puede
  #2 (permalink)  
Antiguo 04/12/2003, 13:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
¿El valor de tu $usuario_datos['menu1']; en aut_verifica.inc.php .. lo obtienes correctamente?.

En las páginas autentificadas que usas $_SESSION['id'] y demás variables de sesión .. ¿Obtienes sus valores (todas o algunas variables de sesión)?

Por defecto .. aut_verifica.inc.php ya hace un session_start() (si es que no tocastes ahí el código y usa el nombre de la sesión que se indique (hace un session_name() ...) así que si sólo añadistes más variables de sesión y su correspondiente lógica para obtener tus datos de "menuX" de done provengan .. no deberías tener problemas.

Confirma si obtienes los valores de tus variables de sesión (por lo menos las que crea Autentificator).

En tu código javascript debes llamar a las varibles vìa echo:
Código PHP:
<? echo $valor_1?>
(o su forma abreviada <?=$valor_1 ?> ..)

siempre y cuando .. definas ese valor de $valor_1 antes de llamarlo .. por supuesto.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 04/12/2003 a las 13:15
  #3 (permalink)  
Antiguo 04/12/2003, 17:16
 
Fecha de Ingreso: noviembre-2002
Ubicación: Veracruz
Mensajes: 48
Antigüedad: 21 años, 5 meses
Puntos: 0
re:

Ok, cluster ya logre pasar toda la info, pero el error que tengo al parece es aqui:

Código PHP:
<?php
  
if ($_SESSION['menu1'] == 1)
      
$valor_a "show";
  else
      
$valor_a "hide";
  if (
$_SESSION['menu2'] == 1)
      
$valor_b "show";
  else
      
$valor_b "hide";
  
?>
<table width="600" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td><img src="ban02.jpg" width="600" height="80"></td>
  </tr>
  <tr> 
    <td background="fondomenu.jpg"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td height=20 width=120 class="menuprinc" style="CURSOR: hand" variable onMouseOver="MM_showHideLayers(Menu1','','<? echo ($valor_a); ?>','menu2','','hide','menu3','','hide','menu4','','hide','menu5','','hide');AM_timeroff()" onMouseOut=AM_timeron()><div align="center" class="menuprin">Menu1</div></td>
al momento de pasarle el valor, ya lo probe de muchas formas asi ya no manda error pero no pasa datos, en ucanto a la sesion pasa los valores sin problema

el valor que debe ir es un texto "show" o "hide" es todo lo que necesito pasar... pero nada
  #4 (permalink)  
Antiguo 04/12/2003, 21:05
 
Fecha de Ingreso: noviembre-2002
Ubicación: Veracruz
Mensajes: 48
Antigüedad: 21 años, 5 meses
Puntos: 0
nada...
  #5 (permalink)  
Antiguo 04/12/2003, 22:14
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Es posible que no estén llegando las variables de sesión y si no tienes activados los "notice"... no se te advertirá del error.

El código que estás utilizando en la parte que posteaste es correcto... por eso creo que el error está antes.

Primero: Agrega algo como esto al comienzo:
Código PHP:
if(empty($_SESSION['menu1'])){
   die(
"No han llegado las variables de sesión");

Así estarás seguro de que han llegado, si no, se detendrá la ejecución del script y te saldrá el mensaje de error.

Saludos
  #6 (permalink)  
Antiguo 05/12/2003, 06:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
isa301 ..

El último código que pusistes es "tal cual"? .. Incluyes ahí o si eso es llamado desde un include() .. antes de ese código la llamada a aut_verifica.inc.php ? (más que nada por qué ese script de Autentificator inicia la sesión si corresponde: session_start() .. si esa función no es ejecutada antes de tus $_SESSION .. no podrás leer el valor de variables de sesión.)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 05/12/2003, 16:04
 
Fecha de Ingreso: noviembre-2002
Ubicación: Veracruz
Mensajes: 48
Antigüedad: 21 años, 5 meses
Puntos: 0
Tienes razon no me llegan las variables de menu1, menu2, menu3...menu5 me llegan las demas lo del id, login, y esas cosas

Que puedo hacer en que estoy mal
  #8 (permalink)  
Antiguo 05/12/2003, 16:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pon el código completo que uses y todo en el orden que corresponda .. Yo ya no sé si ese código que pusistes último llamas antes al código de Autentificator (que como ya te dije hace ya el session_start() ..) o no lo haces ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 05/12/2003, 16:47
 
Fecha de Ingreso: noviembre-2002
Ubicación: Veracruz
Mensajes: 48
Antigüedad: 21 años, 5 meses
Puntos: 0
ok aqui esta el codigo

Esto es el codigo que tengo actualmente.. por que no pasan datos, pasan los normales pero no los del menu ?¿?¿?

Código PHP:
<?
// Motor autentificación usuarios.

// Cargar datos conexion y otras variables.
require ("aut_config.inc.php");


// chequear página que lo llama para devolver errores a dicha página.

$url explode("?",$_SERVER['HTTP_REFERER']);
$pag_referida=$url[0];
$redir=$pag_referida;
// chequear si se llama directo al script.
if ($_SERVER['HTTP_REFERER'] == ""){
die (
"Error cod.:1 - Acceso incorrecto!");
exit;
}

// Chequeamos si se está autentificandose un usuario por medio del formulario
if (isset($_POST['user']) && isset($_POST['pass'])) {

// Conexión base de datos.
// si no se puede conectar a la BD salimos del scrip con error 0 y
// redireccionamos a la pagina de error.
$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or die(header ("Location:  $redir?error_login=0"));
mysql_select_db("$sql_db");

// realizamos la consulta a la BD para chequear datos del Usuario.
$usuario_consulta mysql_query("SELECT ID,usuario,pass,nivel_acceso,menu1,menu2,menu3,menu4,menu5 FROM $sql_tabla WHERE usuario='".$_POST['user']."'") or die(header ("Location:  $redir?error_login=1"));

 
// miramos el total de resultado de la consulta (si es distinto de 0 es que existe el usuario)
 
if (mysql_num_rows($usuario_consulta) != 0) {

    
// eliminamos barras invertidas y dobles en sencillas
    
$login stripslashes($_POST['user']);
    
// encriptamos el password en formato md5 irreversible.
    
$password md5($_POST['pass']);

    
// almacenamos datos del Usuario en un array para empezar a chequear.
     
$usuario_datos mysql_fetch_array($usuario_consulta);
  
    
// liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array.
    
mysql_free_result($usuario_consulta);
    
// cerramos la Base de dtos.
    
mysql_close($db_conexion);
    
    
// chequeamos el nombre del usuario otra vez contrastandolo con la BD
    // esta vez sin barras invertidas, etc ...
    // si no es correcto, salimos del script con error 4 y redireccionamos a la
    // página de error.
    
if ($login != $usuario_datos['usuario']) {
           
Header ("Location: $redir?error_login=4");
        exit;}

    
// si el password no es correcto ..
    // salimos del script con error 3 y redireccinamos hacia la página de error
    
if ($password != $usuario_datos['pass']) {
        
Header ("Location: $redir?error_login=3");
        exit;}

    
// Paranoia: destruimos las variables login y password usadas
    
unset($login);
    unset (
$password);

    
// En este punto, el usuario ya esta validado.
    // Grabamos los datos del usuario en una sesion.
    
     // le damos un mobre a la sesion.
    
session_name($usuarios_sesion);
     
// incia sessiones
    
session_start();

    
// Paranoia: decimos al navegador que no "cachee" esta página.
    
session_cache_limiter('nocache,private');
    
    
// Asignamos variables de sesión con datos del Usuario para el uso en el
    // resto de páginas autentificadas.

    // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios
    
$_SESSION['id']=$usuario_datos['ID'];
    
    
// definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['nivel']=$usuario_datos['nivel_acceso'];
    
    
//definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['login']=$usuario_datos['usuario'];

    
//definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
    
$_SESSION['pass']=$usuario_datos['pass'];

    
$_SESSION['menu1']=$usuario_datos['menu1'];
    
$_SESSION['menu2']=$usuario_datos['menu2'];
    
$_SESSION['menu3']=$usuario_datos['menu3'];
    
$_SESSION['menu4']=$usuario_datos['menu4'];
    
$_SESSION['menu5']=$usuario_datos['menu5'];
    
$_SESSION['menu6']=$usuario_datos['menu6'];
    
$_SESSION['menu7']=$usuario_datos['menu7'];
    
$_SESSION['menu8']=$usuario_datos['menu8'];

    
// Hacemos una llamada a si mismo (scritp) para que queden disponibles
    // las variables de session en el array asociado $HTTP_...
    
$pag=$_SERVER['PHP_SELF'];
    
Header ("Location: $pag?");
    exit;
    
   } else {
      
// si no esta el nombre de usuario en la BD o el password ..
      // se devuelve a pagina q lo llamo con error
      
Header ("Location: $redir?error_login=2");
      exit;}
} else {

// -------- Chequear sesión existe -------

// usamos la sesion de nombre definido.
session_name($usuarios_sesion);
// Iniciamos el uso de sesiones
session_start();

// Chequeamos si estan creadas las variables de sesión de identificación del usuario,
// El caso mas comun es el de una vez "matado" la sesion se intenta volver hacia atras
// con el navegador.

if (!isset($_SESSION['login']) && !isset($_SESSION['password'])){
// Borramos la sesion creada por el inicio de session anterior
session_destroy();
die (
"Error cod.: 2 - Acceso incorrecto!");
exit;
}
}
?>
  #10 (permalink)  
Antiguo 05/12/2003, 20:44
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Bueno.. así lo primero que se me ocurre es que tengas los campos 'menu1', etc. vacíos en la bd... porque si te llegan $_SESSION['login'], te deberían llegar todas...

Al hacer:
$_SESSION['menu1']=$usuario_datos['menu1'];
Si $usuario_datos['menu1'] está vacío... entonces la variable de sesión también estará vacía... y como no tienes los NOTICE activados (asumo) no te dará ningún mensaje de error.

por favor verifica primero eso que a veces se nos pasa...

Saludos
  #11 (permalink)  
Antiguo 05/12/2003, 20:50
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Puedes ver directamente en la bd o por si acaso pueda haber algún error por ahí, tienes la opción de hacer:
Código PHP:
if(empty($usuario_datos['menu1'])){
   
//si el campo en la bd está vacío:
   
die("menu1 está vacío");//detenemos la ejecución y enviamos mensaje.
}else{
   
//Si no está vacío, lo guardas en la sesión:
   
$_SESSION['menu1']=$usuario_datos['menu1'];

Saludos
  #12 (permalink)  
Antiguo 06/12/2003, 14:52
 
Fecha de Ingreso: noviembre-2002
Ubicación: Veracruz
Mensajes: 48
Antigüedad: 21 años, 5 meses
Puntos: 0
Pues tienes toda la razon, me marca que esta vacio... pero en realidad tiene valor 0, en la base de datos si le cambio a 1 entonces pasa sin problemas, pero si le pongo 0 lo toma como vacio, lo tengo guardado como tipo de dato smallint (1) - (porque solo acepto 2 valores 0 y 1)- Atributos UNSIGNED - NULL No - Defecto 0

Pero al parece toma al 0 como si no hubiera nada
  #13 (permalink)  
Antiguo 08/12/2003, 14:39
 
Fecha de Ingreso: noviembre-2002
Ubicación: Veracruz
Mensajes: 48
Antigüedad: 21 años, 5 meses
Puntos: 0
¿?¿?¿?¿?¿?¿?
  #14 (permalink)  
Antiguo 08/12/2003, 15:18
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
Re: Autentificador de Cluster + javascript

Cita:
Mensaje Original por isa301
Estoy realizando una pagina en dreamweaver en donde uso capaz para mostrar menus desplegables, dependiendo el usario que acceseda se visualizaran los menus que tengan asignados.

ok, bueno lo que trato de hacer es lo siguiente:

El autentificador de cluster cuenta con una variable que se llama nivel de acceso, bueno esa variable esta bien por que me sirve pero aparte agregue 8 variables mas poniedoles "menu1...menu8" respectivamente. En el archivo aut_verifica.inc.php hice los siguiente cambios:

Código PHP:
$_SESSION['id']=$usuario_datos['ID'];
$_SESSION['nivel']=$usuario_datos['nivel'];
$_SESSION['login']=$usuario_datos['usuario'];
$_SESSION['pass']=$usuario_datos['pass'];
$_SESSION['menu1']=$usuario_datos['menu1'];
$_SESSION['menu2']=$usuario_datos['menu2'];
$_SESSION['menu3']=$usuario_datos['menu3'];
$_SESSION['menu4']=$usuario_datos['menu4'];
$_SESSION['menu5']=$usuario_datos['menu5'];
$_SESSION['menu6']=$usuario_datos['menu6'];
$_SESSION['menu7']=$usuario_datos['menu7'];
$_SESSION['menu8']=$usuario_datos['menu8']; 
para pasar los valores de cada uno de los menus que son valores enteros 0 y 1, dependiendo el valor es coo se activara el menu correspondiente.

Una vez que accese a la pagina del menu coloco al inicio de la pagina lo siguiente:

Código PHP:
<?
require("aut_verifica.inc.php");
$nivel_acceso=10// Nivel de acceso para esta página.
if ($nivel_acceso <= $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
?>
para poder obtener los valores, bueno coloco todo lo demas titulos, cabeceras, etc...y las funciones para mostrar las capas y todo eso en html

despues puse algo muy sencillo como esto:

Código PHP:
<?php
  
if ($_SESSION['menu1'] == 1)
      
$valor_1 "show";
  else 
      
$valor_1 "hide";
?>
y luego pretendo pasar el valos a la funcion de la capa de la siquiente forma :

Código PHP:
<td height=20 width=120 class="menuprinc" variable onMouseOver="MM_showHideLayers('Menu1','',<?php $valor_1?>,'bitacora','','hide','ilicitos','','hide','danos','','hide','matriz','','hide');AM_timeroff()" onMouseOut=AM_timeron()><div align="center" class="menuprin">Subestaciones</div></td>
y ahi esta todo el problema; no se que estoy haciendo mas al pasar el valor o si estoy colocando mal los datos.
ya probe tambien poniendolo <? echo $valor_1; ?> y nada...

Alguien puede ayudarme o indicarme si esto se puede hacer o no es valido, o de plano no se puede

Código PHP:
$_SESSION['id']=$usuario_datos['id']; 
si modificas ID por id funcionaria?
que yo sepa php es sensible a las mayusculas .

__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #15 (permalink)  
Antiguo 08/12/2003, 22:15
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Gerald... parece que no leíste bien.. o no leíste completo... el problema no es con los nombres de los campos... la asignación
Código PHP:
 $_SESSION['id']=$usuario_datos['ID']; 
es perfectamente válida si el campo de su bd se llama ID... y no parece haber problema con los nombres, sino con los valores... porque dice claramente que si el valor es cero, no pasa... pero si el valor es otro, llega normal... si el nombre estuviera mal no pasaría con ningún valor.

Saludos

Última edición por jpinedo; 08/12/2003 a las 22:17
  #16 (permalink)  
Antiguo 08/12/2003, 22:27
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Lo que creo que está pasando es que si tu campo fuera "varchar" o algo así, no habría problema... pero si el campo es "int" para este tipo de dato, el cero es nada... o sea que en campos de este tipo yo pongo 012 y da lo mismo que pusiera 12... yo te aconsejo utilizar para esto , el tipo "enum" (que debe tomar un valor de algunos posibles)...
y definirías tus campos así:
Código PHP:
menu1 enum('0''1'),
menu2 enum('0''1'),
menu3 enum('0''1'), 
Para eso se ha creado este tipo de datos.

Espero que ahora sí te funcione.

Saludos
  #17 (permalink)  
Antiguo 08/12/2003, 22:49
 
Fecha de Ingreso: noviembre-2002
Ubicación: Veracruz
Mensajes: 48
Antigüedad: 21 años, 5 meses
Puntos: 0
No por que esa variable si pasa datos... de echo ya comente en el mensaje anterior que es lo que pasa
  #18 (permalink)  
Antiguo 08/12/2003, 22:58
 
Fecha de Ingreso: noviembre-2002
Ubicación: Veracruz
Mensajes: 48
Antigüedad: 21 años, 5 meses
Puntos: 0
A vaya, voy a checarlo JPINEDO, gracias por tu respuesta
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 17:43.