Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Login y logout en misma pagina php

Estas en el tema de Login y logout en misma pagina php en el foro de PHP en Foros del Web. Hola estoy intentando crear un login y logout en la misma página php pero no lo consigo. Este es mi codigo para loguearse en index.php: ...
  #1 (permalink)  
Antiguo 05/09/2015, 01:47
 
Fecha de Ingreso: septiembre-2015
Mensajes: 16
Antigüedad: 9 años, 2 meses
Puntos: 1
Login y logout en misma pagina php

Hola estoy intentando crear un login y logout en la misma página php pero no lo consigo.

Este es mi codigo para loguearse en index.php:

Cita:
<?php
session_start();
if ($_POST['tucorreo'])
{
$_SESSION['address'] = $_POST['tucorreo'];
}
if ($_SESSION['address'])

{
$var1="Esta es tu dirección: <strong>".$_SESSION['address']."</strong>";
}

?>
Cita:
<form action="" method="post">

<label>Introduce tu correo y click en login</label>

<input type="text" name="tucorreo" class="form-control" value="<?php echo $_SESSION['address'];?>" placeholder="Introduce tu correo"/>

<input type="submit" value="Login" />

</form>
Es decir, cuando quiera hacer login un usuario aparezca un bloque para loguear y cuando ya este logueado el usuario no me aparezca el bloque de loguear y aparezca que ya esta conectado, no se si me he explicado bien
  #2 (permalink)  
Antiguo 05/09/2015, 08:10
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Login y logout en misma pagina php

Tienes que hacer algo así:

1. Comprobar si está establecida la variable de sesión del usuario
2. Si no está establecida tiene que comprobar dos cosas
a. Si se está enviando información por post, lo cual significa que el usuario oprimio el botón de Login y por lo tanto deberás autenticar al usuario con el usuario y contraseña que proporcionó y establecer la variable de usuario.
b. Si no se está enviando información por post significa que es la primera vez que se abre la página login.php y por lo tanto deberás mostrar el formulario de login
3. Si está establecida la variable de sesión tendrás que hacer logout.

Algo así sería para hacerlo todo en una misma página.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #3 (permalink)  
Antiguo 05/09/2015, 16:31
Avatar de mauriciovargasgarcia  
Fecha de Ingreso: septiembre-2015
Ubicación: Villavicencio
Mensajes: 3
Antigüedad: 9 años, 2 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
  #4 (permalink)  
Antiguo 07/09/2015, 11:47
 
Fecha de Ingreso: septiembre-2015
Mensajes: 16
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Login y logout en misma pagina php

Gracias a los dos!

Mauricio esta muy bien tu codigo solo que para cerrar session les envio a logout.php
  #5 (permalink)  
Antiguo 11/09/2015, 21:50
Avatar de mauriciovargasgarcia  
Fecha de Ingreso: septiembre-2015
Ubicación: Villavicencio
Mensajes: 3
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Login y logout en misma pagina php

Aun que se usa mucho el famoso "logout.php" en este caso (Hablo del codigo posteado) no es necesario implementarlo a menos de que el MVC (Modelo Vista Controlador) de tu App sea complejo, si lo que quieres es enviar a logout.php solo tendrías que hacer el re-direccionamiento con el header() a logout.php, así:

Código PHP:
Ver original
  1. header('Location: logout.php');

y luego en el archivo logout.php poner:

Código PHP:
Ver original
  1. //Mas lo que sea tu codigo

Pero reitero, si tu App es sencilla y no estas usando un MVC complejo, creo que mi codigo te sería de gran ayuda, saludos!
  #6 (permalink)  
Antiguo 29/09/2015, 11:10
 
Fecha de Ingreso: septiembre-2015
Mensajes: 16
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Login y logout en misma pagina php

Cita:
Iniciado por mauriciovargasgarcia Ver Mensaje
Aun que se usa mucho el famoso "logout.php" en este caso (Hablo del codigo posteado) no es necesario implementarlo a menos de que el MVC (Modelo Vista Controlador) de tu App sea complejo, si lo que quieres es enviar a logout.php solo tendrías que hacer el re-direccionamiento con el header() a logout.php, así:

Código PHP:
Ver original
  1. header('Location: logout.php');

y luego en el archivo logout.php poner:

Código PHP:
Ver original
  1. //Mas lo que sea tu codigo

Pero reitero, si tu App es sencilla y no estas usando un MVC complejo, creo que mi codigo te sería de gran ayuda, saludos!
Hola mauricio que pasa si dentro de tu codigo en el form, tengo que meter esto: <?php echo $data["tucorreo"]; ?>.
Como lo hago ya que dentro de un php no puedo meter otro? Gracias

Cita:
<?php
/*
Titulo: Login y Logout en un mismo archivo.
Autor: Mauricio Vargas Garcia / @maurovgarcia

En este caso use GET para indicar si el user dio clic en el enlace de Cerrar Sesion.
A continuacion verifico si eso fue asi:
*/
if (isset($_GET['logout']) == 1) {
session_destroy();
header('Location: index.php');
}
else {// De no haber cerrado sesion.
/*
Instancio las variables que necesito.
*/
$form = '<form action="" method="post">
<label>Introduce tu correo y click en login</label>
<input type="text" name="<?php echo $data["tucorreo"]; ?>" placeholder="Introduce tu correo"/>
<input type="submit" value="Login" />
</form>';
$html = '';//Variable que concatenará las vistas HTML

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.
$html.= '<a href="?logout=1">Cerrar sesion</a><h1>Bienvenido '.$_SESSION['address'].'</h1>';

}
else {//No ha iniciado sesion
if (isset($_POST['tucorreo'])) { //Si ingreso el correo en el formulario HTML?.
session_start();//Abro la sesion y muestro el enlace de cerra sesion.
$_SESSION['address'] = $_POST['tucorreo'];
$html.= '<a href="?logout=1">Cerrar sesion</a><h1>Bienvenido '.$_SESSION['address'].'</h1>';
}
else {//De no haber ingresado el correo, muestro el formulario, (Recuerde que $form la instancie arriba).
$html.= $form;
}
}
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<title>Tu App</title>
</head>
<body>
<?php
if (isset($html)) echo $html; //Finalmente imprimo el $html concatenado.
else 'Ha ocurrido un error en la App.';
?>
</body>
</html>
  #7 (permalink)  
Antiguo 02/10/2015, 20:55
Avatar de mauriciovargasgarcia  
Fecha de Ingreso: septiembre-2015
Ubicación: Villavicencio
Mensajes: 3
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Login y logout en misma pagina php

Hola Victor un gusto ayudarte, en básicamente todos los lenguajes de programación existen los datos concatenados, podemos concatenar variables si queremos mostrar el contenido de una variable dentro de otra variable, con el siguiente código me explico mejor:

Código PHP:
Ver original
  1. $form  = '<form action="" method="post">
  2.                        <label>Introduce tu correo y click en login</label>
  3.                        <input type="text" name="'.$data['tucorreo'].'" placeholder="Introduce tu correo"/>
  4.                        <input type="submit" value="Login" />
  5.                    </form>';

Como podemos ver uso puntos para concatenar la variable $data["tucorreo"], también uso comillas sencillas para encerrar la variable a concatenar, estas comillas deben ser iguales a las que uso para encerrar el contenido de la variable $form, recomiendo leer mas sobre este tema ya que en lenguajes como PHP que es orientado a la Web se requiere mucho, igual también recomiendo tener cuidado con el manejo de comillas en HTML con PHP y viceversa. Saludos.

Etiquetas: login, logout
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:11.