Нужно знать, что делает это регулярное выражение, это безопасно? - PullRequest
1 голос
/ 09 марта 2012

Обновление чьего-то старого проекта PHP, и я не знаком с регулярными выражениями.

Вопрос первый: что это делает?фильтр для вставки в базу данных mysql без mysql_real_escape_string ()?Я знаю, что ответ на этот вопрос нет, но он настроен на использование mysql_real_escape_string (), только если это регулярное выражение не проходит.

Ответы [ 7 ]

5 голосов
/ 09 марта 2012
^      // start of string
[0-9]+ // one or more numbers (could also be \d+)
[.]?   // zero or one period (could also be \.?)
[0-9]* // zero or more numbers (could also be \d*)
$      //end of string

Таким образом, он проверяет, является ли введенное число, например, 12 или 3.6 (52. также будет соответствовать). Это не будет соответствовать .35 или 12a6.

Кажется, это достаточно безопасно для вставки БД, потому что это позволяет только цифры.

1 голос
/ 09 марта 2012

Не очищает строку для базы данных.

Проверяется, соответствует ли $variable этому шаблону ...

  1. начинается с одной или нескольких цифр (^[0-9]+)
  2. с последующим необязательным . ([.]?)
  3. , за которым следует столько цифр, сколько вам нужно ([0-9]*)
  4. с последующим концом строки ($)
1 голос
/ 09 марта 2012

соответствует строкам, которые:

  1. начать с хотя бы 1 цифры от 0 до 9
  2. имеет десятичную точку после первых n цифр 0 или 1 раз
  3. иметь любую цифру после символа 0 или более раз
0 голосов
/ 09 марта 2012

Это безопасный фильтр для вставки в базу данных mysql без mysql_real_escape_string ()?

Предполагая возможное использование этой переменной, я бы сказал, что mysql_real_escape_string () для нее будет совершенно бесполезным.
Нужен код сборки запроса, чтобы быть уверенным, хотя.

0 голосов
/ 09 марта 2012

выглядит, если точное совпадение.это соответствует 234234232432343.231313132321 и 2232233223 и 322332. и не .32232 и не

0 голосов
/ 09 марта 2012

Это будет соответствовать числу, которое имеет хотя бы одну цифру перед десятичной точкой (если есть десятичная точка).Если значение соответствует этому регулярному выражению, я не вижу, как было бы небезопасно вставить его в базу данных.

0 голосов
/ 09 марта 2012

Пытается сопоставить десятичное число (хотя и плохо). В любом случае, он не изменяет $variable, поэтому вам нужно правильно его отключить, прежде чем переходить на MySQL.

...