Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ajax post到php的撇号问题_Php_Javascript_Ajax - Fatal编程技术网

ajax post到php的撇号问题

ajax post到php的撇号问题,php,javascript,ajax,Php,Javascript,Ajax,我正在用jQueryAjax将数据发布到php中,但如果输入中有”,则不会发布数据。我尝试了encodeURIComponent,但不起作用 有什么想法吗 谢谢 编辑: 我的代码 尝试使用get\u magic\u quotes\u gpc()检查服务器上的magic quotes设置。如果它是打开的,在使用mysql\u real\u escape\u string()之前,您需要去掉斜杠() 查看文档中的示例。尝试使用get\u magic\u quotes\u gpc()检查服务器上的ma

我正在用jQueryAjax将数据发布到php中,但如果输入中有
,则不会发布数据。我尝试了
encodeURIComponent
,但不起作用

有什么想法吗

谢谢

编辑: 我的代码


尝试使用
get\u magic\u quotes\u gpc()
检查服务器上的magic quotes设置。如果它是打开的,在使用
mysql\u real\u escape\u string()
之前,您需要
去掉斜杠()


查看文档中的示例。

尝试使用
get\u magic\u quotes\u gpc()
检查服务器上的magic quotes设置。如果它是打开的,在使用
mysql\u real\u escape\u string()
之前,您需要
去掉斜杠()


查看文档中的示例。

如果禁用了
magic\u quotes\u gpc
,为什么要在查询中删除斜杠

尝试:


如果您使用POST,在传递数据之前不需要转义数据,但是在mysql的代码中使用斜杠会导致任何撇号的问题,因为这样您的sql就不会转义。

如果禁用了
magic\u quotes\u gpc
,为什么要在查询中取消斜杠

尝试:


如果您使用POST,在传递数据之前不需要转义数据,但是在mysql代码中使用stripslashes会导致任何撇号出现问题,因为这样您的sql就不会转义。

encodeURIComponent不编码撇号,请尝试以下操作:

encodeURIComponent(str).replace("'", "%27");

encodeURIComponent不编码撇号,请尝试以下操作:

encodeURIComponent(str).replace("'", "%27");

这就是我解决问题的原因。由于JavaScript encodeURIComponent()函数不将撇号编码为%27,因此我自己使用自己的replaceAll()函数进行了编码

JS片段:

name = encodeURIComponent(name.replaceAll("'", '%27'));
这是我的实用工具JS文件中的replaceAll()函数:

String.prototype.replaceAll = function(f, r, no_escape) {
    var rexp = new RegExp(Util.EscapeRegExp(f), 'g');
    if (no_escape) { rexp = new RegExp(f, 'g'); }
    return this.replace(rexp, r);
};
$name = str_replace('%27', "'", urldecode($_POST['name'] ) );
出于我的目的,我需要撇号不再是%27,PHP函数urldecode()也不做撇号,所以我使用str_replace()来处理这个问题

PHP代码片段

String.prototype.replaceAll = function(f, r, no_escape) {
    var rexp = new RegExp(Util.EscapeRegExp(f), 'g');
    if (no_escape) { rexp = new RegExp(f, 'g'); }
    return this.replace(rexp, r);
};
$name = str_replace('%27', "'", urldecode($_POST['name'] ) );

这就是我解决问题的原因。由于JavaScript encodeURIComponent()函数不将撇号编码为%27,因此我自己使用自己的replaceAll()函数进行了编码

JS片段:

name = encodeURIComponent(name.replaceAll("'", '%27'));
这是我的实用工具JS文件中的replaceAll()函数:

String.prototype.replaceAll = function(f, r, no_escape) {
    var rexp = new RegExp(Util.EscapeRegExp(f), 'g');
    if (no_escape) { rexp = new RegExp(f, 'g'); }
    return this.replace(rexp, r);
};
$name = str_replace('%27', "'", urldecode($_POST['name'] ) );
出于我的目的,我需要撇号不再是%27,PHP函数urldecode()也不做撇号,所以我使用str_replace()来处理这个问题

PHP代码片段

String.prototype.replaceAll = function(f, r, no_escape) {
    var rexp = new RegExp(Util.EscapeRegExp(f), 'g');
    if (no_escape) { rexp = new RegExp(f, 'g'); }
    return this.replace(rexp, r);
};
$name = str_replace('%27', "'", urldecode($_POST['name'] ) );

我们可以得到客户机/服务器代码片段吗?当您使用post方法时,为什么要对字符串进行编码?只有在使用get时才需要这样做。如果输入有&%chars,则出现了一些问题,这就是我编码的原因。我们可以使用客户端/服务器代码段吗?当使用post方法时,为什么要对字符串进行编码?如果输入有&%chars,就发生了一些问题,这就是为什么我要编码Damn,我在javascriptdamn中找不到任何关于转义撇号的内容,我在javascript中找不到任何关于转义撇号的内容“如果使用POST,在传递数据之前不需要转义”但如果我不逃进去,特殊的角色会破坏阿贾克斯javascript@Ahmetvardar这就是你所有的代码吗?您在js中使用了
encodeURIComponent
,但在php中使用了斜杠
encodeURIComponent
使用十六进制代码而不是斜杠对数据进行编码,那么为什么要去掉斜杠呢。通过剥离斜杠,您将非转义数据传递给mysql,这将导致它在使用撇号时中断,更不用说mysql注入问题了。好的,我用mysql\u real\u escape\u字符串替换了剥离斜杠,在js中,我将其作为temp。解决方案名称=名称。替换(“,”);“如果您使用的是POST,那么在传递数据之前不需要转义它”,但是如果我没有转义,那么特殊的字符会破坏ajaxjavascript@Ahmetvardar这就是你所有的代码吗?您在js中使用了
encodeURIComponent
,但在php中使用了斜杠
encodeURIComponent
使用十六进制代码而不是斜杠对数据进行编码,那么为什么要去掉斜杠呢。通过剥离斜杠,您将非转义数据传递给mysql,这将导致它在使用撇号时中断,更不用说mysql注入问题了。好的,我用mysql\u real\u escape\u字符串替换了剥离斜杠,在js中,我将其作为temp。解决方案名称=名称。替换(“,”);