PHP header 处理后的奇怪行为 URL
PHP header strange behaviour after processing URL
在我的网站上,我在 url 中使用了相当多的 GET 参数来加载特定页面。一些可用的操作涉及调用另一个 GET 参数以执行某些操作 (..&act=something
)。 PHP 包含此操作的文件包含在页面顶部。在这个包含的下面我有一些代码来检查 URL 是否有效,否则 header 会让你找到正确的代码。
假设我添加了一个玩家为好友。
要求 URL 例如:
?id=3&request=clan&act=add&target=5
.
所以按照这个 url 我应该进入 case: 'add'
部分然后被那个 header 重定向。但是我所拥有的是这个 header 被忽略了。相反,我通过检查部分重定向。更奇怪的是,添加的朋友出现在我的朋友列表中。为什么会这样?
<?php
if (isset($_GET['act'])) //this code is included
{
switch ($_GET['act'])
{
case 'add':
//do something
header('Location: /index.php?id='.$cuid.'&request=clan§ion=members');
break;
}
}
//some other code
if ($_GET['request'] == 'clan')
{
if ((!isset($_GET['section']) || ($_GET['section'] == '')) && ($c_guid != 0))
{
header('Location: /index.php?id='.$cuid.'&request=clan§ion=info');
}
}
?>
输出 header
并不会真正停止您的脚本!所有其他代码也是 运行 。如果您不想执行任何进一步的代码,则需要显式 exit
。
在我的网站上,我在 url 中使用了相当多的 GET 参数来加载特定页面。一些可用的操作涉及调用另一个 GET 参数以执行某些操作 (..&act=something
)。 PHP 包含此操作的文件包含在页面顶部。在这个包含的下面我有一些代码来检查 URL 是否有效,否则 header 会让你找到正确的代码。
假设我添加了一个玩家为好友。 要求 URL 例如:
?id=3&request=clan&act=add&target=5
.
所以按照这个 url 我应该进入 case: 'add'
部分然后被那个 header 重定向。但是我所拥有的是这个 header 被忽略了。相反,我通过检查部分重定向。更奇怪的是,添加的朋友出现在我的朋友列表中。为什么会这样?
<?php
if (isset($_GET['act'])) //this code is included
{
switch ($_GET['act'])
{
case 'add':
//do something
header('Location: /index.php?id='.$cuid.'&request=clan§ion=members');
break;
}
}
//some other code
if ($_GET['request'] == 'clan')
{
if ((!isset($_GET['section']) || ($_GET['section'] == '')) && ($c_guid != 0))
{
header('Location: /index.php?id='.$cuid.'&request=clan§ion=info');
}
}
?>
输出 header
并不会真正停止您的脚本!所有其他代码也是 运行 。如果您不想执行任何进一步的代码,则需要显式 exit
。