2017-01-30 13 views
0

あなたが知っているように、スチームは人々がスチームデータベースを通してあなたのサイトに接続するためのスクリプトを提供します。 ページを更新すると、再度ログインする必要はありません。しかしスチームアピでは、どうやってそれをするのか分かりません。スチーム認証セッション

マイコード:

<?php 
require 'includes/lightopenid/openid.php'; 
include_once("db.php"); 

$_STEAMAPI = "MYAPI"; 
try { 
    $openid = new LightOpenID('http://test/dev1/index.php?id=1'); 
    if(!$openid->mode) { 
     if(isset($_GET['login'])) { 
      $openid->identity = 'http://steamcommunity.com/openid/?l=english'; 
      header('Location: ' . $openid->authUrl()); 
     } else { 

      echo "<form action='?login' method='post'>"; 
      echo "<input type='image' src='http://cdn.steamcommunity.com/public/images/signinthroughsteam/sits_small.png'>"; 
      echo "</form>"; 
     } 
    } elseif($openid->mode == 'cancel') { 
     echo 'User has canceled authentication!'; 
    } else { 
     if($openid->validate()) { 
      $id = $openid->identity; 
      $ptn = "/^http:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/"; 
      preg_match($ptn, $id, $matches); 

      $url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=$_STEAMAPI&steamids=$matches[1]"; 
      $json_object= file_get_contents($url); 
      $json_decoded = json_decode($json_object); 

      foreach ($json_decoded->response->players as $player) 
      { 
       $sql_fetch_id = "SELECT * FROM member WHERE steamid = '$player->steamid'"; 
       $query_id = mysqli_query($db, $sql_fetch_id); 

       if (mysqli_num_rows($query_id) == 0) { 
        $sql_steam = "INSERT INTO member (name, steamid, avatar) VALUES ('$player->personaname', '$player->steamid', '$player->avatar')"; 
        mysqli_query($db, $sql_steam); 
       } 
        echo "Welcome back <b>" . $player->personaname . "</br>"; 
      } 
     } else { 
      echo "User is not logged in.\n"; 
     } 
    } 
} catch(ErrorException $e) { 
    echo $e->getMessage(); 
} 
?> 

答えて

1

一般的なアプローチは、セットアップsessionになります - PHPで、あなたはこの情報を保存するために$_SESSIONを使用することができます。これにより、ユーザーごとに永続的なサーバー側のデータを格納できます。

ユーザーのSteamID64を取得したら、$_SESSIONに保存するが、例えば:

$_SESSION['steamid'] = $someVal;

あなたはそれが後続のすべての要求に設定されていますかどうかを確認し、それに従って行動することができます。

あなたはここに完全な例を見ることができます:https://github.com/SmItH197/SteamAuthentication

(免責事項:私はLIBの著者ではないよ)

関連する問題