Autor Zpráva
MartinJ
Profil *
Dobrý den. Potřeboval bych pomoct. Stahl jsem si template webové stránky, běží to na Smarty enginu. Nezapisuji se mi informace získané pres Steam API do SQL databáze. Při přihlášení se v databázi uživatel vytvoří ale nezapíší se k němu žádné informace. Tudíž při odhlášení a dalším přihlášení se vytvoří nový uživatel. Tady je kus kódu z indexu:
case 'login':
        include 'openid.php';
        try
        {
            $openid = new LightOpenID('http://'.$_SERVER['SERVER_NAME'].'/');
            if (!$openid->mode) {
                $openid->identity = 'http://steamcommunity.com/openid/?l=english';
                header('Location: ' . str_replace("csgobananas", "csgorebel", $openid->authUrl()));
            } elseif ($openid->mode == 'cancel') {
                echo '';
            } 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=48AF41E2A9E460F36469498B6D211143&steamids=$matches[1]";
                    $json_object = file_get_contents($url);
                    $json_decoded = json_decode($json_object);
                    foreach ($json_decoded->response->players as $player) {
                        $steamid = $player->steamid;
                        $name = $player->personaname;
                        $avatar = $player->avatar;
                    }

                    $hash = md5($steamid . time() . rand(1, 50));
                    $sql = $db->query("SELECT * FROM `users` WHERE `steamid` = '" . $steamid . "'");
                    $row = $sql->fetchAll(PDO::FETCH_ASSOC);
                    if (count($row) == 0) {
                        $db->exec("INSERT INTO `users` (`hash`, `steamid`, `name`, `avatar`) VALUES ('" . $hash . "', '" . $steamid . "', " . $db->quote($name) . ", '" . $avatar . "')");
                    } else {
                        $db->exec("UPDATE `users` SET `hash` = '" . $hash . "', `name` = " . $db->quote($name) . ", `avatar` = '" . $avatar . "' WHERE `steamid` = '" . $steamid . "'");
                    }
                    setcookie('hash', $hash, time() + 3600 * 24 * 7, '/');
                    header('Location: http://www.playground.cekuj.net/sets.php?id=' . $hash);
                }
            }
        } catch (ErrorException $e) {
            exit($e->getMessage());
        }
        break;
A tady je kod z openid.php ZDE
Vážně nevim, kde by mela být chyba. Přístup k databázi to má, nejspíš mi steam nechce vydat informace o uživateli, ale API klíč, který je součástí toho odkazu jsem změnil za můj. Také bych rad věděl, k čemu je tam to str_replace (to jsem neprepisoval a zůstala tam hodnota "csgobananas" z původního projektu, od kterého mam ten template.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: