Page 149 - 4636
P. 149
2. Встановити з'єднання з необхідною базою даних.
3. Виконати запит до бази даних.
4. Отримати результати.
5. Представити результати користувачу.
1 Перевірка і фільтрація вхідних даних.
Насамперед, необхідно видалити всі зайві пробільні символи, які користувач міг випадково
ввести до або після критерію пошуку. Це робиться з допомогою функція trim (), яка
застосовується до значення $searchterm під час створення коротких імен:
$searchterm - trim($_POST[ 'searchterm' ]) ;
Наступний етап - перевірка того, що користувач вказав критерій пошуку і вибрав тип пошуку.
Зверніть увагу, що вона виконується лише після видалення зайвих пробілів по краях критерію пошуку.
Якщо поміняти ці дії місцями, може виникнути ситуація, коли критерій не був порожнім і тому не
вивів повідомлення про помилку, але при цьому містить лише пропуски, які повністю видаляються
функцією trim() :
if (!$searchtype II !$searchterm) {echo “ Ви не ввели параметри
пошуку. Поверніться” .' на попередню сторінку та повторіть введення.’;
exit;}
Тут же була виконана перевірка змінної $searchtype, незважаючи на те, що в даному випадку
вона надходить з HTML-дескриптора SELECT. Може виникнути питання, навіщо треба перевіряти
вхідні дані, які не можуть бути порожніми. Не забувайте, що з базою даних може бути пов'язаний
далеко не один інтерфейс. Наприклад, компанія Amazon керує великою кількістю філій, які
використовують свої пошукові інтерфейси. Крім того, важливо захистити дані на випадок виникнення
будь-яких проблем безпеки, пов'язаних з тим, що користувачі можуть заходити з різних робочих
станцій. Якщо передбачається введення користувачем даних, важливо виключити з них будь-які
керуючі символи. Як ви, напевно, пам'ятаєте, раніше говорилосяпро функції addslashes(),
stripslashes() і get_magic_quotes_gpc(). Необхідно літерилізувати керуючі символи в
даних, введених користувачем, перед зберіганням їх в базі. У нашому випадку здійснюється перевірка
значення, що повертається функцією get_magic_quotes_gpc(). Це значення виконує
автоматичне взяття в лапки. Якщо це не так, то керуючі символи литерализуются за допомогою
функції
addslashes ():if (!get_magic_quotes_gpc()) {$searchtype =
addslashes($searchtype);$searchterm = addslashes ($searchterm) ;}
А при вибірці даних з бази знадобиться функція stripslashes().Якщо лапки включені, то
після вибірки з бази даних можуть містити зайві слеші, і їх необхідно прибрати.Функція
htmlspecialchars() використовується для кодування символів, які мають спеціальне значення в
HTML. Наші тестові дані не містять символу амперсанда (&), знаків “менше” (<), “більше” (>) або
подвійних лапок ("), однак амперсанд може бути в назвах багатьох книг. Використання цієї функції
допоможе уникнути помилок у майбутньому.
Встановлення з'єднання
У РНР є бібліотека для підключення до MySQL, яка називається mysqli (i означає “improved”-
“поліпшена”). При її використанні в РНР можна задіяти або об'єктно-орієнтований, або процедурний
синтаксис.Для з'єднання з сервером MySQL служить наступний рядок сценарію:
@ $db = newmysqli('localhost', 'bookorama', 'bookoramal23','books');
У цьому рядку створюється екземпляр класу mysqli і робиться спроба з'єднання з
хостом'localhost'від імені користувача bookorama і паролем bookoramal23. З'єднання буде
використовувати базу даних books.Згідно з об'єктно-орієнтованим підходом тепер можна викликати
методи отриманого об'єкта для доступу до бази даних. Якщо ви віддаєте перевагу процедурному
підходу, mysqli допускає і його. У цьому випадку підключення буде виглядати таким чином:
146