首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript中数据库字段中的撇号

问javascript中数据库字段中的撇号
EN

Stack Overflow用户
提问于 2018-09-11 02:37:06
回答 1查看 247关注 0票数 0

在使用PHP和Javascript应用程序处理表单数据时,我犯了一个新手错误,在这个应用程序中,我没有预料到并支持文本字段中的撇号(')。

更麻烦的是,在一个多万行的应用程序中,我使用单引号或‘’将包含html的变量和可能包含这个表中的撇号的变量括起来,而不是使用引号(“")和转义HTML。

在使用$_POST函数串函数修改输入到MySQL数据中的串函数数据之前,该函数仍然使用撇号存储文本,不使用斜杠。然后修改每个用撇号定义变量的实例,并将其更改为引号(“"),然后转义,我想在这里询问是否遗漏了什么。

下面是我可以使用上面的PHP/Mysql函数对$_POST数据进行处理的一个例子

$db->real_string($_POST "name“),其中数据库中的”name“= O'Brien存储为O'Brien,而不是O‘Brien

当我将这些数据读入前端时,它是这样做的:

​

代码语言:javascript
复制
var options = '<option value="<?php echo $row[$name];?>" selected><?php echo $row[$name];?></option>';

​

在这些情况下,当名称包含一个撇号时,javascript控制台会抛出一个错误"Uncaught SyntaxError:缺失)后边的参数列表“,这是有意义的。

我希望就如何用最低的精力/时间来解决这个问题提出建议,但是这样做是正确的,在将来使用撇号或甚至引号时不会引起任何问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-11 03:15:00

您应该使用准备好的语句,并将查询参数化,而不是转义(以及交换引号类型,我不清楚为什么要这样做)。

然而,这些方法与您当前的问题无关。目前,您正在体验的影响,不正确的封装时,输出,并将开放给XSS注入。您应该使用http://php.net/manual/en/function.htmlspecialchars.php输出到浏览器。

代码语言:javascript
复制
 var options = '<option value="<?php echo htmlspecialchars($row[$name], ENT_QUOTES);?>" selected><?php echo htmlspecialchars($row[$name] , ENT_QUOTES);?></option>';

但是您也应该阅读,Data.3F,因为您使用的是JS,而不是HTML,所以这可能是不够的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52267927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档