La seguridad la implemento de la siguiente manera:
- Tengo un script llamado 'autentificarse.php' en el que se le pide al usuario su login y contraseña.
- A continuación en un script llamado 'control.php' compruebo si ese login y esa contraseña están incluidas en la BD y:
Código PHP:
session_start();
$_SESSION['autentificado'] = "SI";
header ("Location: http://localhost/miBD/index.php?login=".$fila['login']."");
}else {
//si no existe le mando otra vez a la portada
header("Location: autentificarse.php?errorusuario=si");
}
Abro la sesión (session_start()) y guardo una variable en la sesión 'autentificado', que servirá como referencia más adelante para ver si un usuario está autentificado o no. Si lo está lo mando al index, pero si no lo está vuelve a la página 'autentificarse.php'.
- Tengo un fichero llamado 'seguridad.php' que incluyo en todos los script que no quiero que puedan ser abiertos en el navegador poniendo 'http://localhost/miBD/miScript.php?id=1'. El fichero seguridad tiene el siguiente código:
Código PHP:
<?
session_start();
if ($_SESSION['autentificado'] != "SI") {
//si no existe, envio a la página de autentificacion
header("Location: autentificacion.php");
//ademas salgo de este script
exit();
}
?>
En cambio si abro por ejemplo el explorer y pongo lo mismo 'http://localhost/miBD/miScript.php?id=1', no me lo abre, sino me aparece el siguiente warning:
Warning: Cannot modify header information - headers already sent by (output started at C:\server\web\miBD\index.php:10) in C:\server\web\miBD\Seguridad\seguridad.php on line 6
¿por que me pasa esto?¿cómo puedo modificar la implementación de seguridad en mi programa para que no pasen estas cosas?¿qué me aconsejais que use como seguridad teniendo en cuenta que el programa se usará en una intranet?
Muchas gracias