У Textfield проблемы с синтаксическим анализом его значения?

#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() вернет одинарную или двойную кавычку, ваш вводимый текст будет нарушен.