0

У меня на сайте есть авторизация через Steam
но после авторизации меня перенаправляет на файл "steam_fail"
При этом запись в базу данных в таблицу users не происходит.

Помогите разобрать в чем проблема и устранить это.
Если кто знает в чем проблема и может исправить готов финансово отблагодарить.

вот код

<?php
if(!isset($Functions)){
    die("Error! 404");
}

require $_SERVER['DOCUMENT_ROOT'].'/engine/openid.php';

if($Functions->isLogged()){ if(isset($_GET['logout'])){ session_destroy(); } $Functions->redirect(); }else{ try{ $openid = new LightOpenID('http://'.$Functions->config['site_name']); if(!$openid->mode) { if(isset($_GET['login'])){ $openid->identity = 'http://steamcommunity.com/openid'; $Functions->redirect($openid->authUrl()); }else{ $Functions->redirect(); } }elseif($openid->mode == 'cancel'){ $Functions->redirect(); }else{ if($openid->validate()) { $id = $openid->identity; $ptn = "/^http://steamcommunity.com/openid/id/(7[0-9]{15,25}+)$/"; preg_match($ptn, $id, $matches); $json_object = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=".$Functions->config['steamapi']."&steamids=".$matches[1]); if($json_object == false){ die($Functions->getIndex("steam_fail")); }else{ $json_decoded = json_decode($json_object); $player = $json_decoded->response->players[0]; if(!empty($player)){ $getPlayer = $Functions->db->query("SELECT * FROM users WHERE steamid = '".$player->steamid."'"); if($getPlayer->num_rows == 0){ $Functions->db->query("INSERT INTO users(steamid, name, avatar, money, created, status) VALUES ('".$player->steamid."', '".$player->personaname."', '".$player->avatarfull."', '0', '".time()."', '1')"); }else{ $Functions->db->query("UPDATE users SET name = '".$Functions->getString($player->personaname)."', avatar = '".$player->avatarfull."' WHERE steamid = '".$player->steamid."'"); $_SESSION['name'] = $player->personaname; $_SESSION['steamid'] = $player->steamid; $_SESSION['avatarfull'] = $player->avatarfull; } $Functions->redirect(); }else{ die($Functions->getIndex("steam_fail")); } } }else{ $Functions->redirect(); } } }catch(ErrorException $e){ echo $e->getMessage(); } } ?>

если что то ещё нужно могу скинуть другие файлы

  • Ну просто у Вас не происходит декодирования ответа, а именно значения в нем players. Чтобы понять что там приходит - добавьте пожалуйста print_r($json_decoded) после части $json_decoded = json_decode($json_object); и добавьте ответ в Ваш вопрос. С радостью поможем. – Denis640Kb Apr 09 '23 at 16:55
  • stdClass Object ( [response] => stdClass Object ( [players] => Array ( ) ) )

    то что я получай после использования print_r($json_decoded)

    – Вадим Безручка Apr 09 '23 at 17:06
  • 1
    сам код подразумевает, что у Вас обязательно должны возвращаться пользователи, а именно обязательно должен существовать первый элемент в массиве players. Посмотрите, пожалуйста, сейчас у Вас код возвращает пустой массив, по этому происходит ошибка. Вам необходимо посмотреть что вообще возвращается - print_r($json_object), возможно там ошибка steam или по условиям Вашего запроса нет подходящих игроков. Обратите внимание, что теперь обычный ответ еще до декодирования - json_object – Denis640Kb Apr 09 '23 at 17:10
  • могу ли я как то отправить вам архив чтоб вы посмотрели? – Вадим Безручка Apr 09 '23 at 17:18
  • https://drive.google.com/file/d/1mQMOQXJDP2k_KSO2PlpI3rFDFdtonua_/view?usp=share_link

    ЭТО ССЫЛКА НА АРХИВ СО ВСЕМИ ФАЙЛАМИ В ТОМ ЧИСЛЕ И БАЗОЙ ДАННЫХ

    – Вадим Безручка Apr 09 '23 at 17:29
  • 1

0 Answers0