Специальные символы в ошибках PHP - PullRequest
0 голосов
/ 23 февраля 2012

Когда пользователь вводит специальные символы \\ или // в поле поиска, я получаю следующую ошибку:

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity

Как это убрать?

    $q=$_GET["abc"];
    $xml = "http://abc/seach?q=".urlencode($q);     
    $Obj = simplexml_load_file($xml);

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

Моя лучшая догадка, учитывая приведенную здесь информацию, заключается в том, что виноват скрипт, к которому вы обращаетесь, а не ваш код. Я бы предположил, что он неправильно обрабатывает косые черты и возвращает неверный XML-ответ.

Есть три способа обойти это.

  1. Заставьте их исправить свой сценарий, чтобы он мог обрабатывать косые черты
  2. Удалить косые черты из запроса перед его отправкой: $q = str_replace(array('//', '\\'), '', $q);
  3. Попытка проверить заголовки или ответ XML на наличие ошибок
0 голосов
/ 23 февраля 2012

Почему бы просто не удалить эти символы (то есть фильтр ввода, который вы должны делать в любом случае) примерно так:

[EDIT]

$q = $_GET["abc"];

// Array of character patterns not allowed
$not_allowed = Array('\\','//');

// Strip from query
$q = str_replace($not_allowed,'',$q);

// Pass to XML
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...