2017-01-30 1 views
0

Comme vous le savez, steam fournit un script permettant aux utilisateurs de se connecter sur votre site via la base de données steam. Je voudrais rafraîchir la page si je n'ai pas besoin de me reconnecter. Mais avec steamapi je n'ai aucune idée de comment le faire.Session d'authentification Steam

Mon code:

<?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(); 
} 
?> 

Répondre

1

L'approche générale serait d'installer session - en PHP, vous pouvez utiliser $_SESSION pour stocker ces informations. Cela vous permet de stocker des données persistantes côté serveur par utilisateur.

Une fois que vous récupérez SteamID64 de l'utilisateur, enregistrez-le dans le $_SESSION, .: par exemple

$_SESSION['steamid'] = $someVal;

Vous pouvez vérifier si elle est définie sur chaque requête et agir en conséquence.

Vous pouvez voir exemple complet ici: https://github.com/SmItH197/SteamAuthentication

(Avertissement:. Je ne suis pas l'auteur de la lib)