我正在阅读一个剧本,但我仍然坚持理解这个:
$redirect = base64_decode($_REQUEST['redirect']);
header("Location:$redirect");exit;
因为REQUEST中的重定向变量未在脚本中的任何位置定义。在此之前已经填写了一个POST表单,但是在脚本的任何地方都没有提到重定向变量,所以我很困惑它是如何不是空的......
编辑:
这是下面的表单代码。顺便说一下,“重定向”这个词并没有出现在剧本的任何地方,这让我感到困惑。
<form name="login" action="{$baseurl}/login" method="post">
{$lang12}
<input type="text" name="username" />
{$lang11}
<input type="password" name="password" />
<input type="submit" value="{$lang18}" />
<div class="test"><a href="{$baseurl}/signup"><b>{$lang30}</b></a> - <a href="{$baseurl}/password">{$lang19}</a></div>
<input type="hidden" name="authenticate" value="1" />
</form>
</div>
$ lang的东西通常是从数组中出现的单词,例如login等。
答案 0 :(得分:1)
$ _ REQUEST
默认情况下的关联数组 包含
$_GET
,$_POST
的内容 和$_COOKIE
。
因此,如果您有$_POST['redirect']
,$_GET['redirect']
或$_COOKIE['redirect']
,则会定义$_REQUEST['redirect']
。试着把:
var_dump($_POST['redirect']);
var_dump($_GET['redirect']);
var_dump($_COOKIE['redirect']);
了解它的来源。
答案 1 :(得分:1)
如果没有看到实际的代码,我认为这是不可能的,但$_REQUEST包含$_GET
,$_POST
和$_COOKIE
中的所有变量。< / p>
如果某个表单的方法设置为“post”且其操作是带有url编码变量的url,则该表单实际上可以填充$_GET
和$_POST
。因此,表单可能会将其所有数据发布到URL,然后将get变量添加到该URL的末尾。例如:
<form method='post' action='example.php?var=test'>
<input name='var2' id='var2' />
</form>
如果提交了该表格,将定义以下内容:$_POST['var2'], $_GET['var'], $_REQUEST['var2'], $_REQUEST['var']
。
$_COOKIE
也可以将隐藏变量放在$ _REQUEST中。
答案 2 :(得分:0)
重定向变量很可能是一个cookie。如果你在表格中找不到它。
var_dump($_REGISTER);
将列出与POST,GET和COOKIES关联的所有输入变量。
答案 3 :(得分:0)
如果它不是空的,它的内容是什么?
我认为它应该是这样的......
$redirect = base64_decode($_GET['redirect']);
if(!empty($redirect){
header("Location: $redirect");
exit;
}
它不在脚本中并不重要,你可以通过GET设置它, 例如/yourform.php?redirect=index.php
是否导致不必要的重定向?