Foros del Web » Programando para Internet » PHP »

necesito dos intentos para entrar

Estas en el tema de necesito dos intentos para entrar en el foro de PHP en Foros del Web. Para comprobar que el usuario que quiere entrar en determinada página es el administrador del sistema he puesto el siguiente código: <? include ("../include/mysql.inc"); $referente=$www_root.'procesa_index.php'; ...
  #1 (permalink)  
Antiguo 12/03/2005, 01:54
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
necesito dos intentos para entrar

Para comprobar que el usuario que quiere entrar en determinada página es el administrador del sistema he puesto el siguiente código:

<?
include ("../include/mysql.inc");
$referente=$www_root.'procesa_index.php';
$referente2=$www_root.'admin/autorizar.php';

if($HTTP_SERVER_VARS['HTTP_REFERER']==$referente OR $HTTP_SERVER_VARS['HTTP_REFERER']==$referente2 ){
echo "";
}else{
echo "<H3><center><font color='red'>PARA ENTRAR EN ESTA PÁGINA TIENES QUE HACER LOGIN PRIMERO</font></center></H3><BR>";
echo '<h4><center>IR A LA <a href="../index.php">PÁGINA DE LOGIN</a></center></h4>';
exit;
}
?>

El sistema funciona a la perfección tanto en Mozilla como en IExplorer, bueno, no a la perfección, puesto que en Mozilla la primera vez que metes el nombre y contraseña correctos el navegador actúa como si no vinieses de la página adecuada. Sin embargo, si vuelves a intentarlo, entonces ya sí reconoce la página apropiada de REFERER y te deja entrar. Eso a mí me descoloca, no le encuentro sentido a que te deje entrar al segundo intento pero no al primero. ¿Se os courre cuál pueda ser la causa del fallo?

P.D. Sé que me váis a decir que el sistema de autentificación mediante referer no es bueno, pero para mi me vale, porque es el único que sé poner y como me va bien preferiría no cambiarlo si es posible.
  #2 (permalink)  
Antiguo 13/03/2005, 01:57
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
Perdonad que insista, pero necesitaría alguna pista ¿porqué me deja entrar al segundo intento y no al primero?
  #3 (permalink)  
Antiguo 15/03/2005, 07:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Realmente es muyyyyyy inseguro tu sistema .. El "HTTP_REFERER" se puede perfectamente -emular- lo que necesite para pasar tu validación.. Creo que no es justificación hacer ese tipo de "validación" y alegar que "para ti te sobra" ..

Por qué no usas sesiones o simples cookies? .. es tan símple usarlo como:

autoriza.php
Código PHP:
<?
session_Start
();

// si validas a tu usuario correctamente ... defines una variable de sesión:
$_SESSION['autentificado']="blabla";

etc ...

// y redireccionas hacia tu otra página autentificada
header("Location: nosedonde.php");
?>
nosedonde.php
Código PHP:
<?
session_start
();
if (isset(
$_SESSION['autentificado'])){
header ("Location: login.php");
exit;
}
// resto de tu script ..
Como veras .. es bien simple usar sesiones para tener un sistema de autentificación y validación seguro.

----

Sobre tu problema concreto .. se supone que tu haces login y de ahí redireccionas a esa página que contiene tu validación donde se evalua "de que página llega" .. No comentas exactamente como llegas ahí .. si de un link? .. abriendo una ventana y llamando a ese código? ..

Lo único que veo es que NO deberías usar $HTTP_REFERER sino $_SERVER['HTTP_REFERER']

Un saludo,
  #4 (permalink)  
Antiguo 16/03/2005, 01:09
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
Hola Cluster, muchas gracias por tu respuesta. La solución que propones parece fácil de aplicar, así que voy a liarme la manta a la cabeza y voy a cambiar todo el sistema de autentificación.
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 18:43.