2010-04-01 5 views
0

У меня есть следующий код:Проблема с двойными кавычками и ввода

<input type="text" value="<?php echo $_GET['msg']; ?>"> 

Этот вход автоматически заполняется именем, которое записано на предыдущей странице. Итак, если пользователь написал: мне нравится «яблоки» и банан Ввод будет сломан, потому что он закроет тег после двойных кавычек. Я знаю, что могу избежать этого путем html, дающего значение, но я не хочу этого, есть ли другое решение или есть < < < EOD в html?

Благодаря

ответ

2

htmlentities()/htmlspecialchars() является стандартным способом для этого. Вы должны использовать его.

Вы всегда можете декодировать объекты, прежде чем отправлять их по E-Mail, или сделать что-то еще с ними, используя html_entity_decode().

2

Вы должны использовать функцию htmlspecialchars, чтобы избежать вывода для HTML:

<input type="text" value="<?php echo htmlspecialchars($_GET['msg']); ?>"> 

Примечание: Вы, возможно, придется добавить некоторые additionnal параметры, если вы не используете ISO-8859-1 в кодировка; например, с UTF-8:

<input type="text" value="<?php echo htmlspecialchars($_GET['msg'], ENT_COMPAT, 'UTF-8'); ?>"> 
1

Одна из функций вызовет какие-то проблемы.

я придумал следующее держать амперсанд:

<input type="text" value="<?php echo parseString($_GET['msg']); ?>"> 
<?php 
function parseString($str) { 
    $result=str_replace('"','&quot;',$str); 
    $result=str_replace("'","&#39;",$result); 
    return $result; 
} 
+0

Мне интересно, почему вы создали эту функцию вместо того, чтобы использовать встроенный 'htmlspecialchars', как было указано в предыдущем (правильно) ответы. – Charles

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