Как передать апострофии из текстовых областей в MySQL с помощью PHP

У меня есть текстовая область, которую пользователи добавляют в заметки. На следующей странице я использую $_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>