о запобігає виділення зайвої пам'яті. РНР надає в розпорядження розробників і адміністраторів гнучкі та ефективні засоби безпеки, які умовно діляться на дві категорії: засоби системного рівня і засоби рівня програми.
У РНР реалізовані механізми безпеки, що знаходяться під управлінням адміністраторів; при правильному налаштуванні РНР це забезпечує максимальну свободу дій і безпеку. РНР може працювати в так званому безпечному режимі (safe mode), який обмежує можливості застосування РНР користувачами по ряду важливих показників. Наприклад, можна обмежити максимальний час виконання і використання пам'яті (неконтрольований витрата пам'яті негативно впливає на швидкодію сервера). За аналогією з cgi-bin адміністратор також може встановлювати обмеження на каталоги, в яких користувач може переглядати і виконувати сценарії РНР, а також використовувати сценарії РНР для перегляду конфіденційної інформації на сервері (наприклад, файлу passwd).
У стандартний набір функцій РНР входить ряд надійних механізмів шифрування. РНР також сумісний з багатьма додатками незалежних фірм, що дозволяє легко інтегрувати його із захищеними технологіями електронної комерції (e-commerce). Інша перевага полягає в тому, що вихідний текст сценаріїв РНР можна переглянути в браузері, оскільки сценарій компілюється до його відправлення за запитом користувача. Реалізація РНР на стороні сервера запобігає викрадення нетривіальних сценаріїв користувачами, знань яких вистачає хоча б для виконання команди View Source.
Оскільки РНР є вбудовуваним (embedded) мовою, він відрізняється винятковою гнучкістю по відношенню до потреб розробника. Хоча РНР зазвичай рекомендується використовувати в поєднанні з HTML, він з таким же успіхом інтегрується і в JavaScript, WML, XML та інші мови. Крім того, добре структуровані додатки РНР легко розширюються в міру необхідності (втім, це відноситься до всіх основних мов програмування). Немає проблем і з залежністю від браузерів, оскільки перед відправкою клієнту сценарії РНР повністю компілюються на стороні сервера. По суті, сценарії РНР можуть передаватися будь-яких пристроїв з браузерами, включаючи стільникові телефони, електронні записники, пейджери і портативні комп'ютери, не кажучи вже про традиційні PC. Програмісти, що займаються допоміжними утилітами, можуть запускати РНР в режимі командного рядка. Оскільки РНР не містить коду, орієнтованого на конкретний web-сервер, користувачі не обмежуються певними серверами (можливо, незнайомими для них). Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold і Zeus - РНР працює на всіх перерахованих серверах. Оскільки ці сервери працюють на різних платформах, РНР в цілому є переносних незалежним мовою й існує на таких платформах, як UNIX, Solaris, FreeBSD і Windows 95/98/NT/Me/2000/XP. Нарешті, засоби РНР дозволяють програмісту працювати із зовнішніми компонентами, такими як Enterprise Java Beans або СОМ-об'єкти Win32. Завдяки цим новим можливостям РНР займає гідне місце серед сучасних технологій і забезпечує масштабування проектів до необхідних меж.
2. Практична частина
. 1 Створення інтерактивного Web-додатки з використанням мови програмування JavaScript на прикладі тесту по темі «Програмування»
Наведемо приклад інтерактивного Web-додатки, яке створене з використанням мови програмування JavaScript. Дане Web-додаток є тестом за темою «Програмування на мові Delphi». Тест містить 5 питань. Після запуску Web-додатки у вікні браузера відображається заголовок, питання тесту і варіанти відповідей. Тип питань у тесті відноситься до одиночного вибору. Після вибору правильних варіантів відповідей, потрібно клацнути на кнопку «Відповісти» і буде виведений результат тестування. Тестування можна повторити, клацнувши на кнопку «Очистити», обнуливши перемикачі Кількість питань можна додати до 10 і більше.
lt; title gt; тест lt;/title gt;
lt; script type= text/javascript gt; (id, visible)
{. getElementById (id) .style.display =? block raquo ;: none
} (f)
{, s= raquo ;, el=newObject ()=newObject () (i=0; i lt; f.length; i ++)
{= f.elements [i] (el.type == radio amp; amp; el.name.indexOf ( question ) == 0)
{[el.name]=0 (elecked) [el.name]=parseInt (el.value)
}
}=0, answered=0, score=0 (i inquestions) asked ++ (i inanswers)
{+++=answers [i]
}
if (answered lt; asked)
{( Ви відповіли на + answered + запитань із + asked + '.
Для отримання достовірного результату потрібно відповісти на всі вороса ')
...