繁体   English   中英

提交POST前转义撇号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM