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登录页面.
通过使用输出缓冲区,无论输出如何,都可以确保始终执行标头.只需在代码顶部执行以下操作:
<?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语句,标头仍将执行.