Comunidad de diseño web y desarrollo en internet online

como evitar entrar a paginas mediante la url sin logearse?

Citar            
MensajeEscrito el 14 Nov 2011 07:30 pm
Hola amigos,

De nuevo aqui con un pequeño detalle, estoy desarrollando un sitio web de intranet para administrar catalogo en linea, pero me e topado que si entro a admin osea al directorio donde esta todo mis sistema, este trae un index

Lo cual si no estoy logeado me direcciona a login.php, aqui el detalle es que si entro a otro php del foder admin sin logearme por ejem.

admin/registro.php

Este me permite entrar sin estar logeado, como puedo medir esa seguridad? para index.php yo coloque esto al inicio

Código PHP :

<? session_start(); ?>
<?php if(isset($_SESSION['k_email'])): ?>

El sitio en HTML

<?php else: ?>
<SCRIPT LANGUAGE="javascript">   location.href = "login.php";   </SCRIPT>
<?php endif; ?>


Entonces esta es la manera correcta de hacerlo? y para todos los php tengo que poner esta validacion?

Espero puedan ayudarme saludos amigos
:cool:

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

firefox
Citar            
MensajeEscrito el 15 Nov 2011 12:10 pm
A todos los script debes integrarle la validación.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 15 Nov 2011 03:30 pm
Muy bien, gracias por tu respuesta DriverOp,

un saludo
:cool:

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

firefox
Citar            
MensajeEscrito el 17 Nov 2011 01:50 am
Yo lo hago así: En cada página que requiera autentificación, pongo un include a un php que verifica que la sesión esté iniciada:

Código PHP :

<?php
require_once("php/session.php");
?>
Y mi archivo "session.php" sería éste:

Código PHP :

<?php
session_start();
header("Cache-control: private");
header("Cache-control: no-cache, must-revalidate");
header("Pragma: no-cache");
if(!isset($_SESSION['usuario']) !="0") {
header('Location: reportes/errorses.php');
}
?>
Las headers son para evitar que la página se guarde en caché.

Espero que te sirva.

Saludos!

:cool:

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 17 Nov 2011 02:22 am
Gracias eareddhel

déjame probarlos, que se necesita para medir el tiempo de sesion, que cuando este cierto tiempo sin utilizar la pagina se termine la sesion. y pida logearse, por que ahora no lo hace.

saludos
:cool:

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

chrome
Citar            
MensajeEscrito el 17 Nov 2011 05:49 am
Para caducar la sesión debes crear una sesión adicional, supongamos que se llame: $_SESSION["actividad"]

Entonces, el archivo session.php habría que modificarlo y quedaría así:

Código PHP :

<?php
session_start();
header("Cache-control: private");
header("Cache-control: no-cache, must-revalidate");
header("Pragma: no-cache");
if(!isset($_SESSION['usuario']) !="0") {
header('Location: index.php?estado=errorses');
} 
else { 
    $actividad = $_SESSION["actividad"]; 
    $hractual = date("Y-n-j H:i:s"); 
    $tiempo = (strtotime($hractual)-strtotime($actividad)); 
     if($tiempo >= 500) { 
      session_destroy(); 
      header("report/errorses.php");  
    }else { 
    $_SESSION["actividad"] = $hractual; 
   } 
} 
?>
El límite de tiempo ya lo decides tú.

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 17 Nov 2011 05:51 am
Por cierto, el script está probado y funcionado. Pruébalo poniendo como tiempo un humilde 1 y verás como la sesión se cierra de inmediato.

:cool:

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 17 Nov 2011 04:11 pm

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 17 Nov 2011 05:21 pm
Hola amigos

Gracias eareddhel, voy a complementarlo con lo que ya me habias pasado, que de hecho ya se los aplique a todas la paginas y esta de lujo. ahora ya con esto complementare mi sistema.

Que tal Driver Op gracias por su sugerencia pero de hecho ya lo habia revisado cuando empece a buscar esto de las sessiones pero no me estaba funcionando bien, al menos que lo estaba colocando mal e inclusive cambien el valor de 30 a 1 y nop.

Ahora me cayo duda con "private" este no se tiene que declarar en algun lado?

Código PHP :

<?php

/* establecer el limitador de caché a 'private' */

session_cache_limiter('private');
$cache_limiter = session_cache_limiter();

/* establecer la caducidad de la caché a 30 minutos */
session_cache_expire(1);
$cache_expire = session_cache_expire();

/* iniciar la sesión */

session_start();

echo "El limitador de caché ahora está establecido a $cache_limiter<br />";
echo "Las páginas de sesión examinadas caducan después de $cache_expire minutos";
?>

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

firefox
Citar            
MensajeEscrito el 19 Nov 2011 04:31 pm
Hola que tal eareddhel

Estuve probando el script que me pasaste y no me deja entrar al index.php, me regresa de inmuediato a mi login.php, que estare haciendo mal?

