Я тут узнал что некоторые при получении данных с формы - подключают целые фреймворки для безопасности. Я же использую простейшие Регулярные выражения, типа: if (preg_match('/\D/', $id)) $id=103; И считаю это правельным. По крайней мере все кого я просил это сломать - не сломали. Хотелось бы услышать ваше мнение. Спасибо. --- Добавлено --- Давайте не будем охватывать всё необъятное, а сосредоточимся именно на $id - это целое число. Выясним всё про неё и пойдём дальше.
начнем с того, что проверка того целое число или нет, это уровень детского сада. поэтому тут и обсуждать нечего. фреймворки подключают не только для этого. а для того что там все базовые функции веб приложения УЖЕ реализованы. поэтому ненадо изобретать велосипед. берешь и используешь. итак. с целым числом элементарно. далее. а если вам нужно проверить чтото посложнее. например Емайл, УРЛ... тоже регулярка?
То есть при условии что $id должно быть целым числом, а оно и должно быть целым числом - я всё написал идеально? Я правильно понял ваш пост?
да, ты всё написал идеально и вообще ты сам идеальный. а так как ты идеальный и развиваться тебе некуда, то и развитие твоё остановлено. и, похоже, остановлено до того, как ты попал в WEB ибо споришь с базовыми принципами.
Очень, очень печально что вам не понятно /\D/ - это просто катастрофа. Вы что закончили? В каком году?
@miltorg, у тебя ХЗ что за логика в представленном в первом посте коде. Получше придумать не мог, чтобы ответы были поадекватнее. Что за «$id=103;»??? Вообще же приведение к int (после проверки существования соотв. параметра, если речь о входном параметре) – надежный вариант для школоты. А серьезные дядечки (и тетечки) могу написать в регулярке и так: [1-9]\\d{0,9} (если речь идет именно о числе, а не о цифрах). --- Добавлено --- P.S. Это натуральное максимум десятизначное. Для целого додумайте сами.
Стоп. Мы не выдумываем своё. Мы разносим в пух и прах моё. Показываем мне на мои ужасные промахи. --- Добавлено --- и громим меня - по поводу того, что это в корне не верный подход --- Добавлено --- А что написали вы? - Ваша регулярка прекрасна но давайте ограничим её 10 цифрами? --- Добавлено --- И даже не знаете что там у меня в регулярке написано не число? - Беда
как проверять входные данные, дело личное. но суть в том, что языки зачастую предоставляют разработчику ГОТОВЫЕ инструменты для этого. язык, а не фреймворки. в пхп они тоже есть - Фильтры валидации данных а регулярки юзают для других вещей.
И даже не знаете что там у меня в регулярке написано не число? А я разве против? Вы все только что писали что писать так как я пишу - нельзя. А теперь уже пишите: как проверять входные данные, дело личное. Не последовательненько как то.
я понимаю, что вы очень гордитесь своей сложной регуляркой, но поверьте, большая часть народа тут разбирается в этом лучше вас
Натуральное, максимум десятизначное будет так: \d{1,10} А что написали вы? Вот что: 2\dddddddd - подобное проходит под вашу регулярку --- Добавлено --- Вот выше как раз я пример и привёл как тут народ разбирается...
да дело личное, ибо заставить вас никто не сможет. но при этом, опытные разработчики знают как делать это правильно, и делятся с вами этой информацией. ваши доводы, уровня сломайте если сможете, совершенно ничего не доказывают. я тоже могу написать простейший код, как у вас, только использовать intval() или is_int() и сказать. Попробуйте сломайте. и вы тоже не сможете сломать. и что это будет доказывать? что регулярки фигня? реально уровень детсада
Вы пошли не в ту сторону. Давайте переходить к более сложным структурам. Для этого вы должны признать что мой /\D/ - полностью правильный и безопасный
Ты же не сказал что именно делает твой код. Как можно составить о нём мнение без этого? \D означает "в строке есть хотя бы одна не цифра". И таки что? Если цель проверить буквально это, то ты блестяще справился Развитые валидаторы решают не "необъятное", а десятки наиболее распостранённых случаев. Из них, как из конструктора, можно набрать то, что требуется. Притом код проверен огромным комьюнити и есть примеры использования. Это сберегает время и силы. Впрочем, зачем я рассказываю тому, кого устраивает $1 в час (до 12K руб в месяц) Похоже ты свои последние годы решил потратить на бесполезную фигню.
Спасибо. Именно это и проверяется в id. В нём должны быть только цифры Вы не знали? --- Добавлено --- Как только мы закончим с id - так я сразу перейду к более сложным для вас понятиям --- Добавлено --- И в конце занятия, для проверки формы вам не понадобится подключать огромные фреймворки --- Добавлено --- Вы просто не шарите в Регулярках - поэтому это для вас так сложно.
))) ок. регулярка прекрасна.и полностью безопасна. красавчик! давайте дальше. что будете делать с валидацией Емайла?
ура! ура! Я знал. Что вот так долго-то. Ок. Не перескакивайте. Следующим пунктом там были $imja и $familija https://php.ru/forum/threads/baza-dannyx-mysql-kak-pravilno-podkljuchitsja-i-sdelat-zapros.78121 --- Добавлено --- if(preg_match('/\W/u',$imja))$imja='Vasja'; --- это проверка имени перед вставкой в Базу --- Добавлено --- Вы должны написать что и тут всё прекрасно и замечательно
всё прекрасно. за исключением например того что есть имена типа Анна-Мария. а еще есть страны, где допустимы имена которые ваша регулярка не пропустит. к чему вообще эти ограничения. пусть вводят что хотят.
Как будет, я написал. Мозгов что ли не хватило, чтобы понять, зачем нужен более сложный вариант, приведенный мной? ЧЁ? Там дв. бэкслэш для строки пыха предназначен. В общем-то он скорее всего необязателен, но спецы обычно пишут. Вы не поняли, потому что не спец и опять мозг не захотели вкл.
Вы проходили Теорию Вероятности? Нас учили что резко отличающиеся результаты вообще не нужно рассматривать. + мы смотрим мой код с точки зрения БЕЗОПАСНОСТИ Скажите ещё раз что он прекрасен и мы пойдём дальше --- Добавлено --- То есть вы не тестировали свою регулярку? Протестируйте. --- Добавлено --- Понятно. У всех нет мозгов: /[1-9]\\d{0,9}/ Match a single character present in the list below [1-9] 1-9 a single character in the range between 1 (index 49) and 9 (index 57) (case sensitive) \\ matches the character \ literally (case sensitive) d{0,9} matches the character d literally (case sensitive) {0,9} Quantifier — Matches between 0 and 9 times, as many times as possible, giving back as needed (greedy)
бред. система должна работать для всех клиентов, а не только для тех чьи имена нравятся лично одному безумному разработчику. и где это вас так учили? в ВУЗе? специальность на которую вы учились связана с программированием, ИТ, электроникой?
Блин. Вы ведь даже не читали Теорию вероятностей. Чему нас учили?: Какова вероятность попадания в блиндаж, если в окоп мы уже попали. Блиндаж - оно в окопе. Ни чего личного - просто экономия боеприпасов. --- Добавлено --- Сфера применения - Да везде. Позволяет не ломать голову над резко отличающимися результатами. Я за 20 лет написал много кода 1. Ни один не взломали 2. Не было ни одного Д'артаньяна.
Не, только у некоторых, раз они не понимают написанное (я не так много написал, чтобы упустить это из виду в норме):
Это если снаряд не вылетел из ствола орудия. А вы предлагаете рассматривать и этот случай. Не нужно это. Не целесообразно. --- Добавлено --- Регулярные выражения пишутся в виде регулярных выражений или приводите целую строку. На любом языке.
Салтыков-Щедрин, Шеллер-Михайлов, Мамин-Сибиряк, Новиков-Прибой. Бонгард-Левин, Гулак-Артемовский... не часто, но это есть и у нас. а в других странах это ещё более распространено. так что теорию вероятностей сюда приплетать ненужно. вы просто неправильно поняли это и теперь неправильно используете. создавая ограничения для людей там где их вообще не должно быть. так на какую специальность учились?