0

通常のログインとともに、インデックスページでGoogleログインを使用しています。しかし、Google からログインすると、Chrome と Firefox の両方で「この Web ページにはリダイレクト ループがあります」と表示されます。私のコードでは、特定の条件に基づいて特定のページにリダイレクトするために、非常に多くのヘッダーを配置しました。しかし、ページをロードすると、リダイレクト ループ エラーが表示されます。

誰かが私のコードの問題点を見つけるのを手伝ってくれますか? ロジックにエラーは見つかりませんでした。

これが私のコードです:

Google API コード:

<?php
require_once 'google-login-api/src/Google_Client.php';
require_once 'google-login-api/src/contrib/Google_Oauth2Service.php';
$google_client_id       = ''; //client id
$google_client_secret   = ''; //client secret
$google_redirect_url    = ''; //redirect url
$gClient = new Google_Client();
$gClient->setClientId($google_client_id);
$gClient->setClientSecret($google_client_secret);
$gClient->setRedirectUri($google_redirect_url);

$google_oauthV2 = new Google_Oauth2Service($gClient);
 if (isset($_GET['code'])) 
{ 
$gClient->authenticate($_GET['code']);
$_SESSION['token'] = $gClient->getAccessToken();
header('Location: ' . filter_var($google_redirect_url, FILTER_SANITIZE_URL));
return;
}
if (isset($_SESSION['token'])) 
{ 
$gClient->setAccessToken($_SESSION['token']);
}
if ($gClient->getAccessToken()) 
{
  //For logged in user, get details from google using access token
  $user                 = $google_oauthV2->userinfo->get();
  $user_name            = filter_var($user['name'], FILTER_SANITIZE_SPECIAL_CHARS);
  $email                = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
  $profile_image_url    = filter_var($user['picture'], FILTER_VALIDATE_URL);
  $_SESSION['token']    = $gClient->getAccessToken();
}
else 
{
//For Guest user, get google login url
$authUrl = $gClient->createAuthUrl();
}
?>

Google ログインを処理する PHP コード:

<?php
if(isset($authUrl)) //user is not logged in, show login button
{
echo '<a class="login" href="'.$authUrl.'"><img src="google-login-api/images/google-login-button.png" /></a>';
} 
else // user logged in 
{
$_SESSION['gemail']=$email;
$_SESSION['guname']=$user_name;
$glogqry="select user_id from tab_user_login where username='$email' and type='Developer'";
$reslog=mysql_query($glogqry);
$countlog=mysql_num_rows($reslog);
if($countlog>0)
{
$rowlog=mysql_fetch_array($reslog);
$gdevid=$rowlog[0];
$sqlapp="select * from tab_app where user_id='$gdevid' order by date limit 1";
$resapp=mysql_query($sqlapp);
$countapp=mysql_num_rows($resapp);
if($countapp<=0)
{
header('Location:home_demo.php');
}
else
{
$rowapp=mysql_fetch_array($resapp);
if(($rowapp[9]=="Test") || ($rowapp[11]=="Not Integrated"))
{
header('Location:home_demo.php');
}
else
{
header('Location:home.php');
}
}
}
else
{
$glogqry1="insert into tab_user(name,email,image,signup_date)        values('$user_name','$email','$profile_image_url','$today')";
$reslog1=mysql_query($glogqry1);
if($reslog1!=0)
{
$devid=mysql_insert_id();
}
$glogqry12="insert into tab_user_login (user_id,username,type,status,login_status) values('$devid','$email','Developer','Approved','first login')";
$reslog12=mysql_query($glogqry12);
header('Location:home_demo.php');
}
}
?>

誰でもこれで私を助けることができます..?? 私はこれに2日以上立ち往生しています..

前もって感謝します

4

1 に答える 1