【发布时间】:2014-04-21 14:31:04
【问题描述】:
我的所有表单都出现了这个问题。如果在描述中,用户有 & 符号,页面将显示带有值的 INSERT 语句,但不会继续或发送电子邮件。
例如:
“快速的棕色狐狸跳过狗&猫”是行不通的。
“快速的棕色狐狸跳过狗和猫”会起作用。
在其中一页上插入语句:
$filename = $_GET['filename'];
$size = $_GET['filesize'];
$date = $_GET['filedate'];
$user = $loggedin_id;
$desc = mysqli_real_escape_string($dbc3, $_GET['desc']);
$type = $_GET['type'];
$ver = $_GET['ver'];
$rev = $_GET['rev'];
$sql = "SELECT lineup FROM cad_files WHERE job_num = $job_id AND file_type = '$type' ORDER BY date DESC LIMIT 1";
$result = mysqli_query($dbc3, $sql);
if(mysqli_num_rows($result) < 1){
$prev_lineup = 0;
} else {
$prev_file = mysqli_fetch_assoc($result);
$prev_lineup = $prev_file['lineup'];
}
//$type = getcadtype($type);
$job_id = getjobid($job_num, $dbc3);
$sql = "INSERT INTO cad_files(job_num, user, file_name, file_type, version, revision, date, size, description) VALUES($job_id, '$user', '$filename', '$type', '$ver', '$rev', '$date', '$size', '$desc')";
// echo $sql;
mysqli_query($dbc3, $sql) or die(mysqli_error($dbc3));
$id = mysqli_insert_id($dbc3);
我该如何解决这个问题?
错误:
警告:simplexml_load_string():实体:第 9 行:解析器错误: xmlParseEntityRef:没有名称 /home/xxxxx/public_html/main/includes/mail2.php 在第 15 行
警告:simplexml_load_string():
说明:
/home/xxxxx/public_html/main/includes/mail2.php 在第 15 行
插入 3a 和 3b 已修改警告:simplexml_load_string(): ^ in /home/xxxxxx/public_html/main/includes/mail2.php 在第 15 行
可捕获的致命错误:传递给 simpleXMLToArray() 的参数 1 必须是 SimpleXMLElement 的一个实例,给定的布尔值,在 /home/xxxxxx/public_html/main/includes/mail2.php 在第 15 行和 定义在 /home/xxxxxx/public_html/main/includes/functions.php 上 第 354 行
【问题讨论】:
-
所有输入在插入数据库之前都应该得到保护。如果您想要查询中的所有值:
$_GET = array_map('mysqli_real_escape_string', $_GET) -
mysqli_real_escape_string()使用这个 -
@AwladLiton 他这样做了,但不是到处都有。使用 PreparedStatements 会好很多
-
@AwladLiton 它用于描述? $desc = mysqli_real_escape_string($dbc3, $_GET['desc']);