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

时间:2013-01-08 06:34:34

标签: php twitter header

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

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

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

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

警告:无法修改标头信息 - 已经发送的标头(输出 从/vhosts/www/samplehosts/mysite.com/samplefolder/header.php:258开始) 第24行的/vhosts/www/samplehosts/mysite.com/samplefolder/signin.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>

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

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

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

2 个答案:

答案 0 :(得分: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();
?>

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

答案 1 :(得分:4)

根据我的理解,你的问题是:

header("location:[XYX.PHP]") is not working.

由于某些输出已经在页面上打印,它通常不起作用。 请使用

  

ob_start();

在页面的开头。 这开始输出缓冲。 重定向有效。