#javascript #jquery #html #input
#javascript #jquery #HTML #ввод
Вопрос:
Я создаю каталог, в котором пользователи могут публиковать статьи. Чтобы получить значения для публикации, я использую входные html-элементы и использую $.post
для сохранения данных в базе данных.
Однако у меня есть проблема, заключающаяся в том, что если пользователь пишет некоторый HTML-код в статье, он сохраняется при форматировании кода.
например, если введенное значение равно:
<input type="text" value="this is an article title <script>$("body").remove();</script>">
когда сообщение будет отправлено, страница также загрузит скрипт js, удаляющий body
.
Как этого избежать и сообщить, что в поле ввода есть скрипт, или форматирование скрипта для отображения в виде текста?
Комментарии:
1. Вам необходимо очистить пользовательский ввод на сервере — JS / jQuery не является подходящим инструментом для этой работы, поскольку его слишком легко обойти.
2. Я должен сделать это на моем php get?
3. Проверьте
htmlspecialchars()
.4. большое спасибо, это работает ——
$title = htmlspecialchars(filter_input(INPUT_GET, "title"), ENT_QUOTES);
Ответ №1:
<?php
//Simple answer
#when you echo data results from the database. consider code below..
#Assuming you are at the last process of echoling the data out.
$data='THIS WOULD BE YOUR DATA OBJECT OR VARIABLE CONTAINING DATA FROM THE DATABASE';
#then...
$data=htmlentities($data);
#or
$data=strip_tags($data);
#or
$data=htmlspecialchars($data);
#just be assured that tags or code will not be executed by the browser once above is included!
echo $data;
Комментарии:
1. Спасибо, но когда я возвращаю данные, я возвращаю их как json
2. затем json кодирует ваши данные. like ==> $data=json_encode(htmlspecialchars($data));