Як зробити авторизацію.

Нерідко буває, що необхідно розділяти відвідувачів на бажаних і небажаних, і давати можливість бачити деякі сторінки сайту тільки тим, хто має логін і пароль. Як зробити це, наприклад, на серверному скриптовій мові PHP?
Інструкція
1
Давайте організуємо найпростіший спосіб захисту сторінок від неавторизованих відвідувачів. Носієм інформації про те авторизован Чи відвідувач будуть сесії. Сесія - це аналог кук в браузері, з тією тільки різницею, що створюються вони не у нас в комп'ютері, а на сервері. І використовуються вони для того ж, для чого і куки - для зберігання різної інформації про нас поки ми ходимо від сторінки до сторінки одного сайту. Коли ми закриваємо браузер, то сервер знищує цю сесію, а при наступному нашому заході створює нову. Цей серверний механізм ми і використовуємо для того щоб записувати в сесію авторизувався Чи вже користувач чи ні. Читаючи цю інформацію, коли відвідувач запитує сторінку, php-скрипт буде або відкривати доступ до запаролений сторінкам, або пропонувати ввести логін і пароль.Шаг 1: Створюємо сторінку для введення логіна і пароля. HTML-код форми авторизації в найпростішому варіанті може виглядати так:
Логін: Пароль:
Сюди ж (у самий початок файлу) додамо php-код, який буде перевіряти правильність введеного відвідувачем логіна і пароля. На його початку напишемо: session_start (); Ця команда стартує нову сесію, якщо її ще не створено для цього посетітеля.Затем перевіримо, чи є в сесії змінна з ім'ям 'userName' - в ній буде зберігатися ім'я, якщо відвідувач вже був авторизований. Якщо така змінна є - переспрямуємо відвідувача на головну сторінку (index.php) і закінчимо виконання цього php-скрипта: if ($ _ SESSION ['userName']) {header ("Location: index.php"); exit;} Весь інший код виконуватиметься тільки якщо користувач ще не ввів правильного логіна і пароля. Вкажемо які логін і пароль треба вважати правильними: $ validName = 'Я свій!'; $ ValidPass = 'секретний пароль'; Потім перевіримо - чи відповідають відправлені з форми значення правильним. Оскільки у формі ми вказали метод передачі даних POST, то і читати їх треба з суперглобального змінної $ _POST: if ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {$ _SESSION ['userName'] = $ validName; header ("Location: index.php"); exit;} Тут код у фігурних дужках {} виконуватиметься при правильних значеннях логіна і пароля. У рядку $ _SESSION ['userName'] = $ validName; ма записуємо в сесію змінну з ім'ям 'userName' містить логін тепер вже авторизованого користувача. Це і буде мітка про те, що доступ йому відкритий всюди доти, поки дійсна його поточна сессія.А на випадок якщо в форму введені неправильні дані додамо відповідне повідомлення: else echo "Логін або пароль невірні!"; Весь код, який треба зберегти файл з ім'ям login.php виглядатиме так:
Логін: Пароль:
2
Крок 2: Створюємо блок авторизації - окремий файл, який буде підключатися до кожної сторінки, яка потребує захисту паролем. Цей файл буде містити тільки php-код, тому розширення в нього буде "php", а ім'я йому дамо по традиції для таких файлів - "auth", тобто "auth.php". І тут теж відразу після відкриваючого тега
3
Крок 3: після того, як збережемо ці файли на сервері, залишиться в усі php-сторінки, які потрібно захистити від неавторизованих користувачів підключити блок авторизації. Тобто в самий початок кожного php-файлу треба буде вставити цей код: А щоб змінити пароль доступу потрібно буде в файлі login.php змінити значення цих змінних: $ validName = 'Я свій ! '; $ validPass =' секретний пароль '; $ validName - логін, $ validPass - пароль.
Зверніть увагу
Зрозуміло, це дуже спрощений варіант авторизації, який можна використовувати як захист від небажаних відвідувачів, але не від зломщиків. Більш просунута система авторизації вимагає більш поглиблених знань в області інтернет-програмування.
Більшість сайтів в інтернеті надають публічний доступ до міститься на них інформації. Загальнодоступні сторінки сайтів може переглянути будь-який бажаючий. Однак до деяких розділів сайтів необхідно надавати обмежений доступ. Наприклад, до сторінок панелі адміністрування. Більшість CMS загального призначення, движків форумів та блогів, мають вбудовані засоби авторизації та розмежування доступу. Але якщо ваш ресурс досить простий і не управляється потужної CMS, а обмежувати доступ треба, то доведеться подумати над тим, як зробити авторизацію на сайті. На щастя, для цього є прості засоби.
Вам знадобиться
  • Сайт, функціонуючий під управлінням сервера apache. Доступ до сайту по ssh. Доступ до сайту по ftp. Конфігурація сервера, роздільна користувача файли .htaccess.
