Hasta ahora me funcionaban bien las sesiones, pero al introducir la identificación del usuario y la seguridad en mi programa me está fallando.
El problema es el siguiente:
Yo, para autentificar al usuario uso el siguiente script (el login y el password lo paso de un formulario):
Using php Syntax Highlighting
<?
include("C:\server\web\BDFPSalesianos\Otros\conexion.php");
//Sentencia SQL para buscar un usuario con esos datos
$login=$_POST["login"];
$password=$_POST["password"];
$sql = "SELECT * FROM profesores WHERE ((login='".$login."') && (password='".$password."'))";
$result = mysql_query($sql, $GLOBALS["miConexion"]) or die(mysql_error());
//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa combinación usuario/contraseña
if (mysql_num_rows($result)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$fila = mysql_fetch_assoc($result);
$_SESSION['autentificado'] = "SI";
header ("Location: http://localhost/BDFPSalesianos/index.php?login=".$fila['login']."");
}else {
//si no existe le mando otra vez a la portada
header("Location: autentificacion.php?errorusuario=si");
}
?>
include("C:\server\web\BDFPSalesianos\Otros\conexion.php");
//Sentencia SQL para buscar un usuario con esos datos
$login=$_POST["login"];
$password=$_POST["password"];
$sql = "SELECT * FROM profesores WHERE ((login='".$login."') && (password='".$password."'))";
$result = mysql_query($sql, $GLOBALS["miConexion"]) or die(mysql_error());
//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa combinación usuario/contraseña
if (mysql_num_rows($result)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$fila = mysql_fetch_assoc($result);
$_SESSION['autentificado'] = "SI";
header ("Location: http://localhost/BDFPSalesianos/index.php?login=".$fila['login']."");
}else {
//si no existe le mando otra vez a la portada
header("Location: autentificacion.php?errorusuario=si");
}
?>
Coloreado en 0.031 segundos, usando GeSHi 1.0.8.4
Y para saber si un usuario está autenticado bien, uso la variable de sesión 'autentificado', de manera que para aumentar la seguridad en mi programa uso el siguiente script (que incluyo en todos los script que quiero mantener seguros, todos los de la base de datos):
seguridad.php
Using php Syntax Highlighting
<?
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();
}
?>
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();
}
?>
Coloreado en 0.009 segundos, usando GeSHi 1.0.8.4
Lo incluyo de la siguiente manera:
Using php Syntax Highlighting
include("C:\server\web\BDFPSalesianos\Autentificacion\seguridad.php");
Coloreado en 0.009 segundos, usando GeSHi 1.0.8.4
Además en todos los script también incluyo la conexión a la base de datos:
Using php Syntax Highlighting
include("C:\server\web\BDFPSalesianos\Otros\conexion.php");
Coloreado en 0.009 segundos, usando GeSHi 1.0.8.4
El fichero conexion.php contiene
Using perl Syntax Highlighting
<?
$miConexion = mysql_connect("localhost","root","root");
mysql_select_db("bdfpsalesianos", $miConexion);
?>
$miConexion = mysql_connect("localhost","root","root");
mysql_select_db("bdfpsalesianos", $miConexion);
?>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Y al ejecutar cualquier script en los que incluya el script 'seguridad.php' y en el que no esté la sentencia 'session_start();' aparece el mensaje de error:
- Código: Seleccionar todo
Warning: Cannot modify header information - headers already sent by (output started at C:\server\web\BDFPSalesianos\Otros\menuProfesor.php:12) in C:\server\web\BDFPSalesianos\Autentificacion\seguridad.php on line 6
¿Por qué aparece? No tengo la sentencia 'session_start();' en todos los script porque hay algunos que no acceden a ninguna variable de sesión.
Espero que me podáis ayudar, muchas gracias.