URL斜杠'/'得到双重编码。更改为%252F而不是%2F

时间:2015-03-14 13:40:07

标签: php apache .htaccess

我的表单中有两个输入。

Input 1 value = '02/03/2015' // Both are date 

Input 1 value = '04/03/2015' // Both are date 

当我尝试通过GET或POST方法提交此表单时,我的vps上的url更改为此文件:

from_date=02%252F03%252F2015&to_date=05%252F03%252F2015

并在localhost:

from_date=04%2F03%2F2015&to_date=04%2F03%2F2015

实际上问题是'/'在VPS上的url中被双重编码,这破坏了我的SQL查询。任何帮助都很明显。

3 个答案:

答案 0 :(得分:3)

Apache中有一个bug(可能是2.2.2),它会对URL进行双重编码。

如果您无法更新Apache,请尝试更改.htaccess:

RewriteRule             /(.*)   http://localhost/$1        [NE,P,L]

NE标志表示:没有逃脱。

另一种解决方法是,您可以尝试将日期更改为使用JS发送数据时不使用斜杠的另一种格式:(例如:02-03-2015)

让我知道它是否有效。

答案 1 :(得分:1)

在将urldecode() PHP函数查询到数据库之前使用它。像那样:

<?php
$date1 = urldecode($_GET["from_date"]);
$date2 = urldecode($_GET["to_date"]);
?>

答案 2 :(得分:0)

您可以使用POST来避免这种情况:

<?php
var_dump( $_POST );
?>
<form action="55.php" method="POST">
<input type="text" name="input1" />
<input type="hidden" name="input2" value="02/03/2015" />
<input type="submit" />
</form>

array(2) {
  ["input1"]=>
  string(10) "02/03/2015"
  ["input2"]=>
  string(10) "02/03/2015"
}
相关问题