我有以下网址:http://some_URL/file/?var1=../dir/page.php&var2=value2
假设 var1 用于重定向到另一个页面(此处为page.php
), var2 的值是否会应用于当前页面(在我按下ENTER之前,还是应用于page.php
?
答案 0 :(得分:1)
如果我正确理解你的问题,你会问,查询字符串上的参数是否会自动从第一个脚本传递到第一个脚本重定向到的脚本。
答案是否定的,不是自动的。
查询字符串将传递给第一个脚本,该脚本将在$ _GET数组中接收这两个参数。
第一个脚本
<?php
$var1 = $_GET['var1'];
$var2 = $_GET['var2'];
现在,如果您想重定向到var1
参数中标识的脚本并将var2
传递给该脚本,则必须将其添加到重定向调用中,如此
header("Location: $var1?var2=$var2");
因此,如果var1
为../dir/page.php
且var2
为value2
,则会扩展为
header("Location: ../dir/page.php?var2=value2");
或者,如果第一个脚本本身是一个带有表单的可见页面,您可以使用隐藏的输入将参数传递给下一个脚本
<?php
$var1 = $_GET['var1'];
$var2 = $_GET['var2'];
?>
<form action="<?php echo $var1;?> ........>
<input type="hidden" name="var2" value="<?php echo $var2;?>">
当然使用未经验证的查询字符串参数是危险的,因此
$_GET
数组中的任何内容都需要进行健全性检查才能在任何内容中使用
答案 1 :(得分:0)
&
字符分隔键=值对。第一个&
之后的所有内容都不会成为var=1
的值的一部分。
使用percent encoding将特殊字符作为数据包含在网址中。
答案 2 :(得分:0)
因此,var2
将在当前页面中提供。要使其在page.php中可用,请获取var2
变量并在重定向之前将其附加到新网址。