Todos los archivos PHP comienzan así:
Sólo ha tres excepciones:
En la página
Web.php donde se implementa la clase
Web:
Código PHP:
Ver originalpublic 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){
//A quitar luego...
//...hasta aquí.
$_SESSION['usuario'] = $usuario;
$this->escribir_acceso($this::USUARIO_REGISTRADO);
$resultado->free();
}else{
$this->terminar_sesion();
}
}else{
//A quitar luego...
//...hasta aquí.
$_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(){
//A quitar luego...
//...hasta aquí.
$_SESSION['usuario'] = 'Anónimo';
$this->escribir_acceso($this::USUARIO_ANONIMO);
}
Pero como puedes verse, no hay ninguna impresión, nada. El método escribir acceso es sólo una asignación del parámetro del método a un atributo de la clase. Nada más.
¿Y si se llama a estos métodos en un contexto en el que se imprime algún ASCII antes de llamar a session_start()?
La respuesta es "no".
Código PHP:
Ver original<?php
//Inicio de sesión.
//Ficheros requeridos.
require_once 'Web.php';
require_once 'usuario.php';
//Creación de la clase Biblioteca.
class Recepcion extends Web{
....
}
/**
* Descripción: Página de inicio de sesión.
* IDE: Realizado con NetBeans 7.2.1.
*/
define ('AUTOR', 'Francisco José Torres Gimeno'); define ('FECHA_CREACION', 'Domingo, 26 de mayo de 2013'); define ('FECHA_MODIFICACION', 'Domingo, 21 de julio de 2013'); define ('HAY_ENLACE_AL_INICIO', TRUE); define ('SUBTITULO', 'Página en construcción'); define ('TITULO', 'Recepción particular de <br /> Fco. J. Torres Gimeno'); define ('VERSION', 'Alpha 1.0.3');
//Creación de la página.
$web = new Recepcion(AUTOR,
FECHA_CREACION,
FECHA_MODIFICACION,
VERSION);
//Ejecución de las acciones del formulario que remitió a esta página.
//Sólo se da uno de los casos.
if(isset($_POST['recuperar_clave'])){ $web->enviar_clave();
}
if(isset($_POST['iniciar_sesion'])){ $web->iniciar_sesion(); //NO SE HA COMENZADO EL CÓDIGO HTML
}
if(isset($_POST['accion'])){ if($_POST['accion']=='finalizar_sesion'){
$web->terminar_sesion(); //NO SE HA COMENZADO EL CÓDIGO HTML
}
}
if(isset($_POST['registrar_usuario'])){ $web->registrar_usuario();
}
//Escritura de la página.
$web->escribir_doctype();
$web->iniciar_html();
$web->escribir_head();
$web->iniciar_body();
$web->escribir_capa_superpuesta();
$web->iniciar_contenedor();
$web->iniciar_encabezamiento();
$web->escribir_menu_superior();
$web->escribir_submenu_superior();
$web->escribir_mensaje_de_informacion('');
$web->escribir_mensaje_de_aviso('');
$web->escribir_mensaje_de_exito('');
$web->escribir_mensaje_de_error('');
$web->finalizar_encabezamiento();
$web->iniciar_columna_central();
$web->iniciar_columna_izquierda();
$web->titular_columna_izquierda(TITULO, SUBTITULO);
$web->escribir_columna_izquierda();
$web->indexar_inicio(HAY_ENLACE_AL_INICIO);
$web->finalizar_columna_izquierda();
$web->iniciar_columna_derecha();
$web->escribir_columna_derecha_introduccion();
if(isset($_POST['accion'])){ if($_POST['accion']=='iniciar_sesion'){
$web->escribir_columna_derecha_inicio_sesion();
}elseif($_POST['accion']=='recuperar_clave'){
$web->escribir_columna_derecha_recuperacion_clave();
}elseif($_POST['accion']=='registrar_usuario'){
$web->escribir_columna_derecha_registro_usuario();
}else{
//Nada.
}
}else{
//Nada.
}
echo $web->leer_mensaje();
$web->finalizar_columna_derecha();
$web->finalizar_columna_central();
$web->finalizar_contenedor();
$web->finalizar_body();
$web->finalizar_html();
?>