Я знаю, что должен использовать htmlentities для всех полей ввода текста формы, но это не работает:
<?php
echo "<tr>
<td align=\"right\">".Telephone." :</td>
<td><input type=\"text\" name=\"telephone\" size=\"27\"
value=\"htmlentities($row[telephone])\"> Inc. dialing codes
</td>
</tr>";
?>
Он просто показывает входное значение как «htmlentities (0123456789)» в форме? Что я сделал не так, пожалуйста?






попробуйте использовать
value=\"" . htmlentities($row[telephone]) . "\"
там. В настоящее время ваша строка просто содержит строку htmlentities и соединяет переменную. Вам нужно извлечь строку, вызвать функцию и поместить результат на место, как указано выше.
+ - это не оператор concat в PHP, это.
должно быть: значение = \ "". htmlentities ($ row [телефон]). "\"
изменилось ... прошло много времени с тех пор, как я использовал настоящий PHP :)
Вы не можете вызвать функцию в середине строки. Вам нужно получить возвращаемое значение из вызова функции, а затем включить его в строку.
Тем не мение...
<tr>
<td align = "right">
<label for = "telephone">Telephone:</label>
</td>
<td>
<input type = "text"
name = "telephone"
id = "telephone"
size = "27"
value = "<?php
echo htmlentities($row[telephone]);
?>">
Inc. dialing codes
</td>
</tr>
... было бы чище.
Как и избавление от устаревшей презентационной разметки и использования таблиц для макета.
Прежде всего, не выводите HTML-код в строку. Отделите код от разметки.
<tr>
<td align = "right">Telephone :</td>
<td><input type = "text" name = "telephone" size = "27"
value = "<?php echo htmlentities($row['telephone']); ?>"> Inc. dialing codes</td>
</tr>
Его HTML-код находится внутри строки PHP, поэтому теги не работают. Кроме того, использование коротких тегов ("<? =?>") - плохая идея, поскольку они должны быть включены в php.ini, к которому у вас может не быть доступа.
Верно, я удалил короткие теги. Однако не следует помещать разметку в строку, обратите на это внимание.
Конечно, его HTML внутри тегов PHP будет работать, потому что у него есть эхо.
@ workmad3: это не сработает, поскольку он работает с PHP.
<?php echo '<tr>
<td align = "right">' . Telephone . ' :</td>
<td><input type = "text" name = "telephone" size = "27" value = "' . htmlentities($row[telephone]) . '" /> Inc. dialing codes</td>
</tr>';
Это будет работать:
<?php
echo " <tr>
<td align=\"right\">Telephone :</td>
<td><input type=\"text\" name=\"telephone\" size=\"27\" value=\"".htmlentities($row[telephone])."\"> Inc. dialing codes</td>
</tr>";
?>
Кстати, я также исправил очень странный синтаксис, который у вас здесь происходит, например, когда вы объединяете константу «Телефон», которая действительно должна быть внутри строки. Такие детали важны и легко сломают ваш код.
Кроме того, я предлагаю использовать одинарные кавычки вместо двойных вокруг такой строки, чтобы вам не приходилось экранировать все двойные кавычки внутри строки.
если вы просто хотите сделать ваш вывод безопасным в HTML; Вместо этого вам следует использовать htmlspecialchars (), поскольку это «всего лишь» телефонный номер.
htmlspecialchars($row[telephone], ENT_QUOTES);
htmlentities () работает немного медленнее и хуже работает с многобайтовыми символами. Но я полагаю, ты не справишься с этими проблемами просто на самолете.
Я согласен, нужен только htmlspecialchars. конечно, я надеюсь, что вы тоже реализуете utf-8.
Если вы хотите объединить большой раздел переменных HTML и PHP, вы можете сделать две вещи.
Во-первых, используйте конструкцию HEREDOC.
$txt = <<<HERETEXT
Put your HTML here.
HERETEXT;
echo $txt;
Во-вторых, используйте переменную первого класса для имени функции, а затем используйте ее в HEREDOC.
$he = 'htmlentities';
$txt = <<<HERETEXT
{$he($string, ENT_QUOTES, 'UTF-8')}
HERETEXT;
echo $txt;
Однако HTML не следует обрабатывать очень большими фрагментами из-за увеличения риска серьезных ошибок. Кроме того, вы можете без надобности повторяться.
Вы должны использовать htmlspecialchars, а не htmlentities. конечно, пока вы реализуете utf-8.