我的所有表单都出现了这个问题。如果在描述中,用户在其中具有&符号,则页面将显示带有值的INSERT语句,但不会继续或发送电子邮件。
例如:
"快速的棕色狐狸跳过狗& 这只猫"不行。
"快速的棕色狐狸跳过狗和猫#34;会工作的。
在其中一个页面上插入声明:
$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:没有名字 第15行/home/xxxxx/public_html/main/includes/mail2.php
警告:simplexml_load_string():&lt; p&gt;说明:&lt; br /&gt;&lt; b&gt;插入3a&amp; 3b修改&lt; / b&gt;&lt; / p&gt;在 第15行/home/xxxxx/public_html/main/includes/mail2.php
警告:simplexml_load_string():^ in 第15行/home/xxxxxx/public_html/main/includes/mail2.php
捕获致命错误:传递给simpleXMLToArray()的参数1必须是 SimpleXMLElement的一个实例,给定布尔值,调用 /home/xxxxxx/public_html/main/includes/mail2.php在第15行和 在/home/xxxxxx/public_html/main/includes/functions.php中定义 第354行
答案 0 :(得分:1)
因为您通过查询字符串(HTTP GET)发送所有内容,所以您应该在将变量发送到服务器之前对其进行转义。
使用javascript escape
函数对此类字符进行编码。 您还需要在服务器端解码它们。
答案 1 :(得分:1)
在转义后使用$ desc上的htmlspecialchars()解决它。
$desc = mysqli_real_escape_string($dbc3, $_GET['desc']);
$desc = htmlspecialchars($desc);
唯一的问题是它将其作为“&amp;”插入表中但这不是一个真正的问题,因为页面显示“&amp;”无论如何。我想现在必须这样做,我将根据每个人的建议确保其余的变量。