LightOpenID использует только первый возвращенный AuthURL, несмотря на запуск отдельных сессий PHP

0

Здесь мой код входа ниже, он довольно стандартный. Почему пользователь, который нажимает логин на steamcommunity. Ниже этот код представляет собой быстрый отладочный вывод, который я сбрасывал вместе, что демонстрирует, что хотя 2 AuthURL отправляются, по какой-то причине LightOpenID применяет первый возвращенный результат для каждого пользователя, пытающегося пройти аутентификацию через пар в аналогичное время. Т.е. добираться до парома и подписываться.

 <?
 ob_start();
 session_start();
if(isset($_GET['logout']))
{
    if(isset($_COOKIE[session_name()])):
        setcookie(session_name(), '', time()-7000000, '/');
    endif;

    if(isset($_COOKIE['login_user'])):
        setcookie('login_user', '', time()-7000000, '/');
    endif;

    session_unset();

    session_destroy();

    header("Location: index.php");
}

include "kern/apikey.php";
include "kern/openid.php";
$OpenID = new LightOpenID("xxxxxx.com");

if(!$OpenID->mode)
{
    if(isset($_GET['login']))
    {
        $OpenID->identity = "http://steamcommunity.com/openid";
        header("Location: " . $OpenID->authUrl());
    }
    if(!isset($_SESSION['SteamAuth']))
    {
        $login = "<div id=\"login\">In order to access the panel, you must <br /><br /> <a href=\"?login\"><img src=\"http://cdn.steamcommunity.com/public/images/signinthroughsteam/sits_large_noborder.png\"/></a></div>";
    }
} else if ($OpenID->mode == "cancel")
{
    echo "Authentication Cancelled...";
} else {
    if($OpenID->validate())
    {


        $id = $OpenID->identity;

        $_SESSION['SteamID64'] = str_replace("http://steamcommunity.com/openid/id/", "", $id);
        $_SESSION['SteamAuth'] = true;

        $Steam64 = str_replace("http://steamcommunity.com/openid/id/", "", $id);
        $profile = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={$api}&steamids={$Steam64}");
        $steam = json_decode($profile, true);
        $communityid = $steam['response']['players'][0]['steamid'];
        $authserver = bcsub($communityid, '76561197960265728') & 1;
        $authid = (bcsub($communityid, '76561197960265728')-$authserver)/2;
        $_SESSION['SteamID'] = "STEAM_0:" . $authserver . ":" . $authid;
        $_SESSION['SteamName'] = $steam['response']['players'][0]['personaname'];

        header("Location: index.php");
    } else {
        echo "User is not logged in";
    }
}

?>

<html>
<body>
<div id="title">Login</div>
<div id="content">
<?
    echo $login;
?>
</div>
</body>
</html>

См. Файл журнала ниже, который указывает, что AuthURL отправляется дважды, но фактически используется только один ответ:

[09-Nov-2014 14:09:52 America/Chicago] Begin login!
[09-Nov-2014 14:09:52 America/Chicago] Sent authurl!xxxxx

[09-Nov-2014 14:10:03 America/Chicago] Begin login!
[09-Nov-2014 14:10:03 America/Chicago] Sent authurl!xxxxx

[09-Nov-2014 14:10:10 America/Chicago] Begin login!
[09-Nov-2014 14:10:11 America/Chicago] Got identity!http://steamcommunity.com/openid/id/xxxx

[09-Nov-2014 14:10:11 America/Chicago] Using Steam64!xxxx

[09-Nov-2014 14:10:11 America/Chicago] Using string steam64!xxxx

Как вы можете видеть, хотя 2 AuthURL отправляются в одно и то же время, как только возвращается одно удостоверение, оно применяется к обоим пользователям, то есть люди регистрируются в неправильных учетных записях.

Эта проблема кажется полностью воспроизводимой с использованием примеров https://github.com/SmItH197/SteamAuthentication PHP.

Шаги по воспроизведению: 1. Первый пользователь нажимает "Войти через пар", зависает на пароли Steamcommunity.com. 2. Второй пользователь нажимает "Войти через пар", руки на пароком. 3. Затем оба пользователя перейдут через один, один из них будет зарегистрирован как другой.

Теги:
session
steam
openid
lightopenid

1 ответ

0

Протестировано это на внешнем веб-сервере, оказывается, похоже, что это связано с конфигурацией сервера /PHP по линии, не совсем уверенной, почему это происходит, или в чем причина, поэтому моим решением будет переместить мой steamauth на другой сервер.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню