我有一個簡單的評論頁面,用戶輸入文本到文本區域和命中評論按鈕發送到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注入漏洞); –