У меня есть текстовая область, которую пользователи добавляют в заметки. На следующей странице я использую $_POST[Comments]
чтобы показать, что было напечатано. У меня есть кнопка редактирования, чтобы вернуться и посмотреть, что было напечатано и редактировать заметки, но когда я показываю $_POST[Comments]
он показывает все до апострофа.
Пример:
Первоначально набрал: Let's try this.
При редактировании: Let
Теперь, когда я передаю его серверу для добавления SQL, я использую следующую функцию для защиты от SQL-инъекций
function keepSafe($value) { if (get_magic_quotes_gpc()) { $value = stripslashes($value); } if (!is_numeric($value)) { $value = "'" . mysqli_real_escape_string($value) . "'"; } return $value; }
Следующее – это то, что я использую для форматирования ввода для вставки SQL.
$Comments = str_replace("\n","<br />",$_POST['CustComments']); $Comments = keepSafe($_POST['Comments']);
Мне нужно уметь видеть все апострофы в разделе примечаний при редактировании перед отправкой. И я хочу убедиться, что когда я действительно отправляю это, SQL-инъекция предотвратила безопасный код.
Проблема с апострофом:
Вероятно, вы используете такой ввод:
<input type='text' value='<?php echo $value;?>'/>
Проблема в том, что если значение имеет апостроф, это происходит:
<input type='text' value='Let's play'/>
Таким образом, тег значения заканчивается из-за апострофа в вашей переменной.
Чтобы исправить это, просто используйте htmlspecialchars с ENT_QUOTES:
<?php $value = htmlspecialchars("Let's play", ENT_QUOTES); ?> <input type='text' value='<?php echo $value; ?>'/>
Таким образом, апостроф будет закодирован и будет редактироваться в вашей форме
О внедрении SQL:
Просто используйте подготовленные заявления mysqli, и с вами все будет в порядке. Чтобы также держать вас в безопасности от XSS, всегда пользовательский ввод htmlspecialchars
HTML. Еще лучше отфильтровать входные данные только для того, что вам нужно, и сохранить только отфильтрованный вход в вашу базу данных.
Используйте htmlspecialchars()
при создании тега textarea:
<textarea><?=htmlspecialchars($_POST['Comments'])?></textarea>