⊗ppPmAuSs 415 of 447 menu

Авторизация чрез сесия на PHP

Нашата авторизация трябва да работи по следния начин: потребител, който иска да се авторизира на сайта, отива на страницата login.php, въвежда правилните потребителско име и парола и след това преминава през страниците на сайта вече като авторизиран.

За да могат другите страници на сайта да знаят, че нашият потребител е авторизиран, ние трябва да съхраняваме в сесията бележка за това.

Засега нашата авторизация не е напълно работеща, тъй като все още не сме включили сесията и другите страници на сайта не могат да разберат дали потребителят е авторизиран или не.

Ще съхраняваме бележка за авторизацията в сесийната променлива $_SESSION['auth'] - ако там е записано true, тогава потребителят е авторизиран, а ако е null - тогава не е авторизиран.

Нека внесем съответната корекция в нашия код:

<?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 { // грешно въведено потребителско име или парола } } ?>

Сега на всяка страница на сайта можем да проверим дали потребителят е авторизиран или не, по следния начин:

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

Може да се забрани достъпът до текста на дадена страница изцяло за неавторизиран потребител:

<?php if (!empty($_SESSION['auth'])): ?> <!DOCTYPE html> <html> <head> </head> <body> <p>текст само за авторизиран потребител</p> </body> </html> <?php else: ?> <p>моля, авторизирайте се</p> <?php endif; ?>

Може да се забрани само част от страницата:

<!DOCTYPE html> <html> <head> </head> <body> <p>текст за всеки потребител</p> <?php if (!empty($_SESSION['auth'])) { echo 'текст само за авторизиран потребител'; } ?> <p>текст за всеки потребител</p> </body> </html>

Да приемем, че на нашия сайт, освен страницата login.php, има и страници 1.php, 2.php и 3.php. Направете така, че до тези страници да може да получи достъп само авторизиран потребител.

Да приемем, че на нашия сайт има и страница index.php. Направете така, че част от тази страница да е отворена за всички потребители, а част - само за авторизирани.

Модифицирайте вашия код така, че при успешна авторизация в сесията да се записва и потребителското име на потребителя.

Направете така, че при посещение на която и да е страница на сайта, авторизираният потребител да вижда своето потребителско име, а неавторизираният - връзка към страницата за авторизация.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне