@Phillip Я считаю, что это действительно только для объектов JS. PHP-код выполняется на сервере и не зависит от браузера.

я есть приложение Facebook, которое зацикливается навсегда при запуске в IE. В других браузерах работает нормально.

Мне нужна ваша помощь, чтобы отладить это, но перед этим я должен упомянуть, как я это реализовал.

FB рекомендует, чтобы при попытке доступа к приложению пользователь перенаправлял пользователя на страницу авторизации приложения. Оттуда FB будет перенаправлять (используя код 302) на URL, который нам нравится. В этом случае я прошу FB перенаправить на URL моего приложения с флагомappLogin=1 в строке запроса. Но наряду с этим FB придает очень длинный параметрcode в строке запроса, что довольно некрасиво. Итак, в этом случае я поставил флагLoggedIn в моей сессии PHP и перенаправить пользователя обратно на URL-адрес приложения, используя код JSwindow.top.location.href = <app url>, Это очищает URL в адресной строке.

Это отлично работает в Firefox и Chrome, но в IELoggedIn флаг отсутствует в сеансе после перенаправления кода сappLogin этап. На самом деле, похоже, что сессия PHP в этом случае была сброшена. Это сбивает с толку мое приложение, считая, что это первоначальный запрос, поэтому оно перенаправляет пользователя на страницу авторизации.

Я надеюсь, что вышеупомянутое имеет смысл. Действительно ценю любое понимание.

Update1:

Как просили. Здесь идет фрагмент кода.

$reset = false;
$topRedirect = true;

if (isset($_REQUEST['appLogin'])) {
    resetSession();
}
session_start();

$facebook = new Facebook(array(
  'appId' => $AppId,
  'secret' => $AppSecret,
  'cookie' => true,
));

if (isset($_REQUEST['appLogin'])) {//Comes here when appLogin is set, i.e. we have just been redirected here from OAuth (authorization) page.

    if (isset($_REQUEST['error'])) {
        if ($_REQUEST['error_reason'] === 'user_denied') {
            $msg = "You need to click on 'Allow', so that this App can fetch the data needed.";
            $allowRetry = true;
            include('error.php');
        }
    }

    $authToken = $facebook->getUserAccessToken(); //This was originally protected. Made public for my purpose.
    if ($authToken === false) {
        //If no user token found and it wasn't even an error then this is totally unexpected.
        $msg = "Totally unexpected error occurred!";
        $allowRetry = true;
        logErr($msg);
        include('error.php');
    }

    $_SESSION['LoggedIn'] = 1;
    $reset = false;
    $url = $AppUrl; //We redirect again to clean the url.
    include('redirect.php');
} else {
    if (!isset($_SESSION['LoggedIn']) || $facebook->getUserAccessToken() === false) {
        //If we are here then this is an initial request.
        $reset = false;
        $url = $OAuthUrl;
        include('redirect.php');
    }
}

$accessToken = $facebook->getAccessToken();

Update2:

Включенные файлы - redirect.php и error.php вызываютexit() когда их обработка завершена. Таким образом, код после них не будет выполнен.

Ответы на вопрос(2)

Ваш ответ на вопрос