2015-06-15 2 views
1

Я пытаюсь сделать себя файловым менеджером, и мне удалось создать функцию «edit file» в PHP. На главной странице у меня есть текстовое поле, но когда я хочу, чтобы изменить главную страницу «источник», текст останавливается именно там, где текстовое поле тег закрывается (</textarea>)</textarea> тег не отображается

Вот представление задачи:

<textarea><textarea>Hello World.</textarea></textarea> 

выходного текстовое поля будет

<textarea><textarea>Hello World. 

Это потому, что в коде я закрыл текстовую метку, но браузер действует как он был закрыт из-за пределы коды.

Как я могу предотвратить это?

+1

Звучит так, как будто вы должны прочитать о «html escaping». Ну, на самом деле вы _have to_, ​​так как без вас вы столкнетесь с гораздо большими проблемами, такими как другие люди, которые делают с вашей системой все, что захотят. Другими словами: у вас есть серьезная проблема безопасности, которую вы должны исправить. – arkascha

ответ

3

Вам нужно будет кодировать внутренние теги, как так:

<textarea>&lt;textarea&gt;Hello World.&lt;/textarea&gt;</textarea>

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

+0

Удивительный! Просто попробовал htmlspecialchars(), и он работает. Спасибо! – user3776212

0

Вам следует избегать символов, составляющих тег, если вы не хотите, чтобы это был тег.

<textarea><textarea>Hello world.&#60/textarea> 

Или как BoltClock сделал, esacpe все специальные символы.

<textarea>&lt;textarea&gt;Hello World.&lt;/textarea&gt;</textarea> 
Смежные вопросы