header("Location:mypage.php")在上传到其他服务器后无法正常工作

Rit*_*thu 2 php twitter header

在我的页面中,我在twitter登录中使用标题位置进行重定向.但它在我的服务器上工作正常.但是在将文件上传到其他服务器后它无法正常工作

header("Location: login-twitter.php");

当试图查看页面中的错误并使用下面的代码时,我看到以下警告消息.

error_reporting(E_ALL); ini_set('display_errors', 'On'); 
Run Code Online (Sandbox Code Playgroud)

警告:无法修改标头信息 - 已在/vhosts/www/samplehosts/mysite.com/samplefolder/signin中发送的标头(在/vhosts/www/samplehosts/mysite.com/samplefolder/header.php:258处开始输出).第24行的PHP

重定向不适用于我网站中的任何页面.任何人都可以帮我解决这个问题

signin.php

if (array_key_exists("login", $_GET)) {

    $oauth_provider = $_GET['oauth_provider'];

    if ($oauth_provider == 'twitter') {

error_reporting(E_ALL); ini_set('display_errors', 'On'); 

        header("Location: login-twitter.php");

    }

}



<li class="twitter">
<a  class="twitter_login" href="?login&oauth_provider=twitter"  rel="nofollow">
<img src="images/twitter.png" width="206" height="33" >
</a>
</li>
Run Code Online (Sandbox Code Playgroud)

但是点击了twitter按钮后,它只显示了标题网址

http://mysite.com/?login&oauth_provider=twitter

而不是重定向到Twitter登录页面.

SIS*_*SYN 5

通过使用输出缓冲区,无论输出如何,都可以确保始终执行标头.只需在代码顶部执行以下操作:

<?php
ob_start();
// put any includes etc. here
// some other code
echo 'Sample output.';
header('Location: login-twitter.com');
// more code
ob_end_flush();
?>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,由于输出已被缓冲,即使在调用header()之前发出了echo语句,标头仍将执行.