2016-03-22 2 views
2

IV было создание веб-сайта и в то время тестирования я заметил, что если я ставлю <em>bob</em>как остановить пользователя ввода HTML код в текстовых входов

или что-то подобное в моих текстовых полей на моем регистре/udate страниц они хранятся на базы данных, как введено '<em>bob</em>', но при обращении к веб-сайту они выделены курсивом

есть способ заблокировать код HTML из моих текстовых входов? или дозировать его только для чтения как html при повторном повторении на странице из базы данных? в основном просто любопытно узнать, что здесь происходит? название, выделенное курсивом, не является серьезной проблемой, но похоже, что пользователь не должен контролировать?

p.s. я могу предоставить код, если это необходимо, но не думал, что это поможет в этом вопросе?

+0

Вы можете проверить очиститель HTML. – LetsSeo

+1

Дело в том, что вы не можете остановить их! Они все равно будут пытаться, и все, что вы можете сделать, это защитить свой код. Например, вы можете использовать javascript, чтобы избежать символов как «>» и «<». Но это нехорошее решение, так как эти символы могут отображаться в действительном вводе. Еще одно решение на стороне сервера - использовать функцию strip_tags для удаления такого кода. http://php.net/manual/en/function.strip-tags.php –

+1

Вместо того, чтобы запретить пользователю вводить HTML-код, просто обрабатывайте его в своей части кода, просто используя ['htmlentities()'] (http: // php .net/manual/en/function.htmlentities.php), или если вы хотите избавиться от тегов, просто используйте ['strip_tags()'] (http://php.net/manual/en/function.strip-tags .php) –

ответ

4

Вы можете использовать strip_tags, чтобы удалить все HTML-теги из строки: http://php.net/manual/es/function.strip-tags.php

<?php 
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>'; 
echo strip_tags($text); // Output: Test paragraph. Other text 
echo "\n"; 

// Allows <p> and <a> 
echo strip_tags($text, '<p><a>'); // Output: <p>Test paragraph.</p> <a href="#fragment">Other text</a> 
?> 
2

Вы можете использовать встроенный PHP функцию strip_tags. Он удалит все теги HTML из строки и вернет результат.

Нечто подобное:

$cleaned_string = strip_tags($_GET['field']); 
5

Вы также можете просто использовать htmlspecialchars() для вывода, что именно они ввели на странице - как есть.

Таким образом, если они войдут в <i>bob</i>, то то, что будет отображаться на странице, буквально <i>bob</i> - таким образом вы «разрешаете» все входные данные в мире, но ни один из них никогда не отображается.

Если вы хотите просто избавиться от тегов, то лучший вариант - strip_tags(), так что <i>bob</i> будет отображаться как bob. Это работает, если вы уверены, что нет законного сценария, когда кто-то захочет ввести HTML-тег. (Например, Stack Overflow, очевидно, не может просто отделять теги от материала, который мы вводим, поскольку многие вопросы включают в себя написание тегов HTML.)

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