Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/09/2015, 16:31
Avatar de mauriciovargasgarcia
mauriciovargasgarcia
 
Fecha de Ingreso: septiembre-2015
Ubicación: Villavicencio
Mensajes: 3
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Login y logout en misma pagina php

Hola, creo que se lo que quieres hacer, intentaré ser claro con mi codigo (Según mi logica, probado y funciando):

Código PHP:
Ver original
  1. <?php
  2. /*
  3. Titulo: Login y Logout en un mismo archivo.
  4. Autor: Mauricio Vargas Garcia / @maurovgarcia
  5.  
  6. En este caso use GET para indicar si el user dio clic en el enlace de Cerrar Sesion.
  7. A continuacion verifico si eso fue asi:
  8. */
  9. if (isset($_GET['logout']) == 1) {
  10.     header('Location: index.php');
  11. }
  12. else {// De no haber cerrado sesion.
  13.     /*
  14.     Instancio las variables que necesito.
  15.     */
  16.     $form       = '<form action="" method="post">
  17.                         <label>Introduce tu correo y click en login</label>
  18.                         <input type="text" name="tucorreo" placeholder="Introduce tu correo"/>
  19.                         <input type="submit" value="Login" />
  20.                     </form>';
  21.     $html       = '';//Variable que concatenará las vistas HTML
  22.  
  23.     if (isset($_SESSION['address'])) {//verifico si se ha iniciado una sesion, de ser asi, muestro el enlace de cerrar sesion y un mensaje de bienvenida.
  24.         $html.= '<a href="?logout=1">Cerrar sesion</a><h1>Bienvenido '.$_SESSION['address'].'</h1>';
  25.  
  26.     }
  27.     else {//No ha iniciado sesion
  28.         if (isset($_POST['tucorreo'])) { //Si ingreso el correo en el formulario HTML?.
  29.             session_start();//Abro la sesion y muestro el enlace de cerra sesion.
  30.             $_SESSION['address'] = $_POST['tucorreo'];
  31.             $html.= '<a href="?logout=1">Cerrar sesion</a><h1>Bienvenido '.$_SESSION['address'].'</h1>';
  32.         }
  33.         else {//De no haber ingresado el correo, muestro el formulario, (Recuerde que $form la instancie arriba).
  34.             $html.= $form;
  35.         }
  36.     }
  37. }
  38. ?>
  39. <!DOCTYPE html>
  40. <html lang="es">
  41. <head>
  42.     <title>Tu App</title>
  43. </head>
  44. <body>
  45.     <?php
  46.         if (isset($html)) echo $html; //Finalmente imprimo el $html concatenado.
  47.         else 'Ha ocurrido un error en la App.';
  48.     ?>
  49. </body>
  50. </html>

Recomiendo usar funciones si tus campos en el formulario son mas complejos, esto te ayudara a la organizacion de tu App a futuro, tambien es mejor evitar instanciar funciones antes de saber si hay que usarlas o no, me explico:
Código PHP:
Ver original
  1. session_start(); //La usas sin saber si el usuario se ha logueado.
  2. if ($_POST['tucorreo'])
  3. {
  4. $_SESSION['address'] = $_POST['tucorreo'];
  5. }
Lo correcto sería:
Código PHP:
Ver original
  1. if ($_POST['tucorreo'])
  2. {
  3. $_SESSION['address'] = $_POST['tucorreo'];
  4. }

Espero que te ayude, saludos!

Última edición por mauriciovargasgarcia; 05/09/2015 a las 18:10