Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
Php 编码URL导致来自浏览器的禁止消息的奇怪问题_Php_Javascript_Internet Explorer - Fatal编程技术网

Php 编码URL导致来自浏览器的禁止消息的奇怪问题

Php 编码URL导致来自浏览器的禁止消息的奇怪问题,php,javascript,internet-explorer,Php,Javascript,Internet Explorer,为一些奇怪的事情做好准备。以下内容在Firefox中运行良好: 正在重定向到此URL: http://localhost/webs/van/front-end/slr/edit_rule.php?rule_name=test&rule_type=alloc_ext&copy=1 但是,它在IE8中不起作用,因为它将上述内容转换为以下内容,请注意结尾地址中的版权符号: http://localhost/webs/van/front-end/slr/edit_rule.php?ru

为一些奇怪的事情做好准备。以下内容在Firefox中运行良好:

正在重定向到此URL:

http://localhost/webs/van/front-end/slr/edit_rule.php?rule_name=test&rule_type=alloc_ext&copy=1
但是,它在IE8中不起作用,因为它将上述内容转换为以下内容,请注意结尾地址中的版权符号:

http://localhost/webs/van/front-end/slr/edit_rule.php?rule_name=test&rule_type=alloc_ext©=1
所以,我觉得很奇怪,让我们来看看这个:

window.location.href = 'edit_rule.php%3Frule_name%3Dtest%26rule_type%3Dalloc_ext%26copy%3D1';
Firefox和IE8现在都给了我一条禁止的消息

您没有访问/webs/van/front-end/slr/edit_rule.php的权限?此服务器上的rule\u name=test2&rule\u type=alloc\u ext©=1

我不明白,发生了什么事


谢谢大家的帮助。

&
需要进行编码,而不是URI编码。具体地说,将其替换为
&


从技术上讲,IE8的行为是错误的,因为
©
缺少结尾的分号,使其成为HTML编码的字符。

&
需要进行编码,而不是URI编码。具体地说,将其替换为
&


从技术上讲,IE8的行为是错误的,因为
©
在末尾缺少分号,使其成为HTML编码字符。

IE8很可能试图更改并复制为版权符号-
©>)
更改参数名称将是一个简单的修复方法


我还看到您在规则名称前的问号后发布的错误消息中有一个空格,可能是它引起了一些奇怪。

IE8很可能试图更改并复制到版权符号-
©>)
更改参数名称将是一个简单的修复方法



我还看到您在规则名称前的问号后发布的错误消息中有一个空格,可能是它引起了一些误解。

©
是版权符号的HTML实体:©;Internet Explorer是Microsoft的一种产品,它试图用帮助来阻碍您,将不完整的实体转换为完整的实体,而此时它将造成最大的损害。@Robusto您完全正确,但为了公平起见,请使用适当的
&是W3C有效的解决方法。我想我可能只是让它使用
encodeURI
而不是
encodeURIComponent
@Pekka:一个很好的观点,这就是为什么当我使用Javascript构建查询字符串时,我倾向于在数组中创建它们,然后用“&”字符连接它们。文本字符串可能有问题,如本例所示。
©
是版权符号的HTML实体:©;Internet Explorer是Microsoft的一种产品,它试图用帮助来阻碍您,将不完整的实体转换为完整的实体,而此时它将造成最大的损害。@Robusto您完全正确,但为了公平起见,请使用适当的
&是W3C有效的解决方法。我想我可能只是让它使用
encodeURI
而不是
encodeURIComponent
@Pekka:一个很好的观点,这就是为什么当我使用Javascript构建查询字符串时,我倾向于在数组中创建它们,然后用“&”字符连接它们。文字字符串可能会有问题,如本例所示。我刚刚尝试了一下,得到了相同的消息。禁止的消息现在显示为
&
@Abs您需要删除
encodeuri组件
。这仅适用于组件,不能使用it@Pekka-啊,我明白了!这是可行的,我想我现在必须转换这个URL,因为PHP无法选择GET变量。为什么要对符号进行编码?它被用作“复制”查询字符串变量的分隔符。如果它是变量名或值的一部分,则需要对其进行编码。听起来更改名称以消除bug是最好的主意。@R.Bemrose:在他的例子中,他是从javascript设置的,不需要在javascript代码中编码html字符。所以我不认为你在解决问题的原因,我认为你也在解决问题。我认为真正的原因是IE8对url的错误处理;我只是试了一下,得到了同样的信息。禁止的消息现在显示为
&
@Abs您需要删除
encodeuri组件
。这仅适用于组件,不能使用it@Pekka-啊,我明白了!这是可行的,我想我现在必须转换这个URL,因为PHP无法选择GET变量。为什么要对符号进行编码?它被用作“复制”查询字符串变量的分隔符。如果它是变量名或值的一部分,则需要对其进行编码。听起来更改名称以消除bug是最好的主意。@R.Bemrose:在他的例子中,他是从javascript设置的,不需要在javascript代码中编码html字符。所以我不认为你在解决问题的原因,我认为你也在解决问题。我认为真正的原因是IE8对url的错误处理;这只是我的复制和粘贴,没有空格或换行。抱歉。这只是我的复制和粘贴,没有空格或换行符。道歉。