ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 18.05.2024

Просмотров: 556

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

1. Історія php

2. Можливості php

3. Установка і настройка по

3.1. Установка Apache 1.3.29 під Windows xp

3.2. Установка php 4.3.4 під Windows

1. Основний синтаксис

1.1 Розділення інструкцій

1.2 Коментарі

2. Змінні, константи і оператори

2.3 Константи

2.4 Оператори

1. Основний синтаксис

1.1 Розділення інструкцій

1.2 Коментарі

2. Змінні, константи і оператори

2.3 Константи

2.4 Оператори

1.2 Оператор else

1.3 Оператор elseif

1.4 Оператор switch

2 Цикли

3 Оператори передачі управління

4 Оператори включення

4. Лекція

2 Типи серверів

3 Протокол http і способи передачі даних на сервер

4 Методи

5 Використання html-форм для передачі даних на сервер

5. Лекція:

1 Функції, створені користувачем

2 Аргументи функцій

3 Списки аргументів змінної довжини

4 Статичні змінні

5 Значення, що повертаються

6 Повернення посилання

7 Внутрішні (убудовані) функції

6. Лекція:

2 Ініціалізація змінних

4 Спадкування extends

5 Оператор ::

6 Оператор parent

7. Лекція:

1 Масиви

2 Операції з масивами

3 Функції обробки масивів

4 Сортування масивів

5 Виділення підмасива

8. Лекція:

2 Запис даних у файл

3 Читання даних з файлу

4 Перевірка існування файлу

5 Видалення файлу

6 Завантаження файлу на сервер

10. Лекція:

1 Бази даних: основні поняття

2 Ключі

3 Індексація

4 Субд MySql

5 Язик sql

6 Основні оператори язика sql

6.1 Оператор create table

6.2 Оператор drop table

6.3 Оператор alter table

7 Оператор select

8 Оператор insert

9 Оператор update

10 Оператор delete

11. Лекція:

1 Побудова інтерфейсу для додавання інформації

2 Запис даних в базу даних

3 Відображення даних, що зберігаються в MySql

1 Побудова інтерфейсу для додавання інформації

2 Запис даних в базу даних

3 Відображення даних, що зберігаються в MySql

12. Лекція:

2 Механізм сесій

3 Настройка сесій

4 Робота з сесіями

4.1 Створення сесії

4.2 Реєстрація змінних сесії

4.3 Видалення змінних сесії

5 Безпека

foreach ($names as $val) { // перебираємо всі імена полів

$value = mysql_result($q,$i,$val); // одержуємо

// значення поля

echo "<td><font size=2> $value</font></td>";

// виводимо значення поля

}

echo "</tr>";

}

echo "</table>";

Лістинг 11.1.1. Відображення даних з Artifacts у вигляді таблиці в браузере

Зробимо те ж саме за допомогою mysql_fetch_array():

<?

/* ... початок такий же, як і в попередньому прикладі */

// відображаємо значення полів

// набуваємо значення поля у вигляді асоціативного масиву

while($row = mysql_fetch_array($q, MYSQL_ASSOC)){

echo "<tr>";

foreach ($names as $val){

echo "<td><font size=2> $row[$val]</font></td>";

// виводимо значення поля

}

echo "</tr>";

}

echo "</table>";

?>

Лістинг 11.1.2. Відображення даних з Artifacts у вигляді таблиці в браузере. Варіант 2


12. Лекція:

Тема: Авторизація доступу за допомогою сесій

Мета: Лекція присвячена вивченню питань забезпечення безпеки в мережі і використанню для цих цілей механізму сесій. Розглядаються: ініціалізація сесій, передача ідентифікатора користувача, реєстрація змінних сесії, знищення сесії. Також розглядається настройка сесій у файлах php.ini, httpd.conf, .htaccess. На завершення наводиться приклад авторизації користувача за допомогою механізму сесій.

В цій лекції ми розберемо, що таке сесії і в чому їх специфіка в PHP, вирішимо одну з основних задач, що виникають при побудові більш-менш складних інформаційних систем (сайтів) - задачу авторизації доступу користувачів до ресурсів системи, а також обговоримо безпеку побудованого рішення.

ПЛАН

1 Авторизація доступу

2 Механізм сесій

