修改 PHP 函数以在操作后重定向


Modifying PHP function to redirect after action

我希望以下PHP代码在函数完成后重定向到指定的页面。我尝试了几种不同的方法,但它似乎从未做过任何事情。当前正在执行的操作是在按下调用函数的按钮后,它会重定向到空白页面。任何帮助将不胜感激。

    function quote_upvote_button($quoteid, $canvote, $ajaxy=FALSE)
    {
        $s = ' class="quote_plus" id="quote_plus_'.$quoteid.'"';
        if (!$canvote) {
            $url = '<a href="?'.urlargs('vote',$quoteid,'plus').'" '.$s.' title="'.lang('upvote').'">+</a>';
                if ($ajaxy) {
                    return '<script type="text/javascript">document.write(''<a href="javascript:ajax_vote('.$quoteid.',1);" '.$s.' title="'.lang('upvote').'">+</a>'');
                    </script><noscript>'.$url.'</noscript>';
        }
        return $url;
    }
    return '<span '.$s.' title="'.lang('cannot_vote_'.$canvote).'">+</span>';
}

这将起作用,$your_redirect_url是它将要去的位置。它可以是相对 (/foo/bar( 格式或完全限定 (http://foo.com/bar( 格式。您可以在此处阅读有关 PHP 标头重定向的更多信息。请注意,Miinimals 答案需要额外的 PECL 库才能执行,这是一个晶粒度函数。

function quote_upvote_button($quoteid, $canvote, $ajaxy = false, $your_redirect_url = '/')
{
    $s = ' class="quote_plus" id="quote_plus_'.$quoteid.'"';
    if (!$canvote) {
        $url = '<a href="?'.urlargs('vote',$quoteid,'plus').'" '.$s.' title="'.lang('upvote').'">+</a>';
        if ($ajaxy) 
        {
            // Redirect to your location, and terminate...
            // Will redirect to root on default, or can be overridden/modified as an arg
            header("Location: $your_redirect_url");
            exit;
        }
        return $url;
    }
    return '<span '.$s.' title="'.lang('cannot_vote_'.$canvote).'">+</span>';
}

您应该使用此处记录的http_redirect:

http://php.net/manual/en/function.http-redirect.php

重定向应放在返回语句之前。

您首先找到该网址,然后通过以下方式重定向到该网址

   header('location:'.$url);

或者在 js 中您可以使用

   window.location.assign($url)
   window.location="http://www.newlocation.com";