我的表单中有两个输入。
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查询。任何帮助都很明显。
答案 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"
}