Foros del Web » Programando para Internet » PHP »

Protejer directorio web y acceder solo con $_SESSION

Estas en el tema de Protejer directorio web y acceder solo con $_SESSION en el foro de PHP en Foros del Web. Hola amigos... Primero que todo, gracias por su ayuda. Tengo una pagina web construida por completo con archivos ".php". Para acceder a la web, primero ...
  #1 (permalink)  
Antiguo 31/07/2013, 22:23
 
Fecha de Ingreso: enero-2013
Ubicación: santiago de chile
Mensajes: 9
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta Protejer directorio web y acceder solo con $_SESSION

Hola amigos... Primero que todo, gracias por su ayuda.

Tengo una pagina web construida por completo con archivos ".php".

Para acceder a la web, primero se debe entrar al "login.php", cuando todos los datos estan correctos, se iinicia la sesion con "$_SESSION" y te lleva a otro directorio donde esta la pagina principal.

La estructura es la siguiente:

/root/
/root/login.php (se envia el formulario)
-> /root/validar_usuario.php (si los datos estan correctos, sigue al directorio)
-------->/root/directorio/
-------->/root/directorio/index.php

El problema es que yo puedo escribir en el navegador /root/directorio/index.php y entrar a mi pagina index.php sin problemas.

No se como evitar que se pueda entrar a esta pagina si no se logeo previamente.

Muchas gracias de antemano.


Saludos
  #2 (permalink)  
Antiguo 31/07/2013, 23:07
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Protejer directorio web y acceder solo con $_SESSION

Cuando inicies sesión, guardá en la variable $_SESSION un valor buleano que indique si ha iniciado sesión o no (por ejemplo $_SESSION['logueado'] ). Entonces, al principio de cada archivo de tu aplicación poné algo así:

Código PHP:
Ver original
  1.  
  2. if(!isset($_SESSION['logueado']) || !$_SESSION['logueado']){
  3.     header('location:login.php');
  4.     die;
  5. }

Es decir, veriifica que la clave logueado exista en el array y luego que sea verdadera. Si alguna de estas condiciones no se cumple, envías al usuario a la página de login.

Dado que estás usando varios subdirectorios, vas a tener que poner la ruta de login.php relativa al archivo donde estás ubicado.
__________________
nahueljose.com.ar

Última edición por Naahuel; 31/07/2013 a las 23:08 Razón: Pequeño error en el código
  #3 (permalink)  
Antiguo 01/08/2013, 02:14
 
Fecha de Ingreso: marzo-2013
Ubicación: Jaén, Andalucía
Mensajes: 129
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Protejer directorio web y acceder solo con $_SESSION

yo lo que vengo a comprobar en TODAS las páginas que tengo es que haya una sesión con un nombre de usuario , si no que lo mande fuera :P

Código PHP:
Ver original
  1.     if($_SESSION['user'] == ""){
  2.         echo "<script>if(confirm('No está Registrado. ¿Desea volver a la página principal?')){
  3.                     document.location='index.php';} //De aquí lo mando a la página de login, es un poco absurdo pero bueno, lo empecé así y para no cambiarlo todo... XD
  4.                 else{
  5.                     document.location='logout.php'
  6.                     }</script>";
  7.         exit;
  8.     }
  #4 (permalink)  
Antiguo 01/08/2013, 10:52
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Protejer directorio web y acceder solo con $_SESSION

como lo tienes puesto si un user entra sin estar registrado saltara un error que no esta definida la variable $_SESSION['user'] mostrando informacion sensible si no esta bien configurado, lo recomendable es usar empty , isset tambien puede valer pero solo determina si la variable existe y no distingue el valor , pero empty si distingue lo primero si no es empty (null,false,var sin declarar , etc.. )entonces si continuamos en el if y si es empty entramos en el else pero no muestra ningun error en caso de no estar definida la variable $_SESSION['user']

http://es1.php.net/manual/es/function.empty.php

