Как правильно закодировать форму в php - PullRequest
0 голосов
/ 12 апреля 2011

На мой сайт пользователи могут добавлять контент в базу данных через форму. Я хочу, чтобы пользователи могли печатать что-либо в форме и чтобы все это было добавлено в базу данных, как они ее ввели. В настоящий момент у меня возникают проблемы с количеством символов, а именно с косыми чертами, &,? и т.д.

Каков наилучший способ разрешить правильное добавление всех символов в базу данных?

Кроме того, нужно ли их декодировать при отображении, чтобы он работал правильно? Если да, то как мне это сделать?

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

При сохранении используйте mysql_real_escape_string (или PDO ) для защиты от атак SQL-инъекций.Это позволит писать кавычки и обратную косую черту, не разрушая SQL-запрос.

<?php
$text = mysql_real_escape_string($_POST['text']);
mysql_query('INSERT INTO table(text) VALUES("'.$text.'")');
?>

При печати данных в браузер (с эхом) сначала запустите его через htmlspecialchars , чтобы отключитьHTML и решить вашу текущую проблему:

<?php
// ...fetch $text from db here...
echo htmlspecialchars($text);
?>
0 голосов
/ 12 апреля 2011

htmlentities () может помочь вам кодировать и декодировать html символов:

Вы также можете использовать nl2br () , чтобы сохранить разрывы строк от элементов textarea:

Кроме того, вы должны использовать PDO для нужд вашей базы данных, поскольку она намного более безопасна, чем старый метод экранирования данных, mysql_real_escape_string ()

...