Código PHP :

<?php

session_start();

header("Cache-control: private");

header("Cache-control: no-cache, must-revalidate");

header("Pragma: no-cache");

if(!isset($_SESSION['k_email']) !="0") {

header('Location: login.php');

} 

else { 

    $actividad = $_SESSION["actividad"]; 

    $hractual = date("Y-n-j H:i:s"); 

    $tiempo = (strtotime($hractual)-strtotime($actividad)); 

     if($tiempo >= 200) { 

      session_destroy(); 

      header("Location: login.php");  

    }else { 

    $_SESSION["actividad"] = $hractual; 

   } 

} 

?>


Gracias espero puedas ayudarme

Por kakashi2000

Claber

559 de clabLevel

5 tutoriales

Genero:Masculino  

Desarrollador de aplicaciones Web

firefox
Citar            
MensajeEscrito el 29 Ago 2016 12:28 pm
Me pasa lo mismo con el codigo, al ponerlo en la pagina que quiero proteger me dirigue al index, siendo que me habia logeado con un usuario valido. Favor si alguien sabe como solucionar esto que ayude.
Gracias.

Por edgozavi

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Ago 2016 07:26 pm
Reviviendo temas antiguos. Hace tiempo que no paso por aquí.

Lo que he aprendido en estos años, es que antes de ponerse a copiar código, es necesario entender con claridad lo que deseas lograr. Nunca encontrarán un código que se ajuste milagrosamente a lo que quieren hacer. Sí encontrarán fragmentos por aquí, fragmentos por allá, los que al unirlos por lo general no funcionan, y no porque estén malos, sino porque responden a procesos mentales diferentes, ya que en programación, como en la vida, hay más de una forma de hacer las cosas.

Siguiendo lo anterior, creo que haciendo un diagrama de flujo en papel se puede tener claridad sobre los pasos a seguir para validar si la sesión está iniciada o no. A tener en cuenta: en todas las páginas debes agregar la línea session_start();, de lo contrario, pueden ocurrir cosas indeseadas, como que alguien entre a una sección sin estar logueado. Por otro lado, es importante recordar los nombres que se asignen a las sesiones.

La lógica es más o menos así:

1. Al cargar una página, inicio session_start();
2. Compruebo si existe alguna sesion activa. Supongamos: $_SESSION['sesion_usuario'];
3. Si no está logueado, lo envío al home o login.
4. Si está logueado, le permito el acceso o lo envío a otro lado, según lo que desees hacer.

De este modo, si un usuario entra a alguna parte restringida, se le pedirá loguearse.

Ahora, las formas de lograr esto, pueden variar. Si el código anterior no les funciona es porque seguramente no han iniciado la variable $_SESSION['k_email'];. El error debe estar ahí puesto que en esa parte del código está la redirección. Por eso es importante tener claridad sobre los nombres que usamos, la lógica a emplear y lo que ocurrirá en cada caso.

Espero dar luces sobre el tema. Saludos cordiales.

Por eareddhel

83 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 Ago 2016 07:29 pm

eareddhel escribió:

Reviviendo temas antiguos. Hace tiempo que no paso por aquí.

Lo que he aprendido en estos años, es que antes de ponerse a copiar código, es necesario entender con claridad lo que deseas lograr. Nunca encontrarán un código que se ajuste milagrosamente a lo que quieren hacer. Sí encontrarán fragmentos por aquí, fragmentos por allá, los que al unirlos por lo general no funcionan, y no porque estén malos, sino porque responden a procesos mentales diferentes, ya que en programación, como en la vida, hay más de una forma de hacer las cosas.

Siguiendo lo anterior, creo que haciendo un diagrama de flujo en papel se puede tener claridad sobre los pasos a seguir para validar si la sesión está iniciada o no. A tener en cuenta: en todas las páginas debes agregar la línea session_start();, de lo contrario, pueden ocurrir cosas indeseadas, como que alguien entre a una sección sin estar logueado. Por otro lado, es importante recordar los nombres que se asignen a las sesiones.

La lógica es más o menos así:

1. Al cargar una página, inicio session_start();
2. Compruebo si existe alguna sesion activa. Supongamos: $_SESSION['sesion_usuario'];
3. Si no está logueado, lo envío al home o login.
4. Si está logueado, le permito el acceso o lo envío a otro lado, según lo que desees hacer.

De este modo, si un usuario entra a alguna parte restringida, se le pedirá loguearse.

Ahora, las formas de lograr esto, pueden variar. Si el código anterior no les funciona es porque seguramente no han iniciado la variable $_SESSION['k_email'];. El error debe estar ahí puesto que en esa parte del código está la redirección. Por eso es importante tener claridad sobre los nombres que usamos, la lógica a emplear y lo que ocurrirá en cada caso.

Espero dar luces sobre el tema. Saludos cordiales.

Por phent1942

1 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.