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<?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) { 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="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>
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 originalsession_start(); //La usas sin saber si el usuario se ha logueado. if ($_POST['tucorreo'])
{
$_SESSION['address'] = $_POST['tucorreo'];
}
Lo correcto sería:
Código PHP:
Ver originalif ($_POST['tucorreo'])
{
$_SESSION['address'] = $_POST['tucorreo'];
}
Espero que te ayude, saludos!