Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/07/2013, 11:16
fcotorgi
 
Fecha de Ingreso: julio-2013
Mensajes: 53
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Pérdida de la sesión (II)

El código que crea el formulario y recoge los parámetros es el siguiente:

Código PHP:
Ver original
  1. <?php
  2. //Inicio de sesión.
  3. //Ficheros requeridos.
  4. require_once 'Web.php';
  5. require_once 'usuario.php';
  6. //Creación de la clase Biblioteca.
  7. class Recepcion extends Web{
  8.     ...
  9.     public function escribir_submenu_superior(){
  10.         echo "        <!-- Submenú superior -->\n";
  11.         echo "        <div class='submenu' id='submenu'>\n";            
  12.         echo "          \n";
  13.         if((!isset($_SESSION)) || ($this->leer_acceso() == $this::USUARIO_ANONIMO)){
  14.             echo "          <form class='recepcion' id='inicio_sesion' action='".$_SERVER['PHP_SELF']."' method='post'>\n";
  15.             echo "            <input type='hidden' name='accion' value='iniciar_sesion'>\n";
  16.             echo "            <a href='javascript:document.getElementById(\"inicio_sesion\").submit();'>Iniciar sesión</a> |\n";
  17.             echo "          </form>\n";
  18.         }else{
  19.             echo "          <form class='recepcion' id='fin_sesion' action='".$_SERVER['PHP_SELF']."' method='post'>\n";
  20.             echo "            <input type='hidden' name='accion' value='finalizar_sesion'>\n";
  21.             echo "            <a href='javascript:document.getElementById(\"fin_sesion\").submit();'>Finalizar sesión</a> |\n";
  22.             echo "          </form>\n";
  23.         }  
  24.         echo "          \n";
  25.         echo "          <form class='recepcion' id='recuperacion_clave' action='' method='post'>\n";
  26.         echo "            <input type='hidden' name='accion' value='recuperar_clave'>\n";
  27.         echo "            <a href='javascript:document.getElementById(\"recuperacion_clave\").submit();'>Recuperar la contraseña olvidada</a> |\n";
  28.         echo "          </form>\n";
  29.         echo "          \n";
  30.         echo "          <form class='recepcion' id='registro_usuario' action='' method='post'>\n";
  31.         echo "            <input type='hidden' name='accion' value='registrar_usuario'>\n";
  32.         echo "            <a href='javascript:document.getElementById(\"registro_usuario\").submit();'>Registrarse</a>\n";
  33.         echo "          </form>\n";
  34.         echo "          \n";
  35.         echo "        </div>\n";
  36.         echo "        <!-- Submenú superior (fin) -->\n";
  37.         echo "        \n";
  38.     }
  39.     ...
  40.     public function escribir_columna_derecha_inicio_sesion(){
  41.         echo "          <p>\n";
  42.         echo "            <em>Inicio de sesión</em>";
  43.         echo "          </p>\n";
  44.         echo "          <p>\n";
  45.         echo "            Por favor, rellene los campos abajo descritos\n";
  46.         echo "            si desea iniciar una sesión no anónima.\n";
  47.         echo "          </p>\n";
  48.         echo "          <p>\n";
  49.         echo "            Atenci&oacute;n: La p&aacute;gina se encuentra todav&iacute;a en construcci&oacute;n\n";
  50.         echo "            y no se almacenan de forma persistente los usuario. Es por ello que todas las sesiones son,\n";
  51.         echo "            por ahora anónimas.\n";
  52.         echo "          </p>\n";
  53.         echo "          <p>\n";
  54.         echo "            Disculpe la molestia y gracias por su confianza.\n";
  55.         echo "          </p>\n";
  56.         echo "          \n";
  57.         echo "          <form id='sesion' name='sesion' method='post' action='".$_SERVER['PHP_SELF']."'>\n";
  58.         echo "            <p>\n";
  59.         echo "              <label>\n";
  60.         echo "                Nombre de usuario*:\n";
  61.         echo "                <br/>\n";
  62.         echo "                <input id='usuario' name='usuario' type='text' size='30%' />\n";
  63.         echo "              </label>\n";
  64.         echo "            </p>\n";
  65.         echo "            <p>\n";
  66.         echo "              <label>\n";
  67.         echo "                Contraseña*:\n";
  68.         echo "                <br/>\n";
  69.         echo "                <input id='clave' name='clave' type='text' size='30%' />\n";
  70.         echo "              </label>\n";
  71.         echo "            </p>\n";
  72.         echo "            <p>\n";
  73.         echo "             <input id='iniciar_sesion' name='iniciar_sesion' type='submit' value='Iniciar' />\n";
  74.         echo "            </p>\n";
  75.         echo "          </form>\n";
  76.         echo "          \n";
  77.     }
  78.     ...
  79.     public function iniciar_sesion(){
  80.         //Se procesa la información.
  81.         if (isset($_POST['usuario'])){
  82.             if (isset($_POST['clave'])){
  83.                 parent::iniciar_sesion($_POST['usuario'], $_POST['clave']);
  84.                 $msg = "¡Saludos, ".$_SESSION['usuario']."!\n";
  85.             }else{
  86.                 $msg = "<em>Resultado:</em> Por favor, introduzca la clave.\n";
  87.             }
  88.         }else{
  89.             $msg = "<em>Resultado:</em> Por favor, introduzca su nombre de usuario.\n";
  90.         }
  91.         $mensaje  = "          <p>\n";
  92.         $mensaje .= "              " . $msg;
  93.         $mensaje .= "          </p>\n";
  94.         $this->escribir_mensaje($mensaje);
  95.     }
  96.     ...
  97. }
  98.  
  99. ...
  100.  
  101. //Creación de la página.
  102. $web = new Recepcion(AUTOR,
  103.                      FECHA_CREACION,
  104.                      FECHA_MODIFICACION,
  105.                      VERSION);
  106. //Ejecución de las acciones del formulario que remitió a esta página.
  107. ...
  108. if(isset($_POST['iniciar_sesion'])){
  109.     $web->iniciar_sesion();
  110. }
  111. if(isset($_POST['accion'])){
  112.     if($_POST['accion']=='finalizar_sesion'){
  113.         $web->terminar_sesion();
  114.     }
  115. }
  116. ...
  117. //Escritura de la página.
  118. $web->escribir_doctype();
  119. $web->iniciar_html();
  120. ...
  121.                 $web->iniciar_columna_derecha();
  122.                     $web->escribir_columna_derecha_introduccion();
  123.                     if(isset($_POST['accion'])){
  124.                         if($_POST['accion']=='iniciar_sesion'){
  125.                             $web->escribir_columna_derecha_inicio_sesion();
  126.                         }elseif($_POST['accion']=='recuperar_clave'){
  127.                             $web->escribir_columna_derecha_recuperacion_clave();
  128.                         }elseif($_POST['accion']=='registrar_usuario'){
  129.                             $web->escribir_columna_derecha_registro_usuario();
  130.                         }else{
  131.                             //Nada.
  132.                         }
  133.                 ...
  134.                 $web->finalizar_columna_derecha();
  135.                 ...
  136. $web->finalizar_html();
  137. ?>

(...sigue...)