Я делаю цитаты и фразы на сайте.Я хочу опубликовать эти цитаты и запретить <script>
или аналогичные <html tags>
, в настоящее время я использую следующий запрос для публикации и отправки этих данных в базу данных
mysql_query("INSERT INTO `phrases`
(`id`, `text`, `date`, `views`, `ip`, `reported`, `strange`, `lang`)
VALUES (NULL, '$quote', '$date', '0', '$ip', '0', '0', 'en')
");
, используя следующий код PHP
<?php
$date = date('Y-m-d H:i:s', time());
$quote = $_POST["quote"];
$ip = $_SERVER['REMOTE_ADDR'];
//The query above
?>
Но у меня возникают следующие проблемы:
ЗАВЕРШЕНО : отметка времени не отображается правильно.
Я получаю несколько символов без экранирования.
Например, я пытаюсь опубликовать это:
<Ω∑©√ß µ„…–å∫∂ƒ™¶§ ~{}œæ€®†¥ øπ[]
Если я отправлю это as is
, оно отправит
<Ω∑©√ß µ„…–å∫∂ƒ™¶§ ~{}œæ€®†¥ øπ[]
Если я использую mysql_real_escape_string($quote)
, оно отправит
<Ω∑©√ß µ„…–å∫∂ƒ™¶§ ~{}œæ€®†¥ øπ[]
И если я использую htmlspecialchars(nl2br(stripslashes($quote)))
, он отправляет
<Ω∑©√ß µ„…–å∫∂ƒ™¶§ ~{}œæ€®†¥ øπ[]
Меня предупредили, что это уязвимо для SQL-инъекций
Как я могу предотвратить это?
В качестве дополнительной информации это вызывается через AJAX.