Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Несколько вопросов для повышения квалификации |
Автор: nepster 2.8.2013, 15:54 | ||||
Всем привет, возникли несколько вопросов, отелось бы узнать мнения и советы коллег. За ранее большое спасибо! 1) Как лучше хранить денежное значение в базе, какой тип данных ? 2) Собственно вопрос про 0 и false Ситуация когда нужно проверить есть ли значение в переменно и оно равно 0 Мой вариант решения:
А как Вы решаете данную задачу? 3) достаточно ли принудительно указать тип данных для предотвращения sql инъекции для числа и htmlspecialchars для строки ?
|
Автор: Arantir 2.8.2013, 16:35 | ||
И от себя добавлю... decimal, как и сказали, с нужной точностью (2 знака для рублей, долларов и т.п.). Это тип для точных расчетов. В нем нет каверз, как во float. Хранить целым числом в виде значения копеек, центов и т.п. настоятельно не рекомендую. Округление тысячных долей до сотых - очень частая ситуация (посмотрите на цифры обмена валют), а с целыми числами это невозможно. Fortop +++ Странно вообще возникновение такого вопроса, если честно =)
htmlspecialchars предназначен для вывода текста в браузер, а не для его ввода в базу. Эта функция предназначена для таких строк, как, например: <script>alert("Этот сайт не фильтрует посты юзеров!");</script> Как можно заметить, этот форум вывел просто текст, а не злобный html-код. Причем к sql-инъекциям эта функция не имеет абсолютно никакого отношения. |
Автор: Sanchezzz 2.8.2013, 19:22 | ||
Я Prepared statements пользуюсь только через драйвер PDO напрямую в СУБД их не взываю, нету надобности когда PDO делает тоже самое. У себя в фм реализовал в методах контролера $this->post(<имя ключа>, возможное значение по умолчанию null, тип проверки null int str num empty можно использовать знак отрицания в начале ! использую так
Такие же методы реализованы отдельно не для глобальных перемененных. Тут как бы хочешь меньше писать рутины, создай себе хелперы функций и таскай их из проекта в проект. ID всегда проверяю через is_int + > 0 но не через numeric |
Автор: nepster 3.8.2013, 22:45 |
Подскажите пожалуйста как безопасно орабатывать получнные данные на сервере. Я используюю Yii, собственно там работаю с актив рекорд. Я в подробности работы класса не мокался, но знаю, что он тоже проверяет данные. Но хотельсь бы знать более подробно как защиться от злоумышлеников и как правильно валидировать данные. Особенно числовые! |
Автор: georgiy11 3.8.2013, 23:01 |
Метод rules() |
Автор: nepster 4.8.2013, 00:06 |
а если на чистом php. Мне не опнравился данный метод, так как я использую мультиязычность и обрабатываю каждую ошибку. Поэтому мне проще возвращать в качестве ответ от сервера код ошибки или success в формате json |
Автор: georgiy11 4.8.2013, 13:06 |
Все ошибки будут хранится в модели AR. getErrors и можно обрабатывать ![]() |