2012-04-22 2 views
0

У меня есть скрытый ввод, который принимает название статьи. С заголовком, который имеет символ «&».Проблема AJAX, включающая & символ со строкой.

<input name="art" type="hidden" id="art" value="<?php echo $rew['art']; ?>"/> 

Когда я отправляю свою форму, $ _POST не регистрирует полный заголовок статьи. Он только доходит до точки, где был &, а остальное пустое.

Я хочу это: «Это & был».

Но я понимаю: «Это».

Как это сделать, чтобы при отправке формы я получил символ «&» и оставшийся контекст.

Я также ищу в базе данных. Моя проблема сейчас становится все остальные части титра после «&»

ответ

2

Вам нужно бежать HTML сущности через htmlspecialchars функции:

<input name="art" type="hidden" id="art" value="<?php echo htmlspecialchars($rew['art']); ?>"/> 

На основе обсуждения в комментариях ниже, вам также необходимо избежать амперсанда в URL-адресе, который вы генерируете для запроса Ajax. Вы можете сделать это в JavaScript с помощью функции encodeURIComponent:

var dataString = '&topic' + encodeURIComponent(topic); 
+0

Не забудьте указать кодировку символов. Вот некоторые чтения по этому вопросу: http://blog.astrumfutura.com/2012/03/a-hitchhikers-guide-to-cross-site-scripting-xss-in-php-part-1-how-not-to -use-htmlspecialchars-for-output-escaping/ –

+0

Я пробовал это. Это не сработает. Потому что даже когда он находится в формате &, он по-прежнему проходит через мою форму как &. Форма просто не хочет регистрировать этот символ. Это возможно, потому что это форма аякса? – Brian

+0

Это очень странно. Можете ли вы опубликовать вывод 'print_r ($ _ POST)', когда вы отправили эту форму, используя 'htmlspecialchars'? – Brandan

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