Ver Mensaje Individual
  #8 (permalink)  
Antiguo 05/04/2010, 08:38
bruceereu
 
Fecha de Ingreso: enero-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Validacion acceso por url con variables

Buenos días, estoy todavía por aqui, porq se me presento otro problema, ya mi función de validar el acceso por la url funciona, pero funciona tan bien que teniendo el privilegio de entrar a la url solicitada no me deja ingresar, jajaja esta malo.

Le voy a explicar lo que hice y donde creo q es donde se me presenta el error, para ver si me pueden ayudar. La validación la manejo con dos archivos php, el primero es validar_acceso_c.php y el otro es validar_acceso_m.php.

Esta es el primer archivo (validar_acceso_c.php), hago el include del otro archivo, inicializo una serie de variables donde me valgo de $_SERVER para tomar el nombre del archivo solicitado y las variables asociadas a este archivo, luego concateno el nombre mas el signo de interrogación y las variables, le hago un preg_replace ya que este caracter "&" es reservado por oracle y me dava error al hacer la consulta en base de datos, luego obtengo el user para enviarsela a la funcion validar acceso con la url.

Código PHP:
Ver original
  1. <?
  2. include_once('val_acc_variab.php');
  3.  
  4. $selfpinfo = pathinfo($_SERVER['PHP_SELF']);
  5.  
  6. $script = $_SERVER['PHP_SELF'];
  7. $path_info = pathinfo($script);
  8.  
  9. // script.php concatenado con las variables
  10. $concat = $path_info['basename'].'?'."{$HTTP_SERVER_VARS ['QUERY_STRING']}\n";
  11.  
  12. // La función preg_replace reemplaza todos los & por vacio
  13. $url = preg_replace("[&]", "", $concat);
  14.  
  15. $user=ObtenerIdentidad();
  16. $acceso=validar_acceso($user->dmail,$url);
  17.  
  18. if($acceso=1):
  19.     ?>
  20.         <html>
  21.             <head>
  22.             <title>..:: ACCESO NO PERMITIDO  ::..</title>
  23.             <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  24.             </head>
  25.             <link href="../lib/css/cadivicss.css" rel="stylesheet" type="text/css">
  26.             <body>
  27.             <table width="70%"  border="0" cellspacing="0" cellpadding="0" class="TablaDato" align="center">
  28.                 <tr>
  29.                     <td align="center">
  30.                     <img src="imagenes/advertencia.jpeg">
  31.                     </td>
  32.             </tr>
  33.                 <tr>
  34.                     <td>
  35.                     &nbsp;
  36.                     </td>
  37.                 </tr>
  38.                 <tr>
  39.                     <td align="center">
  40.                     "USTED ESTA INTENTANDO ACCEDER A UN MODULO NO PERMITIDO PARA SU USUARIO."
  41.                     </td>
  42.                 </tr>
  43.             </table>
  44.             </body>
  45.         </html>
  46.     <? 
  47.     exit();
  48. endif;
  49. ?>



Esta es la funcion que hace la validación: como se puede ver la funcion recibe los dos parametros del otro archivo php; se puede notar que la variable acceso se encuentra inicializada en cero (0), se hace la conecion a base de datos, se realiza la consulta y se guarda el SQL resultante en la variable q se especifica. Despúes entra en un IF siempre y cuando la variable acceso cambie a uno (1) para luego hacer el registro del log y mostrar la imagen y el texto del IF del otro archivo php.
Código PHP:
Ver original
  1. Validar_acceso_m.php
  2.  
  3. <?
  4. function val_acc_variab($user,$url){
  5.     $acceso=0;
  6.     $nobjeto=conexbasdato();
  7.     $sql="SELECT url
  8.          FROM tabla, tabla1, tabla2
  9.         WHERE tabla=tabla1
  10.         AND rol_tabla1=tabla2
  11.         AND cusuario='".$user."'
  12.         AND curl like '%".$url."%'";
  13.     $recroles=$nobjeto->Execute($sql);
  14.  
  15.     if($recroles->EOF):
  16.  
  17.        $acceso=1;
  18.  
  19.     //insertar en log para registrar el acceso no autorizado
  20.  
  21.         $sql="INSERT INTO tabla_den
  22.              VALUES (tabla_den,'".$url."','".$_SERVER['REMOTE_ADDR']."','".$user."',SYSDATE)";
  23.         $insertlog=$nobjeto->Execute($sql);
  24.  
  25. return $acceso;
  26. };
  27. ?>

Ahora bien, despues de tantos echos descubri que el error esta cuando hace la lectura en este if($recroles->EOF): del segundo archivo php, cuando lee la condición y cambia la variable acceso de cero (0) a uno (1), cuando no debe porq si lee el archivo y encuantra vacio el archivo deberia cambiar y si hay registros no cambia y deja continuar con el acceso al archivo.

Pregunta, como podria arreglar esto?

Y gracias de antemano.....