Для одной формы с 3 полями есть filter_var_array или filter_input_array с $pdo->prepare(...). И никакие кривые регулярки не нужны.
За 3 дня ничего не сломали. Продолжаем. Недавно столкнулся с тем что в базу неизвестной CMS нужно было прописать одно значение с поля - адрес интернета. Скорее все в этой CMS есть валидация и пр. Но времени на это может уйти очень много. Поэтому: if ($_POST and $idic=$_POST['idicalimport']) { $_=trim($_POST['icalimport']); if (preg_match('/[\'"<>; #]/', $_) == 0) Bookingcalendar::updateGoogleLink($_, $idic); } Всё. Задача решена в 4 строки.
пользователь не передал idicalimport. Всё, задача нифига не решена и падает с ошибкой. PS: чё там, фсбшники то уже приезжали?
??? Так и не надо каждый раз жать на кнопку обновления. Падает с ошибкой - прикол. Это рабочий код. Протестированный 500 раз. --- Добавлено --- Про ФСБ - вообще не понял
Т.е. если нету ни одного из этих символов, УРЛ нормальный? PHP: if (filter_var($_, FILTER_VALIDATE_URL) !== false) //... И, как и указал @acho, случай, если был пост запрос, но не пришло нужных данных (ведь пост-запрос может не только с формы прийти теоретически) не обработан.
Я читал что национальные домены не поддерживаются. А для России - это очень плохо --- Добавлено --- Да. Точнее безопасный. Мы ведь про безопасность --- Добавлено --- А зачем нам запрос не с формы? Я тут честно не понимаю вообще про что вы. Запрос $_POST['idicalimport'] придёт только с формы. Другое нам не надо. Задача. Поставить в незнакомую CMS кнопку с полем для обновления базы. Метод для обновления - Bookingcalendar::updateGoogleLink($_, $idic); Что не так?
Я могу с Postman прислать. Для безопасности вообще фильтровать не надо, только убедится, что CMS-ка нормальными людьми написана, которые не пихают переменные прямо в запросы. Я бы прощёлкал (CTRL+click) внутрь до запроса. Ну и лично моё мнение, потратить время и разобрать, как такие вещи сделаны в CMS - это правильнее. Мне вот сейчас достался проект, который до меня год пилил сотрудник, потом ушёл из компании. Толково пилил, но по мне слишком много архитектуры. Но, поскольку он уже напилил там, я всё делаю в том же духе, что у него написано, даже если сам бы в жизни так не сделал. Поскольку в чужом коде по чужим правилам. И естественно, на то, чтобы разобрать, что в какой класс засунуть уходит больше времени (особенно по началу). --- Добавлено --- Тут соглашусь. Надо посмотреть, как в Laravel валидатор урлов работает. Вроде никто пока не жаловался. А без фреймворка я очень редко пишу
Что прислать? Зачем прислать? Я правда не понимаю. Что не так? --- Добавлено --- И это я не понял. --- Добавлено --- Ситуация там очень не однозначная. С одной стороны есть сайт http://belegungskalender-ferienwohnung.de где я это всё уже расписал-написал под Друпал. Теперь другой заказчик хочет чтоб я это всё впихнул в самопис на yii.
Ну там с валидацией вообще красота: https://www.yiiframework.com/doc/guide/2.0/ru/tutorial-core-validators Ctrl+Click по функции или классу в PHPStorm сразу переходит на определение этой функции или класса Мне не нужна форма, чтоб сделать запрос. Особенно актуально учитывать это для форм, которые доступны без регистрации.
Зачем? Доки не хватает? На первом я не работал, но там должно быть в том же роде. Хотя, yii1 в 2019 - странность какая-то. Второй-то уже подустарел морально, хоть я его и люблю. Жду не дождусь, когда третий выйдет. --- Добавлено --- Код не должен падать, если я такой не хороший раскопаю урл и начну на него хрень слать.
А с чего там код упадёт? С чего? --- Добавлено --- А. То есть ничего не упадёт Это Поле у пользователя. Через вход
Если не пришлю idicalimport, будет по меньшей мере предупреждение. ПОэтому надо хотя бы двойным вопросом отбивать PHP: $idic=($_POST['idicalimport'] ?? false) --- Добавлено --- @miltorg, ну во всех известных мне фреймворках кидается исключение, если код вызывает предупреждение, и всё падает. И правильно делают авторы фреймворков, кстати, нефиг код, который даёт предупреждения, писать. Ну и раздувание логов ошибок хренью - тоже так себе перспективка.
И??? Будет предупреждение и что дальше? --- Добавлено --- Прикол. Получается что мой код - ещё и стабильнее фреймворков всяких. А я то не пойму никак - про что вы. Теперь понял, но у меня этого нет. У меня более стабильный код. --- Добавлено --- Ребят. У меня ощущение что вы зависли на этих своих фреймворках и ничего кроме их не видите. Мир давно уже ушёл вперёд. Поюзайте, Друпал для примера. --- Добавлено --- Создание модуля Drupal В sites/all/modules создаётся папка myprint. В ней два файла: myprint.info: name = My print Module description = opisanie My print Module version = 7.x-1.0 core = 7.x ----------------------------------------------------------------- myprint.module: <?php print 'My print Module'; ----------------------------------------------------------------- Этот модуль будет выводить фразу: My print Module, на всех страницах сайта, в самом верху. Источник: http://chajnik.ru/sozdanie-modulja --- Добавлено --- И всё. Весь модуль под Друпалом. Есть такое в Yii? --- Добавлено --- Делайте что хотите - доступны все Друпаловские Плюшки. Хотите пишите без Друпала, а в любой момент хватаните $user->name, например
Юзал я друпал. Не понравилось. Нет, получается, что фреймворки приучают писать код так, чтоб он не давал предупреждений. За плохой код наказывают.
Если это требование заказчика - тогда, Да. У меня требование заказчика - быстрее, а разукрасим потом. --- Добавлено --- По регулярке и безопасности есть что сказать?
Одно с другим не связано. уже много раз сказано. Для безопасности используются плейсхолдеры в запросах, htmlspecialchars при выводе. Регулярки - для валидации, что входные данные соответствуют требованиям задачи и для разбора текстовых данных.
Всем из страны фреймворков: Остальные потуги для ваших местечковых фреймворков - мне не интересны - пишите их на форумах местячковых фреймворков. --- Добавлено --- По моей регулярке и безопасности есть что сказать? Если нет - то я устал тут бесплатным обучением заниматься
@miltorg, мы местячковые фреймворки тут не упоминали. Laravel, Symphony, Zend Framework - лидеры индустрии. Yii2 - самый популярный фреймворк в странах СНГ