2

在我的页面中,我使用标题位置在 twitter 登录中进行重定向。但它在我的服务器上运行良好。但是将文件上传到其他服务器后它不起作用

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

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

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

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

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

登录.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 按钮后,它只显示标题 URL

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

并且不重定向到 Twitter 登录页面。

4

2 回答 2

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 语句,标头仍将执行。

于 2013-01-08T07:20:18.207 回答
4

据我了解,您的问题是:

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

它通常不起作用,因为某些输出已打印在页面上。请用

ob_start();

在页面的开头。这将启动输出缓冲。并且重定向有效。

于 2013-01-10T06:53:40.893 回答