2017-01-30 6 views
0

아시다시피 steam은 사람들이 스팀 데이터베이스를 통해 사이트에 연결할 수 있도록 해주는 스크립트를 제공합니다. 페이지를 새로 고치면 다시 로그인 할 필요가 없습니다. 그러나 스팀 피와 함께 나는 그것을 어떻게하는지 전혀 모른다.스팀 인증 세션

내 코드 :

<?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 디렉토리의 저자 아니에요)