Я уже проверил довольно много других ответов, но безрезультатно.
Меня наняли, чтобы исправить ошибки в работе, от которой сбежал какой-то другой разработчик.
Приложение имеет функцию добавления комментариев и удаления комментариев.
Проблема возникает в части удаления комментариев. Он разработал базу данных таким образом, чтобы все комментарии просто вводились в одну ячейку, разделенную символами канала. Таким образом, при удалении комментария, весь комментарий должен быть помещен в URL как параметр который затем передается модели и удаляется из базы данных.
Я знаю, что это плохо, но я не могу перекодировать всю функциональность.
Теперь, когда пользователь вводит комментарий, такой как «Что случилось?», URL-адрес комментария для удаления выдает «Codeigniter: отправленный вами URI содержит запрещенные символы». ошибка.
Я попытался преобразовать кавычки в символьные объекты HTML, но они снова содержат запрещенные символы.
Кто-нибудь может предложить, пожалуйста, возможное решение этой проблемы?
Редизайн базы данных не является жизнеспособным вариантом, так как мне придется изменить обширный php-код, используемый для обработки различных разделителей.
Возиться со списком запрещенных персонажей тоже кажется плохой идеей.
Спасибо.
Я не уверен, если htmlentities
поможет.
Вы первый раз позвонили urlencode
только по параметрам?
<?php
$query_string = 'foo=' . urlencode("What's Up?");
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
<a href="mycgi?foo=What%27s+Up%3F">
Также проверьте, нужно ли вам добавлять escape-символы к любому из них, если база данных обрабатывает их как специальные символы.
например Если% рассматривается как специальный символ, то вам может потребоваться добавить \
перед этим.
Откройте ваш конфигурационный файл и найдите этот параметр:
$ config [‘mitted_uri_chars ‘] =’ a-z 0-9 ~%.: _ () @&знак равно
Вы можете изменить его по своему требованию или оставить пустым.
Прочитайте раздел комментариев в файле конфигурации.
Это говорит о том, что: Leave blank to allow all characters -- but only if you are insane.