#php #html
#php #HTML
Вопрос:
Итак, я получил эту форму:
<form action="welcome.php" method="post">
<input type="hidden" name="secret" value=<?php echo getMyValue() ?> />
Name: <input type="text" name="txt" value=<?php echo getMyValue() ?> />
<input type="submit" />
</form>
Вы видите элемент ввода текста? Значение является результатом getMyValue()
. Таким результатом является строка, содержащая HTML-теги, такие <b> <i>
как и т.д… И, по-видимому, когда текст содержит такие теги, мой ввод текста прерывается. Если в тексте нет таких тегов, все в порядке.
Есть идеи по устранению этой проблемы с синтаксическим анализом? (не знаю, действительно ли он анализирует проблему …)
РЕДАКТИРОВАТЬ Вот код функции:
function getMyValue()
{
$con = mysql_connect("myConnectionDataStuff");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("myUsername", $con);
$result = mysql_query("SELECT * FROM DATA");
while($row = mysql_fetch_array($result))
{
return $row["TEXT"];
}
mysql_close($con);
Ответ №1:
Ваше значение должно быть заключено в кавычки. Он введет все правильно, если вы заключите это в кавычки, но теги не будут проанализированы; они просто будут «как есть» в текстовом поле.
Используйте этот код вместо:
<form action="welcome.php" method="post">
<input type="hidden" name="secret" value="<?php echo getMyValue() ?>" />
Name: <input type="text" name="txt" value="<?php echo getMyValue() ?>" />
<input type="submit" />
</form>
Комментарии:
1. Вы проверили, что именно возвращает getMyValue()? Либо опубликуйте исходный код для этой функции, либо опубликуйте точный ее вывод, HTML-теги и все остальное.
2. Хм, спасибо, но на самом деле это не помогает, поскольку я не знаю, что возвращается запросом. Просто повторите ответ на пустой странице и вставьте исходный код, пожалуйста. Тогда мы сможем определить, что происходит не так, при вводе его в текстовое поле.
3. Результат echo — ПРИВЕТ, МИР (уже выделен жирным шрифтом, теги были проанализированы)
4. И код, который я вам дал, не работает? Я только что протестировал его, и у меня все работает нормально…
5. Ошибка. Теперь текстовое поле работает должным образом. Но у меня проблема. <Тип ввода=»скрытое» имя =»секретное» значение =»<?php getMyValue() ?>»/> отправляет строку в welcome.php, где я повторяю его, но получаю пустое. Вот часть echo: <?php echo «$_POST[secret]»; ?>
Ответ №2:
вы могли бы использовать htmlspecialchars()
Name: <input type="text" name="txt"
value="<?php echo htmlspecialchars(getMyValue(),ENT_QUOTES) ?>" />
имейте в виду, если функция getMyValue() вернет одинарную или двойную кавычку, ваш вводимый текст будет нарушен.