⊗ppPmAuSs 415 of 447 menu

Autoryzacja przez sesję w PHP

Nasza autoryzacja powinna działać tak: użytkownik, który chce się zalogować na stronie, wchodzi na stronę login.php, wprowadza poprawne login i hasło i następnie porusza się po stronach strony już będąc zalogowanym.

Aby inne strony serwisu wiedziały o tym, że nasz użytkownik jest zalogowany, musimy przechowywać w sesji oznaczenie o tym.

Na razie nasza autoryzacja nie jest całkiem działająca, ponieważ sesji jeszcze nie podłączyliśmy i inne strony serwisu nie mogą zrozumieć, czy użytkownik jest zalogowany, czy nie.

Będziemy przechowywać oznaczenie o autoryzacji w zmiennej sesji $_SESSION['auth'] - jeśli jest tam zapisane true, to użytkownik jest zalogowany, a jeśli null - to nie zalogowany.

Wprowadźmy odpowiednią poprawkę do naszego kodu:

<?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 { // nieprawidłowo wprowadził login lub hasło } } ?>

Teraz na dowolnej stronie serwisu możemy sprawdzić, czy użytkownik jest zalogowany czy nie, w ten sposób:

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

Można zamknąć tekst jakiejś strony całkowicie dla niezalogowanego użytkownika:

<?php if (!empty($_SESSION['auth'])): ?> <!DOCTYPE html> <html> <head> </head> <body> <p>tekst tylko dla zalogowanego użytkownika</p> </body> </html> <?php else: ?> <p>proszę się zalogować</p> <?php endif; ?>

Można zamknąć tylko część strony:

<!DOCTYPE html> <html> <head> </head> <body> <p>tekst dla każdego użytkownika</p> <?php if (!empty($_SESSION['auth'])) { echo 'tekst tylko dla zalogowanego użytkownika'; } ?> <p>tekst dla każdego użytkownika</p> </body> </html>

Załóżmy, że na naszej stronie, oprócz strony login.php, są jeszcze strony 1.php, 2.php i 3.php. Zrób tak, aby do tych stron mógł uzyskać dostęp tylko zalogowany użytkownik.

Załóżmy, że na naszej stronie jest jeszcze strona index.php. Zrób tak, aby część tej strony była otwarta dla wszystkich użytkowników, a część - tylko dla zalogowanych.

Zmodyfikuj swój kod tak, aby przy udanej autoryzacji do sesji zapisywał się również login użytkownika.

Zrób tak, aby przy wejściu na dowolną stronę serwisu, zalogowany użytkownik widział swój login, a nie zalogowany - link na stronę autoryzacji.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć