在我的页面中,我在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登录页面。
答案 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();
在页面的开头。 这开始输出缓冲。 重定向有效。