Código PHP:
Ver original
  1.  
  2. if(!empty($_SESSION['user']))  // o incluso (isset($_SESSION['user']) and !empty($_SESSION['user']))
  3. {
  4.     // contenido para logueados
  5. }
  6. else
  7. {
  8.     // controlamos el error
  9.  
  10.  exit(htmlentities('No está Registrado. ¿Desea volver a la página principal?, <a href="index.php">volver</a>'));
  11.  
  12. }
  #5 (permalink)  
Antiguo 01/08/2013, 17:15
 
Fecha de Ingreso: enero-2013
Ubicación: santiago de chile
Mensajes: 9
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Protejer directorio web y acceder solo con $_SESSION

para comenzar el login uso (cuando se envia el formulario y se revisa si esta todo correcto):

Código PHP:
Ver original
  1. <?php
  2. ob_start(); // outer buffer
  3. ob_start(); // inner buffer to catch URL rewrites and other post processing
  4. ?>
  5. <link href="sisprod/style.css" rel="stylesheet" type="text/css"><?php
  6. //datos para establecer la conexion con la base de mysql.
  7. mysql_connect('xx','root','xx')or die ('Ha fallado la conexión: '.mysql_error());
  8. mysql_select_db('zzz')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
  9. function quitar($mensaje)
  10. {
  11.     $nopermitidos = array("'",'\\','<','>',"\"");
  12.     $mensaje = str_replace($nopermitidos, "", $mensaje);
  13.     return $mensaje;
  14. }
  15. if(trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "")
  16. {
  17.     // Puedes utilizar la funcion para eliminar algun caracter en especifico
  18.     //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
  19.     //$password = $HTTP_POST_VARS["password"];
  20.     // o puedes convertir los a su entidad HTML aplicable con htmlentities
  21.     $usuario = strtolower(htmlentities($_POST["usuario"], ENT_QUOTES));
  22.     $password = $_POST["password"];
  23.     $passwordMD5 = MD5($password);
  24.     $result = mysql_query('
  25.     SELECT
  26.     zzz.admin.clave,
  27.     zzz.admin.rut
  28.     FROM zzz.admin
  29.     WHERE rut=\''.$usuario.'\'');
  30.     if($row = mysql_fetch_array($result)){
  31.         if($row["clave"] == $passwordMD5){
  32.             $_SESSION["k_username"] = $row['rut'];
  33.            
  34.             echo'
  35.             <div class="divtablalogin">
  36.             <table><tr><th>Has sido logueado correctamente</th></tr><tr><th>'.$_SESSION['k_username'].'</th></tr>
  37.             <tr><th>PRESIONE EL ENLACE</th></tr>
  38.             <tr>
  39.         <th><div align="middle"><a href="sisprod/index.php">Entrar al Sistema</a></div></th><tr></table></div>';
  40.            
  41.            
  42.             //Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
  43.             /*Ingreso exitoso, ahora sera dirigido a la pagina principal.
  44.             <SCRIPT LANGUAGE="javascript">
  45.             location.href = "index.php";
  46.             </SCRIPT>*/
  47.         }else{
  48.             echo '<div class="divtablalogin"><table><tr><th>Password incorrecto</th></tr>
  49.             <tr>
  50.         <th><div align="middle"><a href="login.php">Inicio</a></div></th><tr>
  51.            
  52.             </table></div>';
  53.         }
  54.     }else{
  55.         echo '<div class="divtablalogin"><table><tr><th>Usuario no existente en la base de datos</th></tr><tr>
  56.         <th><div align="middle"><a href="login.php">Inicio</a></div></th><tr>
  57.        
  58.         </table></div>';
  59.     }
  60.     mysql_free_result($result);
  61. }else{
  62.     echo '<div class="divtablalogin"><table><tr><th>Debe especificar un usuario y password</th></tr><tr><th><div align="middle"><a href="login.php">Inicio</a></div></th></tr></table></div>';
  63. }
  64. ?>


Luego para mostrar la session iniciada en el index.php uso:

Código PHP:
Ver original
  1. <?php
  2. echo 'Bienvenido, ';
  3. if (isset($_SESSION['k_username'])) {
  4.     echo '<b>'.$_SESSION['k_username'].'</b>.';
  5.     echo '<p><a href="http://.../logout.php">Cerrar Sesión</a></p>';
  6. }
  7. ?>