Інструкція
1
Підключіться до сервера по ssh. Якщо у вас встановлений консольний клієнт, наберіть в консолі команду "ssh <ім'я користувача> @ <адрес_сервера>", де <ім'я користувача> - ім'я вашого профілю на сервері, а <адрес_сервера> - символічне ім'я, або IP-адресу сервера. Команда може виглядати так: "ssh vic@receptoman.ru". Після запиту введіть пароль від свого облікового запису. Під windows можна скористатися альтернативними програмами-клієнтами. Одна з таких програм - putty.
2
Перейдіть в кореневий каталог сайту на сервері. Це каталог, не доступний з web. Як правило, в ньому знаходиться підкаталог public_html, в яке поміщено вміст сайту, доступне для перегляду через інтернет. Використовуйте команду cd. Якщо ви не пам'ятаєте повний шлях до папки, використовуйте команду ls для отримання вмісту поточного каталогу і здійснюйте поетапні переходи.
3
Створіть файл паролів в поточному каталозі. Виконайте команду виду "htpasswd -c <имя_файла_паролейимя_пользователя>". Тут <імя_файла_паролей> - коректне ім'я файлу, в який будуть поміщені дані для авторизації, а <ім'я користувача> - один з ідентифікаторів користувачів, які матимуть доступ до розділу сайту. Команда може виглядати так: "htpasswd -c .pwd User1". Після введення команди буде запитаний пароль для користувача з введеним іменем. Після введення пароля буде запитано його підтвердження.
4
Перевірте наявність файлу паролів. Виконайте команду "ls --all". В відображення списку вмісту поточного каталогу повинне бути присутнім ім'я файлу паролів.
5
Додайте ще користувачів, яким буде дозволено доступ. Виконуйте команду виду "htpasswd <имя_файла_паролейимя_пользователя>". Значення параметра <імя_файла_паролей> має бути таке ж, як при створенні файлу паролів. Наприклад, додати в файл з ім'ям .pwd дані для користувача user2, можна командою "htpasswd .pwd user2". Паролі та підтвердження паролів будуть запитані в інтерактивному режимі.
6
Відключитеся від сервера. Введіть команду exit і натисніть Enter.
7
Змініть файл .htaccess. Підключіться до сервера за допомогою програми FTP-клієнта. Зайдіть в каталог, відповідний розділу сайту, для якого необхідна авторизація. Якщо там є файл з ім'ям .htaccess, завантажте його на свій комп'ютер. Якщо такого файлу немає, створіть його на своєму комп'ютері. Додайте в початок файлу .htaccess наступні рядки: AuthType BasicAuthName "вітання" AuthUserFile "путь_к_файлу_с_паролямі" Require valid-userВместо слова "вітання" введіть будь-яку фразу. Вона буде відображатися в діалозі запиту даних користувача в браузері. Замість значення "путь_к_файлу_с_паролямі" введіть повний шлях до файлу з даними для авторизації на сервері. Цей шлях, наприклад, може бути таким: "/home/www/vic/domains/receptoman.ru/.pwd". Збережіть файл .htaccess. Завантажте його на сервер.
8
Перевірте роботу системи авторизації. Зайдіть в розділ сайту, для якого був модифікований файл .htaccess. Якщо все працює коректно, браузер відобразить діалог із запитами даних для авторизації.
Зверніть увагу
Обов'язково переконайтеся, що каталог, в якому знаходиться файл паролів, не доступний через web. В іншому випадку зловмисник зможе заволодіти цим файлом. Паролі в файлі зашифровані. Але, маючи імена користувачів і хеши паролів, набагато простіше підібрати дані для авторизації.
Корисна порада
В адміністративній панелі хостингу може матися функція для швидшого Паролювання директорій. Внаслідок застосування сили також буде створений файл паролів і модифікований файл .htaccess.