Проверка ввода данных пользователем или ���������

Мы позволяем пользователям искать базу данных от единственного ввода текста, и я испытываю затруднения в фильтрации некоторых пользовательских предоставленных строк.

Например, если пользователь отправляет:

��������� lcd SONY

(Отметьте? 's) я должен отменить поиск.

Я включаю закодированную версию base64 вышеупомянутой строки, обернутой так, чтобы ее легкое выполнение:

print(base64_decode("1MfLxc/RwdPHIGxjZCBTT05Z"));

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

Другой пример для выделения этого, мы используем utf-8 и mb_detect_encoding, не помогает многому:

print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU="));
ΠΛυντηριο ρουχ�%

Так:

  • как я могу обнаруживать/фильтровать эти исходные данные?
  • как это вводится, будучи сгенерированным?
6
задан zaf 12 April 2010 в 15:46
поделиться

2 ответа

Вы не должны получить это, хотя если вы действительно хотите фильтровать (что я не рекомендую), сделайте проверку на буквенно-цифровые символы, а также "-.;" и т.д.

Вы можете использовать некоторые из этих функций, чтобы помочь вам в процессе фильтрации.

http://www.php.net/manual/en/function.ctype-alnum.php

1
ответ дан 17 December 2019 в 22:11
поделиться

Если вы выполните эти запросы после создания соединения с mysql, он должен обработать ввод utf-8, и результаты будут безупречными, не выплевывая? ».

mysql_query("SET character_set_client=utf8", $mysqlConn);
mysql_query("SET character_set_connection=utf8", $mysqlConn);
mysql_query("SET character_set_results=utf8", $mysqlConn);

(при условии, что база данных настроена на utf-8, и вы не против не фильтровать их, если они не превращаются в?)

(также при условии, что вы используете mysql, другие СУБД, вероятно, имеют аналогичные функции )

0
ответ дан 17 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: