|
PHP: СИСТЕМА ОЦІНКИ МАТЕРІАЛІВ
У цій главі буде розібраний сценарій, що дозволяє відвідувачам виставляти оцінки розміщеним на сайті матеріалам. Раніше не використаних команд в нім майже немає, так що просто стежите за логікою програми.
Спочатку подумаємо. Що повинен робити код виставляння оцінки? Ну спочатку, напевно, набувати від відвідувача значення оцінки (скажімо, з форми з елементами <select. . .>. . .<option>. . ..). Проте, якщо ця оцінка є першої за всю історію існування статті, то необхідно записати її у файл. Якщо ж раніше стаття вже була оцінена, то слід рахувати наявне значення з файлу і обчислити середнє арифметичне всіх оцінок, включаючи тільки що додану. Насправді, адже нам потрібна саме середня оцінка, чи не так? А потім це нове значення середньої оцінки необхідне в той же файл і записати.
Середню оцінку можна порахувати по очевидній формулі
(середній балл*колічество оцінок)+новодобавленная оцінка /
кількість оцінок + 1
Крім того, середню оцінку бажано показати і відвідувачеві. Проста вставка файлу з оцінкою в сторінку із статтею за допомогою команди include не є витонченим рішенням, оскільки значення середньої оцінки може бути виражене і досить довгим десятковим дробом. Отже, оцінку бажано округлити хоч би до сотих, а краще - до десятих.
Далі. Що повинне статися, коли відвідувач виставить статті оцінку? Перше, що приходить в голову - це відправити його назад на статтю, яку він оцінював. Адже направляли ж ми в сценарії в минулій главі відвідувача назад в гостьову книгу після відправки ним в.нєє повідомлення? Проте відвідувач адже вже прочитав статтю, - навіщо йому її виводити знову, витрачаючи його час в Мережі, а, означає, і гроші. Куди як краще після виставляння оцінки відправляти відвідувача на спеціальну сторінку з вдячністю про виконану їм дію і каталогом статей або розділів сайту.
Бажана також і реалізація "захисту від накруток", тобто не можна давати одному і тому ж відвідувачеві можливість голосувати кілька разів. Для цього можна використовувати cookie, тобто позначати
за допомогою cookie браузер відвідувача при виставлянні ним оцінки і згодом дозволяти виставляти оцінку лише за відсутності такого cookie.
Коментар:
Cookie
- це файл в спеціальному форматі, який присилається сервером браузеру відвідувача сайту, розташованому на цьому сервері. Браузер, якщо він підтримує cookie (і ця підтримка в нім не відключена), поміщає його в особливе місце і згодом відправляє назад на сервер під час вступу від нього запиту. Іншими словами, cookie дозволяє серверу зберігати свою інформацію на комп'ютерах відвідувачів і прочитувати її звідти при необхідності. Детальніше про cookie читайте в гл. 8.
Безперечно, використання cookie - не дуже надійний подібний захист. Нічого не заважає відвідувачеві видаляти cookie перед кожною новою спробою виставляння оцінки або використовувати різні браузери, та і на загальнодоступних комп'ютерах проголосувати можна буде лише одного разу незалежно від числа їх користувачів до тих пір, поки cookie не буде видалений. Але хоч щось...
Напевно на сайті знаходитиметься немало статей, до яких варто додати форму виставляння оцінок. Для того, щоб не вставляти в кожен файл безліч рядків однакової коди, варто виконати весь код виставляння оцінки в окремому модулі і включати його за допомогою команди include в статті, оцінка яких відвідувачами необхідна.
Отже, код виставляння оцінок розміститься в двох файлах, один з яких призначений для вставки в сторінки із статтями, а другою містить в собі текст вдячності відвідувачеві за оцінку. Допустимо, перший файл називатиметься niz.php, а другий - otziv.php. Що ж, приступимо до самого тексту коди.
У кожен файл із статтею, в те місце, де повинна розташовуватися форма для вибору оцінки, слід вставити одну строчку коди:
<?php include ("niz.php"); ?> |