2014-10-28 3 views
0

Я использую html entities для защиты моего сайта.
И мой клиент хочет добавить ссылку в свой пост с помощью CMS.
Как сделать исключение в html-сущностях?
использовать href внутри html объектов

мой пример кода:

<p><?php echo h($row['message']) ?></p> 
//h is my function for htmlentities 

Мой код дисплей это сообщение:

"You can click this link <a href="###">Link</a>" 
//And I dont know my data insert '\' 
//It become <a href=\"###\">Link</a> 

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

ответ

0

Я считаю, что вы хотите сделать это в DB с htmlentities(), чтобы он не связывался с вашей БД. Чтобы получить их, вы должны использовать html_entity_decode(). Html_entity_decode() преобразует все строки с объектами HTML обратно в исходную строку.

http://php.net/manual/en/function.html-entity-decode.php

Надеется, что это ответ на ваш вопрос.

Edit: Сырые данные, полученные: http://www.example.com

Через htmlentities он выплевывает HTML сущностей, которые браузер не может интерпретировать при попытке найти эту страницу. Использование htmlentities() (пожалуйста, если я ошибаюсь неправильно) - это кодировать ввод пользователя, прежде чем передавать его в другом месте.

вход

Пользователь: <script>hacks</script>

Зачет хотя htmlentities:

&ltscript&gthacks&lt (whatever backslash is)script&gt 

(Таким образом, он может не связываться с чем-либо в вашей базе данных, лучшим примером является использование PHP/MySQL, но я не так хорошо, чтобы дать тот точный пример на данный момент.)

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

+0

не проходят использование данных htmlentities в базу данных. данные базы данных все еще сырые. Я использую htmlentities при извлечении данных из базы данных. Можно ли сделать исключение для htmlentities? – Scramble

+0

Я не думаю, что вам нужны htmlentities для извлечения данных из базы данных, поскольку эти данные уже безопасны. Причина, по которой вы хотите использовать htmlentities, состоит в том, чтобы убедиться, что пользовательский ввод не содержит вредоносного кода, такого как , когда вы вставляете его в БД. Необходимость URL-адреса символов и (я считаю) не может использовать объекты HTML в URL-адресе. –

+0

Это правило моей компании, поэтому я не могу много сделать. Но у меня все еще проблема с «Когда я вставляю в базу данных, она автоматически появляется до». Пример Link Как его удалить? – Scramble

0

Попробуйте это:

<?php 
    $link = h(stripslashes($row['message'])); 
?> 


You can click this link <a href='<?php echo $link; ?>'>Link</a> 
Смежные вопросы