Често се случва, че е необходимо посетителите да се разделят на желани и нежелани и да се даде възможност да се видят някои страници на сайта само на тези, които имат потребителско име и парола. Как да направя това, например, в сървърния скриптов език PHP?
Инструкции
Етап 1
Нека организираме най-лесния начин за защита на вашите страници от неоторизирани посетители. Носителят на информация за това дали посетителят е упълномощен ще бъде сесията. Сесията е аналог на бисквитките в браузър, с единствената разлика, че те се създават не на нашия компютър, а на сървъра. И те се използват за същата цел като бисквитките - за съхраняване на различна информация за нас, докато преминаваме от страница на страница на един сайт. Когато затворим браузъра, сървърът унищожава тази сесия и следващия път, когато влезем, създава нова. Използваме този сървърен механизъм, за да запишем дали потребителят вече е влязъл в сесията или не. Четейки тази информация, когато посетител поиска страница, php-скриптът ще отвори достъп до защитени с парола страници или ще предложи да въведе потребителско име и парола.
Стъпка 1: Създайте страница за въвеждане на потребителско име и парола. HTML кодът на формуляра за оторизация в най-простия му вид може да изглежда така:
Влизам:
Парола:
Тук (в самото начало на файла) ще добавим php-код, който ще провери верността на потребителското име и паролата, въведени от посетителя. В началото ще напишем:
session_start ();
Тази команда стартира нова сесия, ако вече не е създадена за този посетител.
Тогава нека проверим дали сесията има променлива с име 'userName' - тя ще съхрани името, ако посетителят вече е влязъл в системата. Ако има такава променлива, пренасочете посетителя към главната страница (index.php) и завършете изпълнението на този php скрипт:
if ($ _ SESSION ['userName']) {
заглавка ("Местоположение: index.php");
изход;
}
Останалата част от кода ще бъде изпълнена само ако потребителят все още не е въвел правилното потребителско име и парола. Нека посочим кой вход и парола трябва да се считат за правилни:
$ validName = 'Моя съм!';
$ validPass = 'секретна парола';
След това проверяваме дали стойностите, подадени от формуляра, съвпадат с правилните. Тъй като във формуляра сме посочили метода за прехвърляне на данни POST, те трябва да се четат от суперглобалната променлива $ _POST:
ако ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
заглавка ("Местоположение: index.php");
изход;
}
Тук кодът в фигурни скоби {} ще бъде изпълнен с правилните стойности на потребителското име и паролата. На реда $ _SESSION ['userName'] = $ validName; ma, ние записваме в сесията променлива с име 'userName', съдържаща данните за вход на сега оторизирания потребител. Това ще бъде знакът, че достъпът му е отворен навсякъде, докато текущата му сесия е валидна.
И в случай, че във формуляра се въведат неверни данни, добавете съответното съобщение:
иначе ехо"
Входът или паролата са неправилни!
;
Целият код, който трябва да бъде записан във файл с име login.php, ще изглежда така:
<? php
session_start ();
if ($ _ SESSION ['userName']) {
заглавка ("Местоположение: index.php");
изход;
}
$ validName = 'Моя съм!';
$ validPass = 'секретна парола';
ако ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
заглавка ("Местоположение: index.php");
изход;
}
иначе ехо"
Входът или паролата са неправилни!
;
?>
Влизам:
Парола:
Стъпка 2
Стъпка 2: Създайте блок за оторизация - отделен файл, който ще бъде свързан към всяка страница, която се нуждае от защита с парола. Този файл ще съдържа само php-код, така че разширението му ще бъде "php" и ние ще му дадем име според традицията за такива файлове - "auth", тоест "auth.php". И тук също веднага след отварящия <? Php таг трябва да има инструкция за започване на сесия:
session_start ();
Можем да прочетем всички променливи, които се съхраняват в сесията от суперглобалния масив $ _SESSION. Трябва да проверим стойността на променливата "userName" - ако посетителят все още не е влязъл в системата, тогава тя няма да е в масива и ние ще го пренасочим към страницата за въвеждане на неговото потребителско име и парола:
ако (! $ _ SESSION ['оторизиран']) {
заглавка ("Местоположение: login.php");
изход;
}
Целият код, който трябва да бъде записан във файла auth.php, ще изглежда така:
<? php
session_start ();
if (! $ _ SESSION ['admin']) {
заглавка ("Местоположение: enter.php");
изход;
}
?>
Стъпка 3
Стъпка 3: след като запазим тези файлове на сървъра, те ще останат във всички php-страници, които трябва да бъдат защитени от неоторизирани потребители, за да свържат блока за оторизация. Тоест в самото начало на всеки php файл ще трябва да вмъкнете този код:
<? php
изискват "auth.php";
?>
И за да промените паролата за достъп, ще трябва да промените стойностите на тези променливи във файла login.php:
$ validName = 'Моя съм!';
$ validPass = 'секретна парола';
$ validName - вход, $ validPass - парола.