2013-05-30 2 views
-1

Я пытаюсь выполнить POST запрос SOAP. Это похоже на дублирующую проблему. Там было несколько решений для этой проблемы, но никто не работал для меня. Так что я попытался следующее:
CodeIgniter: Запрещенные ключевые символы. <? Xml_version

Found верхнего ответа на SO, но он дал мне preg_match() compilation failure. Который я попытался разрешить с этим answer, но я все еще получаю ту же ошибку.

Тогда я пробовал последний ответ на this вопрос от SO, но не повезло.

ядро ​​/ Input.php

function _clean_input_keys($str) 
    { 
     if (! preg_match("/[^a-zA-Z0-9_\-.]+$/i", $str)) 
     { 
      exit('Disallowed Key Characters.'.$str); 
     } 

Я не силен в регулярных выражениях и не могу понять, где проблема?

+0

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

+0

Действительно, зачем вам '

+0

@WesleyMurch Я пытаюсь отправить запрос службы SOAP. –

ответ

1

Можете ли вы сказать сначала, что вы пытаетесь сделать? вы отправляете xml через почту, получаете? как произошла эта ошибка?

Also in solution that you have found (что является причиной является причиной), какое регулярное выражение вы использовали в своем приложении?

Вы заметили это в asnwer? preg_macth ошибка компиляции указывает Unescaped REGEX

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

редактировать:

if (!preg_match("/^[a-z0-9:_\/-\<\?]+$/i", $str)) //or alternatively match all chars "/^[\.-a-z0-9:_\/-]+$/i" 
    { 
     exit('Disallowed Key Characters.'.$str); 
    } 

не добавил < и, вы должны добавить все чартеры, которые инициирующие это условие?. Причина, по которой эти фрахтователи не добавляются в состояние, заключается в предотвращении инъекций. Поэтому используйте его с умом. google xml preg_match expression, чтобы убедиться, что это xml-файл, и при необходимости создайте еще одну проверку ввода. потому что xml может содержать все charaters, которые запрещены, вы также можете удалить это условие и вернуть true;

Edit2: также, если вы можете вместо сообщения, попробуйте разобрать XML по ссылке или в виде загруженного файла.

+0

Да. Этот ответ не помог мне и дал мне ошибку. Я упомянул об этом в своем вопросе. Пытался разрешить его с помощью «-», но все тот же вопрос. –

+0

@HimanshuYadav see my edit –

+0

Не могу этого сделать. XML-запрос отправляется из приложения Windows 8. Это стандарт Windows 8. –

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