Я работаю над CMS уже несколько месяцев, я столкнулся с различными проблемами, когда laravel усекает определенные специальные символы. Мне пришлось изменить редактор в CMS с bootstrap wysiwyg на ckeditor, все стало намного лучше, поскольку с ним поставляются некоторые дополнительные параметры экранирования. Например, мне удалось предотвратить превращение '"'
в '"
, что приводило к усечению всей строки (абзаца) везде, где она находила такую кодировку.
Однако это CMS, где у пользователя есть веская причина вводить широкий диапазон символов, которые можно безопасно закодировать и сохранить в базе данных в тех случаях, когда неизбежны специальные символы. Например, выбор встраивания с веб-сайта (очень разрешено), который может содержать любой из этих символов;
/ = %2F
: = %3A
# = %23
% = %25
? = %3F
Когда кто-то вставляет ссылку, содержащую определенные символы, или пытается создать гиперссылку на некоторые слова, содержащие символы, подобные приведенным выше (за исключением %2F), строка усекается. Проведя проверку на разных уровнях, я заметил, что строка успешно попадает во внутреннюю функцию, а затем усекается перед сохранением. Я не знаю, усекает ли эти строки его Laravel (парсер) или MySql (база данных, которую я использую). Вот частный случай;
Когда это встраивается в Facebook:
<iframe src="https://www.facebook.com/plugins/comment_embed.php?href=https%3A%2F%2Fwww.facebook.com%2Ftonyelumelu%2Fposts%2F10154627801036949%3Fcomment_id%3D10154629134011949&include_parent=false" width="560" height="201" style="border:none;overflow:hidden"
scrolling="no" frameborder="0" allowTransparency="true">
</iframe>
Вставил в редакторе вот что нашел в базе
<iframe src="https://www.facebook.com/plugins/comment_embed.php?href=https://www.facebook.com/tonyelumelu/posts/10154627801036949?comment_id=10154629134011949
Внимательное наблюдение покажет вам, что все '%2F'
были заменены в строке на '/'
, но строка была точно усечена до '%3F', который должен был быть заменен на '?'
или, по крайней мере, оставлен без изменений.
Я знаю, что это меры безопасности, но я уже много настроил передний редактор, и я думаю, что санация задней части должна быть предоставлена мне, чтобы я мог сделать это (если я хочу) так, как я хочу. Мне действительно нужно сначала узнать, как остановить такое раздражающее поведение, прежде чем давать советы по передовой практике. Я просто хотел бы, чтобы строки попадали в базу данных в том виде, в каком они приходят, без каких-либо изменений. Заранее спасибо.