⊗ppPmAuSs 415 of 447 menu

Autenticazione tramite sessione in PHP

La nostra autenticazione dovrebbe funzionare così: l'utente, che desidera autenticarsi sul sito, accede alla pagina login.php, inserisce le credenziali corrette (login e password) e successivamente naviga nelle pagine del sito già autenticato.

Affinché le altre pagine del sito sappiano che il nostro utente è autenticato, dobbiamo memorizzare nella sessione un segno di questo.

Per ora la nostra autenticazione non è del tutto funzionante, poiché non abbiamo ancora collegato la sessione e le altre pagine del sito non possono capire se l'utente è autenticato o meno.

Memorizzeremo il segno di autenticazione nella variabile di sessione $_SESSION['auth'] - se lì è scritto true, allora l'utente è autenticato, mentre se è null - non è autenticato.

Apportiamo la modifica corrispondente al nostro codice:

<?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 { // login o password errati } } ?>

Ora su qualsiasi pagina del sito possiamo verificare se l'utente è autenticato o meno, in questo modo:

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

Si può chiudere il testo di una pagina qualsiasi completamente per l'utente non autenticato:

<?php if (!empty($_SESSION['auth'])): ?> <!DOCTYPE html> <html> <head> </head> <body> <p>testo solo per l'utente autenticato</p> </body> </html> <?php else: ?> <p>per favore, autenticati</p> <?php endif; ?>

Si può chiudere solo una parte della pagina:

<!DOCTYPE html> <html> <head> </head> <body> <p>testo per qualsiasi utente</p> <?php if (!empty($_SESSION['auth'])) { echo 'testo solo per l'utente autenticato'; } ?> <p>testo per qualsiasi utente</p> </body> </html>

Supponiamo che sul nostro sito, oltre alla pagina login.php, ci siano anche le pagine 1.php, 2.php e 3.php. Fate in modo che a queste pagine possa accedere solo l'utente autenticato.

Supponiamo che sul nostro sito ci sia anche la pagina index.php. Fate in modo che una parte di questa pagina sia aperta a tutti gli utenti, e una parte - solo per quelli autenticati.

Modificate il vostro codice in modo che dopo un'autenticazione riuscita nella sessione venga memorizzato anche il login dell'utente.

Fate in modo che accedendo a qualsiasi pagina del sito, l'utente autenticato veda il proprio login, mentre quello non autenticato - un link alla pagina di autenticazione.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta