PHP - Form logado deslogado no recarga bien la página

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Demon Jr
Val: 31
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

Form logado deslogado no recarga bien la página

Publicado por Demon Jr (11 intervenciones) el 05/11/2018 18:07:59
Yo uso esta instruccion session_destroy(); , con esa truenas la session
hago una pagina con nombre close.php que contiene la instruccion , se ejecuta y de inmediato me regresa al Acceso...

Esperoy te sea utill.


1
2
3
4
<?php
 session_destroy();     // con esta instruccion destruyes las sesion ;
 header ("Location: acceso.PHP");  // te regresa a  tu pagina de inicio o de acceso
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Form logado deslogado no recarga bien la página

Publicado por Fernando (3 intervenciones) el 05/11/2018 19:56:54
Gracias Demon, tambien es buena opción, no obstante publico como lo arreglé por si le puede servir a alguien, solo que tenia que poner esta parte:

1
2
if(isset($_POST['username']) && isset($_POST['password'])){
    inicia_sesion($_POST['username'], $_POST['password']);

delante de esta:

1
if ( empty($_SESSION['loggedin']) ) {
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar