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