3 Настройка сесій

4 Робота з сесіями

5 Безпека

1 Авторизація доступу

Що таке авторизація доступу? Спробуємо пояснити на прикладі із звичайного життя. Ви хочете узяти в бібліотеці книгу. Але ця послуга доступна тільки тим, у кого є читацький квиток. Можна сказати, що за допомогою цього квитка проводиться "авторизація доступу" до бібліотечних ресурсів. Бібліотекар після пред'явлення йому читацького квитка знає, хто бере книгу, і у разі потреби (наприклад, книгу довго не повертають) може вжити заходів (подзвонити боржнику додому). Бібліотекар має набагато більше прав, ніж звичайний відвідувач: він може давати або не давати книги певному відвідувачу, може виставляти напоказ новинки і прибирати в архів рідко читані книги і т.п.

В інформаційних технологіях все приблизно так само. В мережі існує величезна кількість ресурсів, тобто безліч "бібліотек". У кожної з них свій "бібліотекар", тобто людина або група людей, що відповідають за вміст ресурсу і надання користувачам інформації. Їх називають адміністраторами. Функції адміністратора, як правило, включають додавання нової інформації, видалення і редагування існуючої, настройка способів відображення інформації користувачу. А у функції користувача (простого відвідувача ресурсу) входить тільки пошук і проглядання інформації.

Як же відрізнити користувача від адміністратора? В реальній бібліотеці це якось очевидно, але якщо ролі бібліотекаря і відвідувача бібліотеки перенести у віртуальну реальність, то ця очевидність зникає. Бібліотекар, як і відвідувач, має доступ до бібліотечних ресурсів через Internet. А згідно протоколу HTTP всі клієнти абсолютно рівноправні. Як же зрозуміти, хто зайшов на сайт? Звичайний користувач (відвідувач) або адміністратор (бібліотекар)? Якщо це простий користувач, то як зберегти ці відомості, щоб не допустити відвідувача в закриті архіви сайту? Тобто виникає питання, як ідентифікувати клієнта, який послав запит, і зберігати відомості про нього, поки він знаходиться на сайті?


Найпростіший варіант, який приходить в голову, - це реєстрація людини в системі і видача йому аналога читацького квитка, а саме логіна і пароля для входу в адміністративну частину системи. Ця інформація зберігається на комп'ютері-сервері, і при вході в систему перевіряється відповідність введених користувачем логіна і пароля тим, що зберігаються в системі. Правда, тут в порівнянні з реальною бібліотекою ситуація змінюється: читацький квиток потрібен бібліотекарю для входу в закриту частину системи, а читач може заходити на сайт вільно. У принципі можна реєструвати і простих відвідувачів. Тоді всіх зареєстрованих користувачів потрібно розділити на групи: бібліотекарі (адміністратори) і читачі (прості користувачі), наділюючи їх відповідними правами. Ми не вдаватимемося в цю тонкість і скористаємося найпростішим варіантом, коли введення логіна і пароля потрібне для доступу до деяких сторінок сайту.

Приклад 12.1.

У нас є файл index.html - домашня сторіночка Васі Петрова

<html>

<head><title>My home page</title></head>

<body>

Привіт всім!

Мене звуть Вася Петров і це моя домашня сторіночка.

<а href="secret_info.html">Для Петі</a>

</body></html>

Лістинг 12.1. Домашня сторіночка Васі Петрова

і файл secret_info.html, який містить секретну інформацію, читати яку дозволено тільки Васиному другові Пєті.

<html>

<head><title>Secret info</title></head>

<body>

Тут я хочу ділитися секретами з другом Петєй.</p>

</body></html>

Лістинг 12.1a. secret_info.html

Якщо залишити обидва ці файлу як є, то будь-який відвідувач, кликнувши на посилання "Для Пєті", потрапить на секретну сторіночку. Щоб цього уникнути, потрібно додати проміжний скрипт, який перевірятиме, чи дійсно Петя хоче потрапити на секретну сторіночку. І зробити так, щоб головний файл посилався не відразу на secret_info.html, а спочатку на цей скрипт.

<html>

<head><title>My home page</title></head>

<body>

<p>Привет всім!

Мене звуть Вася Петров і це моя домашня сторіночка.

</p>

