- Валідація, тобто перевірка відповідності введених користувачем даних вашої бізнес-логіки.
- Фільтрація, тобто перетворення вхідних даних певним чином. Наприклад, ви можете обрізати початкові прогалини в рядку або вирізати з неї html-теги.
- Форматування даних для коректної вставки в БД, виведення в HTML і т.д.
Для виконання перших двох пунктів в php є розширення Filter. яке займається перевіркою і очищенням вхідних даних.
Третій пункт говорить, що якщо дані, отримані від користувача, куди-небудь підставляються, то вони повинні бути коректно відформатовані. Причому робити це потрібно безпосередньо в момент підстановки (записи в БД або виведення в html).
При виведенні даних в html (якщо ви явно не допускаєте висновок html-тегів) все спеціальні символи (лапки, знаки більше і менше, амперсанд) повинні бути перетворені в HTML-суті. Цим якраз і займається функція htmlspecialchars. Htmlentities перетворює не тільки ці символи, а й багато інших (точний список можна отримати функцією get_html_translation_table). Якщо ви використовуєте на сайті utf-8, то вона вам взагалі не потрібна.
Тепер про те, на що варто звернути увагу при використанні htmlspecialchars:- У третьому параметрі потрібно вказати кодування, яку ви використовуєте на сайті.
- У другому параметрі варто вказати прапор ENT_QUOTES. щоб перетворювалися як подвійні, так і одинарні лапки. Тому як атрибути можуть бути записані з використанням обох (href = "" і href = ''). В html завжди варто використовувати лапки під час запису атрибутів (не пишіть src = image1.jpg).
- У другому параметрі ви також можете вказати прапор ENT_SUBSTITUTE (для php> = 5.4). У разі, якщо ваша рядок буде містити некоректно закодовані символи, вони будуть замінені на символ Unicode. Без зазначеного прапора ви отримаєте порожній рядок (подробиці).
Підсумковий варіант використання htmlspecialchars:
Раджу також подивитися документацію до бібліотеки Zend \ Escaper. яка містить приклади коректного і некоректного форматування даних при виведенні в різні частини html-документа.
Ваш відповідь на питання
Увійдіть, щоб написати відповідь
- Москва
- Повний робочий день
- від 40 000 руб.
- Москва
- Повний робочий день
- від 150 000 до 180 000 руб.
- Москва
- Повний робочий день
- від 150 000 до 180 000 руб.
100000 руб. / За проект
30000 руб. / За проект
30000 руб. / За проект
Увійдіть на сайт
Щоб задати питання та отримати на нього кваліфіковану відповідь.