Página web protegida con contraseña en PHP

Según las necesidades nos podemos encontrar en la situación de tener que proteger una página con contraseña y no queremos utilizar complejos sistemas de autentificación validando formularios o utilizando base de datos.

En el ejemplo vamos a ver cómo proteger una página web mediante contraseña de una manera muy sencilla.

Al principio del documento (protegido.php por ejemplo), creamos una variable $password donde guardaremos la contraseña que vamos a utilizar.

//contraseña a utilizar
$password = "secretisima";

Lo siguiente que haremos es mediante la función isset($_POST[‘password’]) comprobar si hemos introducido la contraseña en el formulario.

if (isset($_POST['password'])) {
}

Si no se ha pasado contraseña por post mostramos el formulario de inicio.

else{
	echo '<h2>Logueate</h2>
	<form name="form" method="post" action="">
	<input type="password" name="password"><br>
	<input type="submit" value="Login"></form>
	';
}

El siguiente paso es valdiar la contraseña cuando se ha recibido por el post.

En el caso de no coincidir volvemos a mostrar el formulario

if ($_POST['password'] != $password) { 
		echo '<h2>Password erronea</h2>
		<form name="form" method="post" action="">
		<input type="password" name="password"><br>
		<input type="submit" value="Login"></form>
		';
	}

Si la contraseña es correcta iniciamos la sesión y mostramos el contenido protegido.

inciamos sesion
		session_start();
		//mostramos contenido protegido
		echo "<p>Has accedido a la zona restingida</p>";

Y por ultimo creamos un enlace para cerrar la sesión a través de get.

if (isset($_GET['logout'])) {
			if($_GET['logout']==1) session_destroy();
		}	

El código final del fichero seria el siguiente.

<?php 

//contraseña a utilizar
$password = "secretisima";

//comprobamos si se ha pasado la contraseña al formulario
if (isset($_POST['password'])) {
	//si la contraseña es erronea mandamos al formulario de nuevo
	if ($_POST['password'] != $password) { 
		echo '<h2>Password erronea</h2>
		<form name="form" method="post" action="">
		<input type="password" name="password"><br>
		<input type="submit" value="Login"></form>
		';
	}
	//accedemos al panel privado
	else{
		//inciamos sesion
		session_start();

		//mostramos contenido protegido
		echo "<p>Has accedido a la zona restingida</p>";

		//enalce para cerrrar sesion
		echo '<p><a href="?logout=1">Cerrrar sesion</a></p>';

		//si pasamos 'logout' por get cerramos la sesion
		if (isset($_GET['logout'])) {
			if($_GET['logout']==1) session_destroy();
		}		 
	}
}
//al no pasar contraseña enviamos al formulario de inicio
else{
	echo '<h2>Logueate</h2>
	<form name="form" method="post" action="">
	<input type="password" name="password"><br>
	<input type="submit" value="Login"></form>
	';
}
?>

Deja un comentario