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&section=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&section=info');
    }
}
?>

输出 header 并不会真正停止您的脚本!所有其他代码也是 运行 。如果您不想执行任何进一步的代码,则需要显式 exit