⊗ppPmAuSs 415 of 447 menu

Autorización mediante sesión en PHP

Nuestra autorización debería funcionar así: el usuario, que quiere iniciar sesión en el sitio web, va a la página login.php, ingresa las credenciales correctas de usuario y contraseña y luego navega por las páginas del sitio web ya habiendo iniciado sesión.

Para que otras páginas del sitio web sepan que nuestro usuario ha iniciado sesión, debemos almacenar una marca de esto en la sesión.

Por ahora nuestra autorización no es completamente funcional, ya que aún no hemos incorporado la sesión y otras páginas del sitio web no pueden determinar si el usuario ha iniciado sesión o no.

Almacenaremos la marca de autorización en la variable de sesión $_SESSION['auth'] - si allí está escrito true, entonces el usuario ha iniciado sesión, y si es null - entonces no ha iniciado sesión.

Vamos a introducir el cambio correspondiente en nuestro código:

<?php session_start(); if (!empty($_POST['password']) and !empty($_POST['login'])) { $login = $_POST['login']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE login='$login' AND password='$password'"; $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $_SESSION['auth'] = true; } else { // introdujo incorrectamente el usuario o la contraseña } } ?>

Ahora en cualquier página del sitio web podemos verificar si el usuario ha iniciado sesión o no, de esta manera:

<?php if (!empty($_SESSION['auth'])) { } ?>

Se puede ocultar el texto de alguna página completamente para el usuario no autenticado:

<?php if (!empty($_SESSION['auth'])): ?> <!DOCTYPE html> <html> <head> </head> <body> <p>texto solo para usuarios autenticados</p> </body> </html> <?php else: ?> <p>por favor, inicie sesión</p> <?php endif; ?>

Se puede ocultar solo una parte de la página:

<!DOCTYPE html> <html> <head> </head> <body> <p>texto para cualquier usuario</p> <?php if (!empty($_SESSION['auth'])) { echo 'texto solo para usuarios autenticados'; } ?> <p>texto para cualquier usuario</p> </body> </html>

Supongamos que en nuestro sitio, además de la página login.php, también existen las páginas 1.php, 2.php y 3.php. Configure para que a estas páginas solo pueda acceder un usuario autenticado.

Supongamos que en nuestro sitio también hay una página index.php. Configure para que una parte de esta página esté abierta para todos los usuarios, y otra parte - solo para usuarios autenticados.

Modifique su código para que upon exitoso inicio de sesión, también se guarde en la sesión el nombre de usuario del usuario.

Configure para que al acceder a cualquier página del sitio, el usuario autenticado vea su nombre de usuario, y el no autenticado - un enlace a la página de inicio de sesión.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar