Form logado deslogado no recarga bien la página
Publicado por Fernando (3 intervenciones) el 04/11/2018 12:14:11
Hola a todos, llevo tiempo siguiendo esta página para hasta hoy no me he visto obligado a preguntar, pero estoy ya desesperado, la cuestión es que estoy realizando una página en php y ahora voy por la parte de logado y deslogado y el problema es que tengo dos form, uno para logar y otro para deslogar, cuando hago la consulta recargo la página y me oculta el de logado para mostrar el de deslogado y viceversa. El problema viene que al recargar la página para que oculte y desoculte tengo que hacerlo dos veces, ya que la primera recarga pero no funciona, os lo explico con el código:
El if muestra un form u otro según la variable $_SESSION['loggedin'], para el logado uso la función:
Cuando llamo header("location:index.php"); se recarga la página pero me sigue mostrando el form de logado, si le vuelvo a dar entonces ya desaparece y aparece el de deslogado y viceversa ¿alguna idea?
Gracias por adelantado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
if ( empty($_SESSION['loggedin']) ) {
echo "<span class='heading'>";
echo "<br><h6>Logarse</h6><hr />";
echo "<form action=\"\" method=\"post\" >";
echo "<label>Usuario:</label><br>";
echo "<input style= \"width: 7em; -moz-border-radius: 10px; -webkit-border-radius: 10px;\" name=\"username\" type=\"text\" id=\"username\" required>";
echo "<br><br>";
echo "<label>Contraseña:</label><br>";
echo "<input style= \"width: 7em; -moz-border-radius: 10px; -webkit-border-radius: 10px;\" name=\"password\" type=\"password\" id=\"password\" required>";
echo "<br><br>";
echo "<input style=\"text-align: center;\"type=\"submit\" name=\"Submit\" value=\"LOGIN\">";
echo "</form>";
if(isset($_POST['username']) && isset($_POST['password'])){
inicia_sesion($_POST['username'], $_POST['password']);
//header('Location: index.php');
}
} else {
echo "<form action=\"\" method=\"post\" >";
echo "<input type=\"hidden\" value=\"" . $_SESSION['username'] . "\" name=\"usuario\">";
echo "<input style=\"text-align: center;\"type=\"submit\" name=\"Submit\" value=\"LOGOUT\">";
echo "</form>";
if(isset($_POST['usuario'])){
unset ($_SESSION['loggedin']);
session_destroy();
header("Location: index.php");
}
}
?>
El if muestra un form u otro según la variable $_SESSION['loggedin'], para el logado uso la función:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function inicia_sesion ($username, $password){
ob_start();
$host_db = "localhost";
$user_db = "******";
$pass_db = "********";
$db_name = "Juegario";
$tbl_name = "Usuarios";
$conexion = new mysqli($host_db, $user_db, $pass_db, $db_name);
if ($conexion->connect_error) {
die("La conexion falló: " . $conexion->connect_error);
}
$sql = "SELECT * FROM $tbl_name WHERE nombre_usuario = '$username'";
$result = mysqli_query( $conexion, $sql ) or die ( "Algo ha ido mal en la consulta a la base de datos");
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
if (password_verify($password, $row['password'])) {
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
$_SESSION['start'] = time();
$_SESSION['expire'] = $_SESSION['start'] + (1 * 60);
echo "Bienvenido! " . $_SESSION['username'];
} else {
echo "Username o Password estan incorrectos.";
//echo "<p> error</p>";
}
mysqli_close($conexion);
header("location:index.php");
ob_end_flush();
}
}
Cuando llamo header("location:index.php"); se recarga la página pero me sigue mostrando el form de logado, si le vuelvo a dar entonces ya desaparece y aparece el de deslogado y viceversa ¿alguna idea?
Gracias por adelantado.
Valora esta pregunta


0