 
			
				20/07/2013, 06:42
			
			
			     |  
      |    |    |    Fecha de Ingreso: julio-2013  
						Mensajes: 53
					  Antigüedad: 12 años, 3 meses Puntos: 1     |        |  
  |      Pérdida de la sesión (I)        Hola, tengo un problema con el traspaso de la sesión al refrescar la página o cambarla y no sé por qué. Espero que alguien pueda ayudarme.   
Parto de la página recepcion.php:   
Esta página es encabezada por un inicio de sesión, la introducción de los archivos externos necesarios y la creación de la clase recepcion, hija de Web. 
Concluye con la creación del código HTML por medio de las funciones de la clase  Web y de su hija recepcion.   
La página resultante posee un menú superior realizado por Web y un submenú realizado por la función escribir_submenu_superior de recepcion. El submenú dispone de tres opciones: Iniciar/terminar sesión, recuperar la contraseña olvidada y registrarse. Nos interesa la primera.   
Al hacer click en Iniciar sesión se escribe el formulario de escribir_columna_derecha_inicio_sesion(). La ejecución del formulario envía un post &accion='iniciar sesion' a la misma página. Este post es recogido al escribir el HTML de la página para que ejecute el método iniciar_sesion() el cual llamará a su vez al método iniciar_sesion() de la clase padre.   
[HIGHLIGHT="PHP"] 
<?php 
//Inicio de sesión. 
session_start(); 
//Ficheros requeridos. 
require_once 'Web.php'; 
require_once 'usuario.php'; 
//Creación de la clase Biblioteca. 
class Recepcion extends Web{ 
    ... 
    public function escribir_submenu_superior(){ 
        echo "        <!-- Submenú superior -->\n"; 
        echo "        <div class='submenu' id='submenu'>\n";             
        echo "          \n"; 
        if((!isset($_SESSION)) || ($this->leer_acceso() == $this::USUARIO_ANONIMO)){ 
            echo "          <form class='recepcion' id='inicio_sesion' action='".$_SERVER['PHP_SELF']."' method='post'>\n"; 
            echo "            <input type='hidden' name='accion' value='iniciar_sesion'>\n"; 
            echo "            <a href='javascript:document.getElementById(\"inicio_  sesion\").submit();'>Iniciar sesión</a> |\n"; 
            echo "          </form>\n"; 
        }else{ 
            echo "          <form class='recepcion' id='fin_sesion' action='".$_SERVER['PHP_SELF']."' method='post'>\n"; 
            echo "            <input type='hidden' name='accion' value='finalizar_sesion'>\n"; 
            echo "            <a href='javascript:document.getElementById(\"finaliz  ar_sesion\").submit();'>Finalizar sesión</a> |\n"; 
            echo "          </form>\n"; 
        }    
        echo "          \n"; 
        echo "          <form class='recepcion' id='recuperacion_clave' action='' method='post'>\n"; 
        echo "            <input type='hidden' name='accion' value='recuperar_clave'>\n"; 
        echo "            <a href='javascript:document.getElementById(\"recuper  acion_clave\").submit();'>Recuperar la contraseña olvidada</a> |\n"; 
        echo "          </form>\n"; 
        echo "          \n"; 
        echo "          <form class='recepcion' id='registro_usuario' action='' method='post'>\n"; 
        echo "            <input type='hidden' name='accion' value='registrar_usuario'>\n"; 
        echo "            <a href='javascript:document.getElementById(\"registr  o_usuario\").submit();'>Registrarse</a>\n"; 
        echo "          </form>\n"; 
        echo "          \n"; 
        echo "        </div>\n"; 
        echo "        <!-- Submenú superior (fin) -->\n"; 
        echo "        \n"; 
    } 
    ... 
    public function escribir_columna_derecha_inicio_sesion(){ 
        ... 
        echo "          <form id='sesion' name='sesion' method='post' action='".$_SERVER['PHP_SELF']."'>\n"; 
        echo "            <p>\n"; 
        echo "              <label>\n"; 
        echo "                Nombre de usuario*:\n"; 
        echo "                <br/>\n"; 
        echo "                <input id='usuario' name='usuario' type='text' size='30%' />\n"; 
        echo "              </label>\n"; 
        echo "            </p>\n"; 
        echo "            <p>\n"; 
        echo "              <label>\n"; 
        echo "                Contraseña*:\n"; 
        echo "                <br/>\n"; 
        echo "                <input id='clave' name='clave' type='text' size='30%' />\n"; 
        echo "              </label>\n"; 
        echo "            </p>\n"; 
        echo "            <p>\n"; 
        echo "             <input id='iniciar_sesion' name='iniciar_sesion' type='submit' value='Iniciar' />\n"; 
        echo "            </p>\n"; 
        echo "          </form>\n"; 
        echo "          \n"; 
    } 
    ... 
    public function iniciar_sesion(){ 
        //Se procesa la información. 
        if (isset($_POST['usuario'])){ 
            if (isset($_POST['clave'])){ 
                parent::iniciar_sesion($_POST['usuario'], $_POST['clave']); 
                //header('Location: ' . $_SERVER['SERVER_NAME']); 
            }else{ 
                echo "          <p>\n"; 
                echo "            <em>Resultado:</em> Por favor, introduzca la clave.\n"; 
                echo "          </p>\n"; 
            } 
        }else{ 
            echo "          <p>\n"; 
            echo "            <em>Resultado:</em> Por favor, introduzca su nombre de usuario.\n"; 
            echo "          </p>\n"; 
        } 
    } 
    ... 
} 
... 
//Creación de la página. 
$web = new Recepcion(AUTOR, 
                     FECHA_CREACION, 
                     FECHA_MODIFICACION, 
                     VERSION);   
$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. 
                    } 
                    if(isset($_POST['recuperar_clave'])){ 
                        $web->enviar_clave(); 
                    } 
                    if(isset($_POST['iniciar_sesion'])){ 
                        $web->iniciar_sesion(); 
                    } 
                    if(isset($_POST['accion'])){ 
                        $web->terminar_sesion(); 
                    } 
                    if(isset($_POST['registrar_usuario'])){ 
                        $web->registrar_usuario(); 
                    } 
                $web->finalizar_columna_derecha(); 
            $web->finalizar_columna_central(); 
        $web->finalizar_contenedor(); 
    $web->finalizar_body(); 
 $web->finalizar_html(); 
?>           |