У меня есть простая страница комментариев пользователя ввести текст в текстовое поле и кнопку удара комментария отправить комментарий на страницу PHP:Как сохранить апостроф в базу данных MySQL из пользовательского ввода?
<?php
$reply = strip_tags($_POST['reply']);
$comment_id = strip_tags($_POST['id']);
$id = strip_tags($_POST['user_id']);
$date = strip_tags($_POST['date']);
$time = strip_tags($_POST['time']);
$server_root = "./";
if(file_exists("{$server_root}include-sql/mysql.class.php"))
{
include_once("{$server_root}include-sql/mysql.class.php");
}
include_once("{$server_root}config.php");
$db1;
$db1 = new db_mysql($conf['db_hostname'],
$conf['db_username'],
$conf['db_password'],
$conf['db_name']);
$db1->query("SET NAMES utf8");
$current_server_date = date('Y-m-d H:i:s');// Your local server time
date_default_timezone_set('Asia/Istanbul');
$current_pc_date = date('Y-m-d H:i:s');
$sql = $db1->query(
'INSERT INTO replies1 (reply, comment_id, date, time, timestamp, user_id)
VALUES ("$reply", $comment_id, "$date", "$time", "$current_pc_date", $id)');
?>
проблема: когда пользователь ввести любой комментарий с апостроф его не хранит его в базе данных? почему это произошло? У моего кода что-то не так? Я добавил все двойные кавычки и stripe_tags.? я что-то пропустил?
Вы пытались использовать mysqli_real_escapre_string()? – Martin
Это связано с тем, что все значения отправлены в запрос без фильтрации и неэкранированы. 'strip_tags()' предназначен для дезактивации HTML для вывода позже, но не делает ничего, чтобы избежать или дезинформировать ввод базы данных. В приведенном выше вопросе подробно рассмотрены ваши варианты исправления (что является уязвимостью SQL-инъекции); –