Como deberia arreglar mi codigo??

Última edición por diego_weichafe; 01/08/2013 a las 17:21
  #6 (permalink)  
Antiguo 01/08/2013, 17:22
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Protejer directorio web y acceder solo con $_SESSION

segun tienes el index ,en el if haz un else con una redireccion a login , en el caso de que no quieras que se acceda sin estar logueado
  #7 (permalink)  
Antiguo 01/08/2013, 17:46
 
Fecha de Ingreso: enero-2013
Ubicación: santiago de chile
Mensajes: 9
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Protejer directorio web y acceder solo con $_SESSION

no me funciona amigo...sigue entrando igual
  #8 (permalink)  
Antiguo 01/08/2013, 17:50
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Protejer directorio web y acceder solo con $_SESSION

has puesto session_start() al principio?
  #9 (permalink)  
Antiguo 01/08/2013, 17:52
 
Fecha de Ingreso: enero-2013
Ubicación: santiago de chile
Mensajes: 9
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Protejer directorio web y acceder solo con $_SESSION

si...por que tengo un archivo "header.php" que esta incluido siempre al inicio con

Código PHP:
Ver original
  1. <?php include("head.php"); ?>

que incluye dentro

Código PHP:
Ver original
  1. <?php
  2. ob_start(); // outer buffer
  3. ob_start(); // inner buffer to catch URL rewrites and other post processing
  4. ?>
  #10 (permalink)  
Antiguo 01/08/2013, 17:57
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Protejer directorio web y acceder solo con $_SESSION

justo despues del head.php pon var_dump($_SESSION); para testear si llega la session y dime el resultado y si puede ser pon el codigo index.php con lo que hiciste
  #11 (permalink)  
Antiguo 01/08/2013, 18:18
 
Fecha de Ingreso: enero-2013
Ubicación: santiago de chile
Mensajes: 9
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Protejer directorio web y acceder solo con $_SESSION

Esto me sale:

Código HTML:
Ver original
  1. array (size=1)
  2.   'k_username' => string '16883597-3' (length=10)

El valor "16883597-3" es el usuario que ingresé previamente.

Voy a responderte todo el esquema hasta que se logra el logeo:

1.- para ingresar y colocar los datos "login.php"

Código HTML:
Ver original
  1. <?php
  2. ob_start(); // outer buffer
  3. ob_start(); // inner buffer to catch URL rewrites and other post processing
  4. session_start();
  5. ?>
  6. <title>NUEVO PROVEEDOR</title>
  7. <link href="sisprod/style.css" rel="stylesheet" type="text/css">
  8. </head>
  9.  
  10. <div class="divtablalogin">
  11. <img src="sisprod/img/logoxxx.jpg">
  12.  
  13.   <form action="validar_usuario.php" method="post" name="form1">
  14.    <tr>
  15.      <th width="136">Rut
  16.        </th>
  17.      <td width="302"><input name="usuario" type="text" maxlength="200" id="rut"/></td>
  18.     </tr>
  19.   <tr>
  20.     <th>Clave
  21.       </th>
  22.     <td><input name="password" type="password" maxlength="200" id="clave"/></td>
  23.     </tr>
  24.    
  25.     <tr>
  26.     <td colspan="2" align="center"><input type="submit" value="ENTRAR" /></td>
  27.     </tr>
  28.   </form>
  29.   </table>
  30.   </div>
  31.   <br>
  32.   <div class="divtablalogin0"> <a href="trab_portal/login.php"><img src="img/bot_sis_tra.jpg" width="400" height="114"></a> </div>
  33.   <br/>
  34. </body>
  35. </html>


2.- luego (en el mismo directorio) se verifica que los datos esten correctos en "validar_usuario.php"

