Мы позволяем пользователям искать базу данных от единственного ввода текста, и я испытываю затруднения в фильтрации некоторых пользовательских предоставленных строк.
Например, если пользователь отправляет:
��������� lcd SONY
(Отметьте? 's) я должен отменить поиск.
Я включаю закодированную версию base64 вышеупомянутой строки, обернутой так, чтобы ее легкое выполнение:
print(base64_decode("1MfLxc/RwdPHIGxjZCBTT05Z"));
Я проигнорировал такие исходные данные прежде, но теперь (не уверено, почему), просто понял, что mysql запрос базы данных берет почти навсегда для выполнения так, это находится теперь на высоком приоритете.
Другой пример для выделения этого, мы используем utf-8 и mb_detect_encoding, не помогает многому:
print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU="));
ΠΛυντηριο ρουχ�%
Так:
Вы не должны получить это, хотя если вы действительно хотите фильтровать (что я не рекомендую), сделайте проверку на буквенно-цифровые символы, а также "-.;" и т.д.
Вы можете использовать некоторые из этих функций, чтобы помочь вам в процессе фильтрации.
Если вы выполните эти запросы после создания соединения с 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, другие СУБД, вероятно, имеют аналогичные функции )