Diskuze: JSON vrací NULL
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 20 zpráv z 20.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


$curl_jason = var_dump(json_decode($curl_response, true));
var_dump($curl_jason); // vrátí null
Pouzivas tam 2x var_dump ... kazdopadne, proc takovou trivialnost resis
pomoci cURL ? to je dle me trosku overkill 
Co treba neco na tento zpusob ?
$json = json_decode(file_get_contents($service_url));
var_dump($json);
var_dump() jsem z toho zapoměl odmazat každopádně to pořád nejde a pomocí cURL je to proto že pomocí file_get_contents() to nešlo také tak jsem zkusil jinou možnost
dneska ráno jsem si všimul že to někdy vytáhne a někdy ne
takže kód bude asi dobrej
Pokud to "nekdy vytahne a nekdy ne", tak ta API si zrejme jiz pamatuje
vysledky, ktere ti predala a pokud nejsou zadne nove ... tak jednoduse nevrati
nic
vetsina API tak
funguje, sice ne automaticky ale ve stylu, ze ji das nejaky timestamp a ona taha
data novejsi nez ten timestamp
Bránit se proti tomu dá.
Zeptáš se API
Předá ti JSON: Ten uložíš do souboru / tak že si
výsledek přecachuje /
Nepředá ti JSON: Načteš cache a budeš s ním pracovat
napadlo mě udělat si v pythonu script ...
python -> zeptá se API -> uloží do souboru na disk -> PHP vytáhne soubor uloží si json do pole a vypíše
bude to takto fungovat?
nebo jak bych si měl načíst cache?
Ahoj, co přidal k tomu tohle?
curl_setopt($curl1, CURLOPT_FRESH_CONNECT, true);
zkusil jsem, ale nic pořád mě to vrací NULL posílám celej script
<?php
$service_url = "http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=A8206F692A738A5BC96EA33D36502F6F&steamid=76561198162222572";
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl, CURLOPT_URL, $service_url);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl1, CURLOPT_FRESH_CONNECT, true);
$curl_response = curl_exec($curl);
curl_close($curl);
$curl_jason = json_decode($curl_response);
var_dump($curl_jason);
jde o to že když si to otevřeš v browseru tak ti ukáže vše potřebné, ale v PHP vrací NULL tak to nechápu
právě jsem párkrát refrešnul stránku aniž bych dopsal cokoliv do kódu
a vrací to už normálně, tak to nechápu opravdu 
možná tu bude tím že jsem tady měl jedničku
curl_setopt($curl1, CURLOPT_FRESH_CONNECT, true);
curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
uvidím jak to bude fungovat teď
snažím se spojit API Faceitu(faceit.com) a Steamu dělám takový web kde si lidi můžou sbírat staty
Proč python, když to jde řešit vše pomocí PHP? Zbytečně jdeš na mouchu slonem.
asi máš pravdu stáhnu JSON vložím do DB a pokud bude vracet NULL tak vytáhnu z DB
Pokud zrovna potřebuješ JSON ukládat do databáze, tak to udělej. Já bych na to šel spíše přes soubor.
Uložím si soubor a pomocí file_get_content + json_decode bych s ním pak pracoval. Je to rychlejší než pracovat s databází. Ale to jen za předpokladu že nepotřebuješ nějaké složitější filtrování.
Když to pak budeš chtít testnout, napiš. Hraju jak csgo tak faceit
jsem tu zpět a posílám kus kodu který mě na lokálu vrátí normálně ale na webhostingu prostě nefunguje viz
public function getApiData($username){
$faceitApiUrl = 'https://api.faceit.com/api/nicknames/'. $username;
$result = file_get_contents($faceitApiUrl);
$faceitData = json_decode($result, true);
$steamApiUrl = 'https://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key='.self::APP_STEAM_API_KEY.'&steamid='. $faceitData['payload']['steam_id_64'] . '/r=' . mt_rand(0, 9999);
$resultSteam = file_get_contents($steamApiUrl);
$steamData = json_decode($resultSteam, true);
if($steamData['response']['games']){
foreach($steamData['response']['games'] as $var){
if($var['appid'] == '730'){ // 730 = CSGO
$temp1 = $var['playtime_forever'];
$totalHours = number_format( $temp1 / 60 );
$temp2 = $var['playtime_2weeks'];
$past2Weeks = number_format( $temp2 / 60 );
}
}
}else{
$totalHours = 'UNKNOWN';
$past2Weeks = 'UNKNOWN';
}
$array = array(
'nickname' => $faceitData['payload']['nickname'], // FACEIT USERNAME
'steamid64' => $faceitData['payload']['steam_id_64'], // STEAM ID 64
'country' => $faceitData['payload']['country'], // FACEIT COUNTRY
'steamid' => $faceitData['payload']['platforms']['steam'], // STEAM ID
'level' => $faceitData['payload']['games']['csgo']['skill_level'], // FACEIT LEVEL
'elo' => $faceitData['payload']['games']['csgo']['faceit_elo'], // FACEIT ELO
'membership' => $faceitData['payload']['membership']['type'], // FACEIT MEMBERSHIP
'avatar' => $faceitData['payload']['avatar'], // FACEIT AVATAR
'csgo_total' => $totalHours, // STEAM CSGO HOURS
'csgo_past2weeks' => $past2Weeks, // STEAM CSGO HOURS PAST 2 WEEKS
);
return $array;
}
// na lokálu mě steam API vrátí v pořádku ale na serveru mě vrátí NULL kod je uplně totožný
// na konec proměné do URL $steamApiUrl jsem přidal generovat náhodný číslo abych to nezkoušelo cachovat nebo tak něco
// vypadá to že problém bude někde hluboko v php.ini?
Zobrazeno 20 zpráv z 20.