(...continua...)
El formulario llama a esa misma página y ejecuta el siguiente método de la clase '"Web" que está implementada en "Web.php":
Código PHP:
Ver original<?php
//Inicio de sesión.
...
class Web{
...
public function iniciar_sesion($usuario, $clave){
$mysql = new mysqli($this->leer_bdweb_servidor(), $this->leer_bdweb_usuario(), $this->leer_bdweb_clave(), $this->leer_bdweb_nombre());
if($mysql->connect_error == NO_HAY_ERROR){
$consulta = "SELECT *
FROM `Usuarios`
WHERE `nombre` = '$usuario' AND `clave` = '$clave'";
$resultado = $mysql->query($consulta);
if ($resultado->num_rows > 0){
$_SESSION['usuario'] = $usuario;
$this->escribir_acceso($this::USUARIO_REGISTRADO);
$resultado->free();
}else{
$this->terminar_sesion();
}
}else{
$_SESSION['usuario'] = 'ERR'.$mysql->connect_errno;
$this->escribir_acceso($this::USUARIO_ANONIMO);
echo $mysql->connect_error;
echo "<br />";
}
$mysql->close();
}else{
$this->terminar_sesion();
}
}
public function terminar_sesion(){
$_SESSION['usuario'] = 'Anónimo';
$this->escribir_acceso($this::USUARIO_ANONIMO);
}
...
public function escribir_menu_superior(){
if(isset($_SESSION['usuario'])){ $usuario = $_SESSION['usuario'];
}else{
$usuario = 'Anónimo';
}
echo " <!-- Menú superior -->\n";
echo " <div class='menu' id='menu'>\n";
echo " <a href='/Biblioteca.php'>Biblioteca </a>|\n";
echo " <a href='/Sindesmoteca.php'>Sindesmoteca </a>|\n";
echo " <a href='/galeria/Galeria.php'>Galería </a>|\n";
echo " <a href='/Historial.php'>Historial </a>|\n";
echo " <a href='/Videoteca.php'>Videoteca </a>|\n";
echo " <a href='/Buzon.php'>Buzón </a>|\n";
echo " <a href='/Fonoteca.php'>Fonoteca </a>|\n";
echo " <a href='/recepcion.php'>Recepción </a>|\n";
echo " <a href=''>".$usuario."</a>\n";
echo " </div>\n";
echo " <!-- Menú superior (fin) -->\n";
echo " \n";
}
...
}
?>
Todos los ficheros php que pueden ser ejecutados en el menú comienzan así:
Y no hay ningún otro <i>session_start()</i> más que los escritos arriba.
Cuando ejecuto alguno de los archivos php del menú, se pierde la sesión. Si alguien puede arrojarme algo de luz, se lo agradeceré.