En este tutorial vamos a crear un sistema de sesión de usuarios en PHP, en PHP el uso de sesiones se puede implementar de forma muy sencilla como vamos a ver a continuación, para empezar, creamos tres documentos en PHP, inicio.php, sesion.php y exit.php, los tres documentos deben empezar con la función “session_start()”, esta función crea una sesión o reanuda la sesión actual basada en un identificador de sesión, el identificador de sesión, es pasado a la función mediante una petición GET, una petición POST o una cookie, esta función debe de ser lo primero que se inserte en el documento, antes del código HTML.

El código para los tres documentos es el siguiente:

<?php 
	session_start();
?>

A continuación insertamos el código HTML con tres enlaces para navegar por los tres documentos y realizar las pruebas pertinentes, insertamos el mismo contenido en los tres documentos.

El código para los tres documentos es el siguiente:


<html lang="es">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	<p>
		<a href="index.php">Inicio</a>
		<a href="sesion.php">Sesion</a>
		<a href="exit.php">Salir</a>
	</p>
</body>
</html>

Ahora editarenos los documentos individualmente, el primero “index.php” contendrá un script PHP con una estructura “if…else” con el que si se ha iniciado sesión mostrará el nombre del usuario mediante un “echo”, esto lo hacemos con la función “isset()”, esta función determinará si ha sido definida la sesión, en caso contrario el script devolverá FALSE y no se ejecutará, en el “else”, cerramos PHP sin cerrar la función e introducimos el formulario, a continuación, volvemos a abrir código PHP para cerrar la función PHP.

El formulario nos envia por POST al documento “sesion.php” y contiene una etiqueta input de tipo text en el que el ususario debe escribir el nombre, esta etiqueta contiene un atributo “required” que especifica que el campo de entrada debe ser completado antes de enviar el formulario (Este atributo es nuevo en HTML 5 y no es compatible con Safari, IE9 ni versiones anteriores) y una etiqueta input de tipo submit para enviar el formulario

<?php 
	if(isset($_SESSION ["nombre"])) {
		echo $_SESSION["nombre"];     
	}else{
?>
<form action="sesion.php" method="post">
		<input type="text" name="nombre" required>
		<input type="submit" value="Enviar">
</form>
<?php 
}
?>

Editamos el documento “sesion.php” con un script que en primera instancia va a comprobar mediante la función “isset()” si se ha recibido por POST la entrada del usuario y que el campo de entrada no está vacio, a continuación almacenamos en “$_SESSION [“nombre”]” el nombre que el usuario ha introducido en el formulario, si la función devuelve TRUE, se mostrará el nombre del usuario mediante un “echo”, en caso contrario debemos comprobar si se ha iniciado la sesión, de nuevo, mediante la función “isset()” comprobamos que “$_SESSION” contiene las variables disponibles para el inicio de sesión, si la función devuelve TRUE, mostraremos con un “echo” el nombre del usuario, si ninguna condición anterior devuelve TRUE, mostraremos un aviso para que el usuario verifique el estado de la sesión

<?php
	if (isset($_POST["nombre"]) && $_POST["nombre"] != " ") {
		$_SESSION ["nombre"] = $_POST["nombre"];
		echo $_POST["nombre"];
		}else{
			if(isset($_SESSION["nombre"])) {
				echo $_SESSION["nombre"];
			}else{
				echo '<p>'.'No has iniciado sesión'.'</p>';
			}
		}
?>

Por ultimo editamos el documento “salir.php”, este documento cerrará la sesión del usuario, para ello haremos uso de la función “session_destroy()”, esta función destruye toda la información asociada con la sesión actual.

<?php 
	session_start();
	session_destroy();
?>

E informamos al usuario del cierre de la sesión con un párrafo de texto.

<p>Has cerrado la sesión</p>

El código completo

index.php

<?php 
	session_start();
?>
<!DOCTYPE HTML>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Inicio</title>
</head>
<body>
	<p>
		<a href="index.php">Inicio</a>
		<a href="sesion.php">Sesion</a>
		<a href="exit.php">Salir</a>
	</p>
	<?php 
		if(isset($_SESSION ["nombre"])) {
			echo $_SESSION["nombre"];
		}else{
	?>
	<form action="sesion.php" method="post">
			<input type="text" name="nombre" autofocus required>
			<input type="submit" value="Enviar">
	</form>
	<?php 
	}
	?>
</body>
</html>

sesion.php

<?php 
	session_start();
?>
<!DOCTYPE HTML>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Formulario PHP</title>
</head>
<body>
	<p>
		<a href="index.php">Inicio</a>
		<a href="sesion.php">Sesion</a>
		<a href="exit.php">Salir</a>
	</p>
		<?php
			if (isset($_POST["nombre"]) && $_POST["nombre"] != " ") {
				$_SESSION ["nombre"] = $_POST["nombre"];
				echo $_POST["nombre"];
				}else{
					if(isset($_SESSION["nombre"])) {
						echo $_SESSION["nombre"];
					}else{
						echo '<p>'.'No has iniciado sesión'.'</p>';
					}
				}
		?>
</body>
</html>

exit.php

<?php 
	session_start();
	session_destroy();
?>
<!DOCTYPE HTML>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Cerrar sesión</title>
</head>
<body>
	<p>
		<a href="index.php">Inicio</a>
		<a href="sesion.php">Sesion</a>
		<a href="exit.php">Salir</a>
	</p>
	<p>Has cerrado la sesión</p>
</body>
</html>

El código del ejemplo muestra un control de sesión de usuarios completo y funcional, pero cabe destacar que este proceso debe de contrastarse contra una base de datos y comprobar ciertas reglas de seguridad antes de enviar el formulario.

Puedes ver y descargar el código de este archivo en mi cuenta de GitHub.

Valoraciones


Sé el primero en valorar

* Tu valoración puede tardar hasta 72 horas en publicarse.

He leido y acepto el Aviso legal y condiciones de uso

Utilizamos cookies propias y de terceros para personalizar el contenido y los anuncios, ofrecer funciones de medios sociales y analizar el tráfico. Además compartimos información sobre el uso que haces de nuestra web con nuestros partners de medios sociales, de publicidad y de análisis web. Si continúas navegando estás dando tu consentimiento para la aceptación de nuestra Política de cookies.

ACEPTAR
Aviso de cookies