Форум ›PHP

Застосування до калорій

професор сказав мені, що моя робота погана, тому що є ін'єкція SQL,

Застосування калорій

але у мене є дані, оброблені у кожній функції за допомогою htmlspecialchar, але він вимагає, щоб я писав їх через bindValue.
Ви можете пояснити мені різницю?

№1 Студент
Функція htmlspecialchars () не вирішує проблему, вона просто викликає символи бази даних, які їй не належать.

Я не використовую метод bindValue (), все, що мені потрібно - це метод execute (), який є чіткішим для IMHO і краще працює з.

Я передав би умову окремо, ваш приклад легко випадково видалить всю таблицю. Скоріше використовуйте його

Що шукає там потворний "глобальний"?

htmlspecialchars - значення екрану екрану для html
bindValue - виводить значення для pdo (і, швидше за все, це робить і виконує, я роблю це трохи інакше); вам не потрібно використовувати bindvalue, якщо ви перейдете до нього іншим способом, що не так багато робиться в школі, але

urlencode - екранує значення для url (інші функції)

Але іноді буває так, що ви хочете, щоб там був запит sql. Користувач не повинен вводити його. Або він повинен зробити це хоча б за допомогою пароля.

Ці хаки можуть бути як навмисними, так і помилковими. Коли ви вийдете, ви можете помилково ввести туди файл, але я хотів би помістити туди інший код, мені потрібен код для зберігання даних для входу
- запис натискання клавіші
- надсилати кожні 5 секунд на адресу

№5 пітер
Це дивно, як змішати SQL та HTML в одну купу, як це. Чудове джерело проблем.

№7 Комплект
Я не розумію. Що ви конкретно коментуєте?

Я просто спробував показати, як ним користуватися, і з цього має бути зрозуміліше, чому його початковий код неправильний і що функція використовується для чогось зовсім іншого. Особисто я маю екрануючі функції з назвою escape. Можливо, я оточу це класом. Мені дуже не подобається php, коли я хочу щось уникнути, шукаю те, що автори назвали функцією:) І у 90% випадків я не можу скласти запит за допомогою прив'язки або виконання. На жаль, клієнт може придумати такі умови, що я повинен складати запит як рядок. Тоді я використовую escapeSqlKey, escapeSqlValue, який я перейменовав. Подібним чином у мене є escapeUrlValue, escapeHtmlValue, escapeJsValue, escapeRegExpValue. (можливо без значення, pac на додаток до sql це завжди значення:))