Я использую этот код для создания html
echo "<input type='button' onclick=\"myFunc('$param');\" />";
Все будет ОК, если $ param не содержит символ '
или "
. Как его реализовать для обработки этих ситуаций?
пс. mysql_real_escape_string ($ param) не будет работать корректно, когда пользователь введет "
.
Существует несколько функций, которые можно использовать:
<?php $string = 'string test"'; echo htmlentities($string) . "\n"; echo addslashes($string) . "\n";
Они производят следующее:
string test" string test\"
Если вы полагаетесь на ввод пользователя, используйте htmlentities($param, ENT_QUOTES);
Как сказал Дэмиен; использовать addlashes 🙂
$param=addslashes($param); echo "<input type='button' onclick=\"myFunc('$param');\" />";
Всякий раз, когда вы думаете о побеге, вам всегда нужно спросить
«В каком контексте я хочу убежать?»
Поскольку экранирование необходимо, чтобы убедиться, что вход не интерпретируется в специальном значении цели, но буквально
Не используйте addlashes, так как это бесконфликтный
Если вы вставляете строку в HTML, используйте
htmlspecialchars($argument, ENT_QUOTES)
как уже упоминалось.
Часть содержимого onclick представляет собой технический JavaScript, поэтому может оказаться целесообразным избежать содержимого с помощью json_encode (это побочный эффект – это экранирование JavaScript). Аналогично, если у вас есть атрибут стиля, вы хотите избежать содержимого с помощью
addcslashes($s, "\x00..\x2C./:;<=>?@[\\]^`{|}~")
Резюме
использование
$param = htmlspecialchars(json_encode($param), ENT_QUOTES)
а затем вы можете безопасно включить его в строку HTML
Передать переменную из htmlspecialchars($pram,ENT_QUOTES)
сначала сделайте
// only for the GUY who didn't read the complete answer :( $param=addslashes($param);
затем писать код в простой HTML
<input type='button' onclick="myFunc(<?php echo $param?>);" />
Примечание: mysql_real_escape_string
работает, когда мы обрабатываем mysqltry с помощью добавок
Это работает для меня …
echo '<a href="#" onclick="showTable(''.$table.'')">'.$table.'</a>';
Нет необходимости использовать backslaches для экранирования при использовании одиночной кавычки для эха. Одиночная цитата имеет мой голос для работы с тегами php и javascript + html.