2015-08-14 3 views
0

Я создаю веб-приложение, которое будет работать в электронном режиме с угловым фреймворком и ларавелем в качестве основы. В приложении можно войти с помощью смарт-карты (благодаря узлу-pcsclite), он считывает байты на смарт-карте, а затем меняю их.php удалить неизвестные символы

Смарт-карта содержит код, который связан с таблицей сотрудников в моей базе данных MSSQL. Я могу получить код с смарт-карты, и я могу войти в приложение, когда он использует mysql в качестве сервера базы данных.

Теперь, когда я пытаюсь сделать то же самое, но с mssql, я получаю сообщение об ошибке, которое должно быть просмотрено в режиме html вместо самой страницы ошибки.

Screenshot

(Код может быть буквенно-цифровым)

Так он добавляет все эти странные символы (вероятно несуществующие символы), не то, что большая проблема не так ли? По крайней мере, это то, что я думал. Поэтому я попытался исправить это, используя этот код внутри моего контроллера laravel:

preg_replace('/[^A-Za-z0-9\-]/', '', $string); 

Это ничего не решило. Тогда я подумал, что у меня может возникнуть проблема с запросом, поэтому я запустил SQL Profiler, проблема в том, что (вероятно, из-за специальных символов) запрос сломан.

select top 1 * from [Staff] where [CodeInit] = ' 
go 

Так кто-нибудь знает, как действительно удалить странные персонажи?

Если вам нужна дополнительная информация, не стесняйтесь спрашивать.

+0

Я предполагаю, что вы обфускали строку целенаправленно со звездочками? Значение, которое теперь в основном звездочки, заключено в кавычки с кавычками, потому что на скриншоте оно не похоже? – RamRaider

+0

Прежде всего, эти красные символы не являются звездочками, это точки (возможно, потому, что они не могут показать, что это на самом деле).Если я посмотрю на страницу с ошибкой, он отобразит этот запрос: SQL: выберите top 1 * из [Staff], где [CodeInit] = 10741. Проблема в том, что точки являются незаконными символами, но я не могу их удалить. – Stefan

+0

Вы пробовали что-то вроде этого? http://stackoverflow.com/questions/1176904/php-how-to-remove-all-non-printable-characters-in-a-string –

ответ

-1

У меня была эта проблема и приземлился на этот вопрос при поиске решения. Я не смог найти никакого решения.

Строка с непечатаемыми символами, полученная от mdecrypt_generic(), поэтому я хотел, чтобы удалить эти символы. Когда я копирую и вставляю полученное значение из браузера в текстовый редактор скобок, он показывает эти красные точки.

Я только что вставил его в Google, а затем был закодирован до %10. Пока ничего не помогло, так как временное решение я использовал rtrim(), чтобы удалить эти точки.

Скопируйте точку в скобки и замените на "DOT_HERE".

rtrim(rtrim($pvp, "DOT_HERE"), "\0\4"); 

"\0\4" удалит только nulls and EOT, но не тот точечный характер (%10).

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

enter image description here

Обратите внимание, что $ пвп это расшифрованный текст.

Смежные вопросы