Подскажите по javascript - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB88.4375
BTC/USD67637.3699
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 09.04.2017, 10:40   #1
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 621
Бабло: $257430
Question Подскажите по javascript

всем привет!

сижу ломаю голову, что то не могу понять как сделать так чтобы из mysql таблицы брались несколько строк и отображались как text, а не html, но при этом был отступ в виде <br> после каждой строки.

делаю на node js и сокетах
получаю значения из бд так

сервер

Код:
...

var reg = '';
for (var i = 0; i < rows.length; i++) {
	reg += rows[i].name;
}

io.emit('reg', { reg: reg }); //тут значение отдается на клиент по сокетам
на клиенте получается так

Код:
socket.on('reg', function (data) {
	$('#reg').text(data.reg); //отдается как text
});
html
Regs: <div id="reg"></div>

мне нужно чтобы данные из БД отдавались как текст, но при этом был перенос строки, в данном примере я получаю всё скопом в одну строку.
Soba вне форума  
Старый 09.04.2017, 11:00   #2
editeur
Senior Member
 
Регистрация: 27.09.2013
Сообщений: 694
Бабло: $101520
По умолчанию

Попробуй так

reg += rows[i].name + "\n";

или

reg += rows[i].name + "<br/>";
editeur вне форума  
Старый 09.04.2017, 11:40   #3
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 621
Бабло: $257430
ТС -->
автор темы ТС По умолчанию

пробовал, эти строки отображаются как текст на клиенте т.к. $('#reg').text(сюда попадает значение)
если менять на $('#reg').html(data.reg) то можно передавать теги, но мне нужно получать именно текстом.

Последний раз редактировалось Soba; 09.04.2017 в 11:48.
Soba вне форума  
Старый 09.04.2017, 11:47   #4
Lord_Alfred
Хитрожопый
 
Аватар для Lord_Alfred
 
Регистрация: 15.07.2008
Сообщений: 594
Бабло: $93800
По умолчанию

Проблема и в том, как ты хранишь данные в БД, и в том, как выводишь их.

Чтобы точно сказать как тебе нужно решать - нужно знать что у тебя в БД и какой вывод ты ожидаешь.
__________________
Мой блог в Telegram: https://tglink.ru/Lord_Alfred
Тесты производительности VPS: https://tglink.ru/VPSBench - присылайте с рефкой
Lord_Alfred вне форума  
Старый 09.04.2017, 11:54   #5
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 621
Бабло: $257430
ТС -->
автор темы ТС По умолчанию

у меня в бд текст в виде username (varchar)
я бы конечно мог не париться и получать данные как html и формировать как мне надо, но дело в том что таким методом можно организовать xss атаку, например если username будет вида <script>alert()</script>

таким образом я и хочу получать данные из БД как текст, что я в принципе и сделал, но не могу понять как сделать перенос строки.
Soba вне форума  
Старый 09.04.2017, 12:01   #6
Sox
Senior Member
 
Аватар для Sox
 
Регистрация: 12.03.2013
Сообщений: 140
Бабло: $30675
По умолчанию

Цитата:
Сообщение от Soba Посмотреть сообщение
например если username будет вида <script>alert()</script>.
так сделай чтобы в бд такие не поподали юзеры
__________________
AddUrl Google
Sox вне форума  
Старый 09.04.2017, 13:08   #7
editeur
Senior Member
 
Регистрация: 27.09.2013
Сообщений: 694
Бабло: $101520
По умолчанию

В новых браузерах можно сделать так:
Код:
<div id="reg" style="white-space:pre-line"></div>


reg += rows[i].name + "\n";
Но лучше на сервере делать escape
escape(rows[i].name) + "<br/>";
и использовать .html();

escape может называться по другому, но полюбому в твоем языке должна быть библиотека, которая экранирует html перед выводом.
editeur вне форума  
Старый 09.04.2017, 13:58   #8
веломан
сыроед
 
Аватар для веломан
 
Регистрация: 01.10.2015
Сообщений: 15,816
Бабло: $1863835
По умолчанию

Цитата:
Сообщение от Soba Посмотреть сообщение
у меня в бд текст в виде username (varchar)
я бы конечно мог не париться и получать данные как html и формировать как мне надо, но дело в том что таким методом можно организовать xss атаку, например если username будет вида <script>alert()</script>
так в юзернейме не должно быть ничего, кроме -_a-Z0-9
проверяй
а ещё есть htmlspecialchars() (в PHP), но для юзернейма не нужно, там просто проверка
веломан вне форума  
Старый 09.04.2017, 14:53   #9
Soba
Senior Member
 
Регистрация: 02.05.2014
Сообщений: 621
Бабло: $257430
ТС -->
автор темы ТС По умолчанию

я про php знаю, но его нет и не будет в моём приложении, уж так повелось (html5 + node js)

буду проверять юзернейм
Soba вне форума  
Старый 09.04.2017, 15:08   #10
editeur
Senior Member
 
Регистрация: 27.09.2013
Сообщений: 694
Бабло: $101520
По умолчанию

https://www.npmjs.com/package/escape-html
editeur вне форума