特殊符号,如“;”导致来自 PHP POST 的 JS 代码出现问题

问题描述 投票:0回答:0

我有一个表单,用户可以在其中插入文本。此文本被提交到我的 PHP 脚本,以使用如下准备好的语句将其写入 SQL 数据库:

$id = $_POST['id'];
$chapter_description = htmlspecialchars($_POST['chapter_description']);

$statement = $pdo->prepare("UPDATE questionaire_chapter SET chapter_description = :chapter_description WHERE id = :id");
$result = $statement->execute(array('id' => $id, 'chapter_description' => $chapter_description));

稍后我在我的 JS 代码中使用这个文本,通过这个解决方案将它提交到我的模态:

<a onclick="editModalChapter('<?=$row['chapter_description'])?>')" data-bs-toggle="modal" href="#editChapterModal">Edit</a></li>

我的 editChapterModal 函数看起来像这样:

<script> function editModalChapter (chapter_description) {
  event.preventDefault();
$('#edit_chapter_form').find('input[name="chapter_description"]').val(chapter_description);
$('#editChapterModal').modal('show');
}
</script>

只要用户不使用以下符号,此方法就有效:' 或 ; (或者也可能是另一个idk)。因为这会导致我的代码崩溃,如示例所示:

<li><a onclick="editModalChapter('sometext'')" data-bs-toggle="modal" href="#editChapterModal">Edit</a></li>

问题是生成的 ' 符号。

我正在寻找像 htmlspecialchars() 这样的解决方案,我可以在 PHP Post 中使用它来识别此类字符并在其之前添加一个 \。从中逃脱的 JS 函数对我来说不是解决方案,因为我想在将此文本写入 SQL 数据库之前解决问题。

javascript php sql special-characters
© www.soinside.com 2019 - 2024. All rights reserved.