Código PHP:
Ver original
  1. <?php
  2. ob_start(); // outer buffer
  3. ob_start(); // inner buffer to catch URL rewrites and other post processing
  4. ?>
  5. <link href="sisprod/style.css" rel="stylesheet" type="text/css"><?php
  6. //datos para establecer la conexion con la base de mysql.
  7. mysql_connect('localhost','root','xxx')or die ('Ha fallado la conexión: '.mysql_error());
  8. mysql_select_db('zzz')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
  9. function quitar($mensaje)
  10. {
  11.     $nopermitidos = array("'",'\\','<','>',"\"");
  12.     $mensaje = str_replace($nopermitidos, "", $mensaje);
  13.     return $mensaje;
  14. }
  15. if(trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "")
  16. {
  17.     // Puedes utilizar la funcion para eliminar algun caracter en especifico
  18.     //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
  19.     //$password = $HTTP_POST_VARS["password"];
  20.     // o puedes convertir los a su entidad HTML aplicable con htmlentities
  21.     $usuario = strtolower(htmlentities($_POST["usuario"], ENT_QUOTES));
  22.     $password = $_POST["password"];
  23.     $passwordMD5 = MD5($password);
  24.     $result = mysql_query('
  25.     SELECT
  26.     zzz.admin.clave,
  27.     zzz.admin.rut
  28.     FROM zzz.admin
  29.     WHERE rut=\''.$usuario.'\'');
  30.     if($row = mysql_fetch_array($result)){
  31.         if($row["clave"] == $passwordMD5){
  32.             $_SESSION["k_username"] = $row['rut'];
  33.            
  34.             echo'
  35.             <div class="divtablalogin">
  36.             <table><tr><th>Has sido logueado correctamente</th></tr><tr><th>'.$_SESSION['k_username'].'</th></tr>
  37.             <tr><th>PRESIONE EL ENLACE</th></tr>
  38.             <tr>
  39.         <th><div align="middle"><a href="sisprod/index.php">Entrar al Sistema</a></div></th><tr></table></div>';
  40.            
  41.            
  42.             //Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
  43.             /*Ingreso exitoso, ahora sera dirigido a la pagina principal.
  44.             <SCRIPT LANGUAGE="javascript">
  45.             location.href = "index.php";
  46.             </SCRIPT>*/
  47.         }else{
  48.             echo '<div class="divtablalogin"><table><tr><th>Password incorrecto</th></tr>
  49.             <tr>
  50.         <th><div align="middle"><a href="login.php">Inicio</a></div></th><tr>
  51.            
  52.             </table></div>';
  53.         }
  54.     }else{
  55.         echo '<div class="divtablalogin"><table><tr><th>Usuario no existente en la base de datos</th></tr><tr>
  56.         <th><div align="middle"><a href="login.php">Inicio</a></div></th><tr>
  57.        
  58.         </table></div>';
  59.     }
  60.     mysql_free_result($result);
  61. }else{
  62.     echo '<div class="divtablalogin"><table><tr><th>Debe especificar un usuario y password</th></tr><tr><th><div align="middle"><a href="login.php">Inicio</a></div></th></tr></table></div>';
  63. }
  64. ?>
  #12 (permalink)  
Antiguo 01/08/2013, 18:19
 
Fecha de Ingreso: enero-2013
Ubicación: santiago de chile
Mensajes: 9
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Protejer directorio web y acceder solo con $_SESSION

3.- si todo esta bien te deja apretar el enlace para irte al siguiente directorio. Los 2 archivos anteriores que he mostrado estan en el "root/". Ahora el link nos llevara a "root/sisprod/", este es justamente el directorio que no quiero que se pueda ingresar a ningun archivo que este dentro, sin que pase previamente por el login. Ahora estamos en "root/sisprod/index.php"

Código PHP:
Ver original
  1. <?php include("head.php");
  2.  var_dump($_SESSION);
  3. ?>
  4. <body>
  5. <?php include("nav.php"); ?>
  6. <div class="cuerpo" id="cuerpo">    
  7.    <div class="contenido">
  8.     <div class="tabla_campos">  
  9.  
  10. <div style="
  11. background: #ffffff; /* Old browsers */
  12. background: -moz-linear-gradient(top,  #ffffff 0%, #e5e5e5 100%); /* FF3.6+ */
  13. background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e5e5e5)); /* Chrome,Safari4+ */
  14. background: -webkit-linear-gradient(top,  #ffffff 0%,#e5e5e5 100%); /* Chrome10+,Safari5.1+ */
  15. background: -o-linear-gradient(top,  #ffffff 0%,#e5e5e5 100%); /* Opera 11.10+ */
  16. background: -ms-linear-gradient(top,  #ffffff 0%,#e5e5e5 100%); /* IE10+ */
  17. background: linear-gradient(to bottom,  #ffffff 0%,#e5e5e5 100%); /* W3C */
  18. filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 ); /* IE6-9 */
  19.  
  20. -moz-box-shadow:rgba(0, 0, 0, 0.682353) 0px 0px 14px 2px;
  21. box-shadow:rgba(0, 0, 0, 0.682353) 0px 0px 14px 2px;
  22. -webkit-border-radius:10px;
  23. -moz-border-radius:10px;
  24. width:auto;
  25.  
  26. ">
  27. <img style="margin:10px 0 10px 240px" src="img/logoxxx.png">
  28. </div>
  29. </div>
  30. </div>
  31. </div>
  32. </div>
  33. </body>
  34.  
  35. </html>

4.- aca incluyo el archivo "header.php", que es donde se aloja session_start();

Código PHP:
Ver original
  1. <?php
  2. ob_start(); // outer buffer
  3. ob_start(); // inner buffer to catch URL rewrites and other post processing
  4. ?>
  5. <!DOCTYPE html>
  6. <html lang="en">
  7.     <head>
  8.         <link href='http://fonts.googleapis.com/css?family=Droid+Sans' rel='stylesheet' type='text/css'>
  9.         <meta charset="utf-8">
  10.         <title>Servicio de Contenedores xxx Ltda.</title>
  11.         <link href="style.css" media="screen" rel="stylesheet" type="text/css" />
  12.         <link href="iconic.css" media="screen" rel="stylesheet" type="text/css" />
  13.         <script src="script/prefix-free.js"></script>
  14.         <script src="script/jquery-1.6.1.js"></script>
  15.        
  16.         <script type="text/javascript">
  17. $(document).ready(function() {
  18.     $('input[type=checkbox]').live('click', function(){
  19.         var parent = $(this).parent().attr('id');
  20.         $('#'+parent+' input[type=checkbox]').removeAttr('checked');
  21.         $(this).attr('checked', 'checked');
  22.     });
  23. });
  24. </script>
  25.  
  26. <script>
  27. var no_digito = /\D/g;
  28. </script>
  29.  
  30. <script language="JavaScript">
  31. <!--
  32. var nav4 = window.Event ? true : false;
  33. function acceptNum(evt){  
  34. // NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57  
  35. var key = nav4 ? evt.which : evt.keyCode;  
  36. return (key <= 13 || (key >= 48 && key <= 57) || key==46);
  37. }
  38. //-->
  39. </script>
  40.  
  41.  
  42.  
  43. <script type="text/javascript">
  44. $(document).ready(function(){
  45. $("#tra_dctos_detalle_div1 a").each(function(){
  46. var href = $(this).attr("href");
  47. $(this).attr({ href: "#"});
  48. $(this).click(function(){
  49. $("#tra_dctos_detalle_div2").load(href);
  50. });
  51. });
  52. });
  53. </script>
  54.  
  55. <script>
  56. function enviar_1(){
  57.   document.form_enviar1.submit()
  58. }
  59.  
  60. function enviar_2(){
  61.   document.form_enviar2.submit()
  62. }
  63. function enviar_3(){
  64.   document.form_enviar2.submit()
  65. }
  66. function enviar_4(){
  67.   document.form_enviar1.submit()
  68. }
  69.  
  70.  
  71.  
  72.  
  73. </script>
  74.  
  75.  
  76. <script language="javascript">
  77.     function validar()
  78.     {
  79.         var ref1 = document.getElementById("a");
  80.         var ref2 = document.getElementById("b");
  81.         var ref3 = document.getElementById("c");
  82.         var ref4 = document.getElementById("ans");
  83.    
  84.  
  85.         if(ref1.value>=0 && ref2.value>=0 && ref3.value>=0)
  86.         {
  87.            ref4.value = parseFloat(ref1.value) +  parseFloat(ref2.value) - parseFloat(ref3.value);
  88.         }
  89.     }
  90. </script>
  91.  
  92. <script type="text/javascript">
  93. $(document).ready(function() {
  94.    
  95. $("#tooltip1").mouseover(function(){
  96. eleOffset = $(this).offset();
  97. $(this).next().fadeIn("fast").css({
  98. left: eleOffset.left + $(this).outerWidth(),
  99. top: eleOffset.top
  100. });
  101. }).mouseout(function(){
  102. $(this).next().hide();
  103. });
  104.  
  105. $("#tooltip2").mouseover(function(){
  106. eleOffset = $(this).offset();
  107. $(this).next().fadeIn("fast").css({
  108. left: eleOffset.left + $(this).outerWidth(),
  109. top: eleOffset.top
  110. });
  111. }).mouseout(function(){
  112. $(this).next().hide();
  113. });
  114.  
  115. });    
  116. </script>
  117. <script>
  118. function operar5() {
  119. var d61 = parseInt(document.getElementById("tot61").value);
  120. var d62 = parseInt(document.getElementById("tot62").value);
  121. var d63 = parseInt(document.getElementById("tot63").value);
  122. var d64 = parseInt(document.getElementById("tot64").value);
  123. var d65 = parseInt(document.getElementById("tot65").value);
  124. var d66 = parseInt(document.getElementById("tot66").value);
  125. var d67 = parseInt(document.getElementById("tot67").value);
  126. var d68 = parseInt(document.getElementById("tot68").value);
  127. var d69 = parseInt(document.getElementById("tot69").value);
  128. var d610 = parseInt(document.getElementById("tot610").value);
  129. document.getElementById("tot63").value=d61*d62;
  130. document.getElementById("tot65").value=d64-d63;
  131. document.getElementById("tot68").value=d66*d67;
  132. document.getElementById("tot610").value=d69-d68;
  133. }
  134. </script>
  135.  
  136.  
  137.     </head>
  138. <?php
  139. $conexion=mysql_connect("localhost","servicw9_root","xxx_2013");
  140. mysql_select_db("usuarios",$conexion);
  141. if (!$conexion) {
  142. die('No se puede conectar: ' . mysql_error());}
  143. ?>


5.- y aca incluyo el archivo "nav.php" que es donde se comprueba siempre quien tiene la session iniciada (al final del codigo):

Código PHP:
Ver original
  1. <div class="wrap" id="menus">
  2.    
  3.     <nav>
  4.         <ul class="menu">
  5.             <li><a href="index.php"><span class="iconic home"></span>Inicio</a></li>
  6.             <li><a href=""><span class="iconic user"></span>Trabajadores</a>
  7.                 <ul>
  8.                     <li><a href="tra_fictra.php">Agregar / Modificar Ficha Trabajador</a></li>
  9.                     <li><a href="tra_dctos.php">Descuentos Legales</a></li>
  10.                     <li><a href="tra_otros_dctos.php">Otros Descuentos</a></li>
  11.                     <li><a href="tra_preliq.php">Pre Liquidación</a></li>
  12.                    
  13.                 </ul>
  14.             </li>
  15.             <li><a href="#"><span class="iconic new-window"></span>Categorías</a>
  16.                 <ul>
  17.                     <li><a href="cat_marca.php">Marcas contenedores</a></li>
  18.                     <li><a href="cat_armador.php">Armadores</a></li>
  19.                     <li><a href="cat_valortc.php">Valor Dolar</a></li>
  20.                     <li><a href="cat_valorhh.php">Valor H/H por función</a></li>
  21.                 </ul>
  22.             </li>
  23.             <li><a href="#"><span class="iconic bolt"></span> Produción</a>
  24.                 <ul>
  25.                     <li><a href="prod_nprod.php">Ingresar / Consultar Producción</a></li>
  26.                     <li><a href="prod_asig_esp.php">Asignación Especial en CLP$</a></li>
  27.                 </ul>
  28.             </li>
  29.             <li><a href="#"><span class="iconic magnifying-glass"></span>Busqueda</a>
  30.                 <ul>
  31.                     <li><a href="busq_1i.php">Todos los contenedores del número</a></li>
  32.                    
  33.                     <li><a href="busq_2i.php">Todos los contenedores de la marca</a></li>
  34.                     <li><a href="busq_3i.php">Todos los contenedores del armador</a></li>
  35.                     <li><a href="busq_4i.php">Todos los otros descuentos pertenecientes a la categoría</a></li>
  36.                     <li><a href="busq_5i.php">Todos los otros descuentosentre fechas</a></li>
  37.                     <li><a href="busq_6i.php">Producción general entre fechas</a></li>
  38.                 </ul>
  39.             </li>
  40.             <li><a href="#"><span class="iconic info"></span>Sobre el Software</a>
  41.                 <ul>
  42.                     <li><a href="sobre.php">Información</a></li>
  43.                 </ul>
  44.             </li>
  45.         </ul>
  46.         <div class="identif" align="right"> <?php
  47. echo 'Bienvenido, ';
  48. if (isset($_SESSION['k_username'])) {
  49.     echo '<b>'.$_SESSION['k_username'].'</b>.';
  50.     echo '<p><a href="../logout.php">Cerrar Sesión</a></p>';
  51. }
  52. ?></div>
  53.         <div class="clearfix"></div>
  54.     </nav>
  55.     </div>
  #13 (permalink)  
Antiguo 01/08/2013, 18:26
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Protejer directorio web y acceder solo con $_SESSION

en ningun lado veo que pusieras la redireccion a login .

justo donde pusiste el var_dump() hay es donde tiene que estar la verificación o mas bien justo despues de session_start en head.php

if(empty($_SESSION['k_username'])){ header('location:../login.php');}

Última edición por webankenovi; 01/08/2013 a las 18:50
  #14 (permalink)  
Antiguo 01/08/2013, 19:11
 
Fecha de Ingreso: enero-2013
Ubicación: santiago de chile
Mensajes: 9
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Protejer directorio web y acceder solo con $_SESSION

casi amigo... casi funciona..

Mira.. en "/root/sisprod/index.php" coloque lo siguiente al inicio del codigo (quité el vardump)

Código PHP:
Ver original
  1. <?php include("head.php");
  2.  if(empty($_SESSION['k_username'])){ header('location:../login.php');}
  3. ?>
  4. <body>
  5. <?php include("nav.php"); ?>
  6. <div class="cuerpo" id="cuerpo">    
  7.    <div class="contenido">
  8.     <div class="tabla_campos">
  9. ...
  10. ...
  11. ...
  12. ...

Y no funciona... luego con un pequeño cambio, en vez de "empty($_SESSION"... use "!empty($_SESSION"...y ahí si funcionó.. si coloco el link "/root/sisprod/index.php" sin antes haber logeado me devuelve de inmediato a el "login.php"... solo que cuando me logeo correctamente y voy a "validar_usuario.php" y me arroja el mensaje de que esta todo bien... luego apreto el link para ir a "/root/sisprod/index.php" y se vuelve a ejecutar el codigo que me diste... no se por que...en pocas palabras... me devuelve al login.php
  #15 (permalink)  
Antiguo 02/08/2013, 02:16
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Protejer directorio web y acceder solo con $_SESSION

haber no puedes usar !empty por que no es logico, la logica es , si no existe o no tiene el valor esperado $_SESSION['k_username'] me envias a login.

if(!isset($_SESSION['k_username']) || empty($_SESSION['k_username']) ){ header('location: login.php'); exit; }

bueno asi funciona seguro , hecha un vistazo al manual sobre isset y empty

Etiquetas: bloquear, httpd.conf, login, root, session
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 00:55.