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

私のサイトのどのページでもリダイレクトが機能していません。誰でも私がこの問題を解決するのを手伝ってくれる

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ボタンをクリックすると、ヘッダー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 に答える