[英]Escape apostrophe before submit POST
我有一组从database
加载的checkboxes
。 这些都是歌曲,因此其中有些带有撇号。 单击使用method=post
submit
,所有内容都会发布到下一页,但是带有撇号的歌曲并不完整。 它在撇号之前中断。
例: Can't Breathe
变成Can
PHP:
if(isset($_POST['submit'])){
if(isset($_POST['chk_album'])){
foreach($_POST['chk_album'] as $key=>$val){
echo $val;
}
}
}
HTML:
<input type="checkbox" name="chk_album[]" data-album="echo" value="Can't Breathe">
SQL:
$dbQuery = "SELECT * FROM $album";
$dbResult = mysqli_query($dbCon, $dbQuery) or die("Error");
while ($row = mysqli_fetch_assoc($dbResult)) {
$id = $row["Id"];
$title = addslashes($row["Title"]);
$album = $row["Album"];
echo "<input type='checkbox' name='chk_album[]' value='" . $title . "' />";
}
我确实尝试在Google上寻找答案,但是找不到与我的问题有关的任何东西。 我认为。
在获取文本字符串并将其插入HTML文档时,请使用htmlspecialchars()
使其安全并转换具有特殊含义的字符。
PHP假定你将分隔与属性值"
,这样就不会转换'
在默认情况下,你可以通过一个额外的标志处理这个。
$html = htmlspecialchars($text, ENT_QUOTES);
从而:
$html_title = htmlspecialchars($title, ENT_QUOTES);
echo "<input type='checkbox' name='chk_album[]' value='" . $html_title . "' />";
(并删除$title = addslashes($row["Title"]);
因为addslashes
永远不是解决任何问题的好方法,而只是在这里将奇怪的字符放入数据中)。
尝试这个:
<input type="checkbox" name="chk_album[]" data-album="echo" value="Can\'t Breathe">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.