3

重複の可能性:
PHP-SDK のリダイレクトが多すぎる

Facebookログインのセッションをデータベースに保存し、ホストとしてlocalhostを使用しようとしています(Facebook用のPHP SDKを使用)。以下は私のコードです。

<?php

require_once 'facebook/facebook.php';
require 'config/fbconfig.php';
require 'config/functions.php';

$facebook = new Facebook(array(
            'appId' => APP_ID,
            'secret' => APP_SECRET,
            ));

$user = $facebook->getUser();

if ($user) 
{
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }

    if (!empty($user_profile )) {
        # User info ok? Let's print it (Here we will be adding the login and     registering routines)

        $username = $user_profile['name'];
         $uid = $user_profile['id'];
           $email = $user_profile['email'];
            $user = new User();
        $userdata = $user->checkUser($uid, 'facebook',     $username,$email,$twitter_otoken,$twitter_otoken_secret);
        if(!empty($userdata)){
            session_start();
            $_SESSION['id'] = $userdata['id'];
    $_SESSION['oauth_id'] = $uid;

            $_SESSION['username'] = $userdata['username'];
    $_SESSION['email'] = $email;
            $_SESSION['oauth_provider'] = $userdata['oauth_provider'];
            header("Location: home.php");
        }
    } else {
        # For testing purposes, if there was an error, let's kill the script
        die("There was an error.");
    }
 } else {
    # There's no active session, let's generate one
    $login_url = $facebook->getLoginUrl(array( 'scope' => 'email'));
            header("Location: " . $login_url);
 }
?>

home.php は以下のようになります。

<?php

//Always place this code at the top of the Page
session_start();
if (!isset($_SESSION['id'])) {
    // Redirection to login page twitter or facebook
    header("location: index.php");
}
else
{
echo '<h1>Welcome</h1>';
echo 'id : ' . $_SESSION['id'];
echo '<br/>Name : ' . $_SESSION['username'];
echo '<br/>Email : ' . $_SESSION['email'];
echo '<br/>You are login with : ' . $_SESSION['oauth_provider'];
echo '<br/>Logout from <a href="logout.php?logout">' . $_SESSION['oauth_provider'] .     '</a>';
}
?>

しかし、ブラウザ(クロム)は以下のエラーをスローしています

 Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.

すべての Cookie をクリアしようとしましたが、役に立ちませんでした。このエラーを処理する方法、または変更するコードがあるかどうかを理解させてください。また、エラーについてフォーラムを調べてみましたが、この分野では初めての可能性があるため、説明が不十分でした。

4

1 に答える 1

2

このエラーは、リダイレクトの無限ループがあることを意味します。

無限ループで、index.php が home.php にリダイレクトされ、次に home.php が index.php にリダイレクトされているようです。

index.php と home.php で、$_SESSION['id']each の前if()と内部の値を確認しif()ます。これは、ループを中断する主要な変数であるためです。

于 2013-01-27T09:37:50.877 に答える