<а href="authorize.php">Для Петі</a>

</body>

</html>

Лістинг 12.1b. Index.html

Сам скрипт авторизації повинен надавати форму для введення логіна і пароля, перевіряти їх правильність і перенаправляти на секретну сторіночку, якщо перевірка пройшла успішно, і видавати повідомлення про помилку в іншому випадку.


<?

if (!isset($_GET['go'])){

// перевіряємо, чи відправлені дані формою

echo "<form>

// форма для авторизації (введення логіна і пароля)

Login: <input type=text name=login>

Password: <input type=password name=passwd>

<input type=submit name=go value=Go>

</form>";

}else {

// якщо форма заповнена, то порівнюємо логін і пароль з правильними логіном і паролем

if ($_GET['login']=="pit" && $_GET['passwd']=="123") {

Header("Location: secret_info.html");

//і перенаправляємо на секретну сторінку

}else echo "невірне введення спробуйте ще раз<br>";

}

?>

Лістинг 12.1c. authorize.php

Неначебто все досить просто. Але припустимо, у нас не одна секретна сторіночка, а декілька. Причому вони зв'язані між собою перехресними посиланнями. Тоді виникає необхідність постійно пам'ятати пароль і логін відвідувача сайту (якщо він такий має). Щоб розв'язати цю проблему, можна в кожну сторінку вбудувати скрипт, який передаватиме логін і пароль від сторінки до сторінки як приховані параметри форми. Але такий спосіб не зовсім безпечний: ці параметри можна перехопити і підробити. В PHP існує більш зручний і безпечний метод вирішення проблеми зберігання даних про відвідувача протягом сеансу його роботи з сайтом - це механізм сесій.


2 Механізм сесій

Сесії - це механізм, який дозволяє створювати і використовувати змінні, зберігаючі своє значення протягом всього часу роботи користувача з сайтом.

Ці змінні для кожного користувача мають різні значення і можуть використовуватися на будь-якій сторінці сайту до виходу користувача з системи. При цьому кожного разу, заходивши на сайт, користувач отримує нові значення змінних, що дозволяють ідентифікувати його протягом цього сеансу або сесії роботи з сайтом. Звідси і назва механізму - сесії.

Задача ідентифікації користувача розв'язується шляхом привласнення кожному користувачу унікального номера, так званого ідентифікатора сесії (SID, Session IDentifier). Він генерується PHP в той момент, коли користувач заходить на сайт, і знищується, коли користувач йде з сайту, і є рядком з 32 символів (наприклад, ac4f4a45bdc893434c95dcaffb1c1811). Цей ідентифікатор передається на сервер разом з кожним запитом клієнта і повертається назад разом з відповіддю серверу.

Існує декілька способів передачі ідентифікатора сесії:

За допомогою cookies.

Cookies були створені спеціально як метод однозначної ідентифікації клієнтів і є розширенням протоколу HTTP. В цьому випадку ідентифікатор сесії зберігається в тимчасовому файлі на комп'ютері клієнта, що послав запит. Метод, поза сумнівом, хороший, але багато користувачів відключають підтримку cookies на своєму комп'ютері через проблеми з безпекою.

За допомогою параметрів адресного рядка.

В цьому випадку ідентифікатор сесії автоматично вбудовується у всі запити (URL), передавані серверу, і зберігається на стороні серверу.

Наприклад: адреса http://green.nsu.ru/test.php перетворюється на адресу http://green.nsu.ru/test.php?PHPSESSID=ac4f4a45bdc893434c95dcaffb1c1811

Цей спосіб передачі ідентифікатора використовується автоматично, якщо у браузера, що відправив запит, вимкнені cookies. Він достатньо надійний - передавати параметри в адресному рядку можна завжди. З другого боку, ідентифікатор сесії можна підглянути, скористатися збереженим варіантом в рядку браузера або підроблювати. Хоча, звичайно, всі ці проблеми або надумані або їх можна вирішити. Наприклад, хто зможе запам'ятати рядок з 32 різних символів? А якщо правильно організувати роботу з сесіями (вчасно їх знищувати), то номер сесії, що навіть зберігся в браузері, нічого не дасть. До питань безпеки ми ще повернемося в кінці лекції.


Смотрите также файлы