Leggere un file php contenente dati json

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve, ho un bel problemino,
sono risalito a un file in php ch mostra video dei dati in formato json
del tipo

Codice:
{ "id" : "1", "name" : "test1" },
  { "id" : "2", "name" : "test2" },
  { "id" : "3", "name" : "test3" },
  { "id" : "4", "name" : "test4" },
  { "id" : "5", "name" : "test5" }
io vorrei leggere semplicemnente quei dati epr usarli in un mio script. Sicuramene questo file php (esempio.php) all'interno usa l'encode di json e nostra a video questi dati , io ora vorrei fare l'uinverso usando quel link in php per ricavarmi i dati json.

Sapreste aiutarmi? Ho letto in giro che ci sono delle funzioni javascipt ma non riesco a capire come usarli

Grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, con jquery è semplice
Codice:
$.getJSON("esempio.php", function (json) {
        alert(json);
    });
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao criric, grazie am dato che con javascript sono una frana e considerando che il file non è nel mio server come la richiamo questa funzione?


poi inr ealtà io quei dati devo rielaborarli con php per crearmi delle tabelle e dei database e non ho idea di come estraporarli con la funzione da te proposta e pi crearemi glia rray che mis ervono
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
allora javascript non ti serve, fai tutto in php
Codice:
$json = file_get_contents('http://sito.it/esempio.php');
$array = json_decode($json);
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
criric una cosa strana. su un mio sito funge, su quello dove dovrei usarlo(lo sto costruendo ora) mi restituisce false. da cosa può dipndere?
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Allora sul mio sito principale funge su altervista no :( ho letto in giro e questo è quanto

Con file_get_contents non puoi.

Ma su altervista non sono abilitati gli url wrapper

Quindi o cURL o fsockopen...
scusa se approfiftto ma cosa sono i cURL? come lo adatto file_ get_contents?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
curl è una libreria che permette di comunicare tra server diversi guarda qui
altervista per motivi di sicurezza blocca diverse funzioni native di php
anche con curl la sintassi comunque è semplice
PHP:
$ch = curl_init("http://www.sito.it/esempio.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = json_decode(curl_exec($ch));
curl_close($ch);
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
allora stavo provando con fsockopen ma mi restituisce una serie di dati riguardanti la connessione e non mi elenca i dati del file come li elabora il json quindi mi diventa impossibile esploderli
qua il codice
Codice:
$url="www.sitoesterno.com";
$fp = fsockopen($url, 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET /dati/dati.php?id=1111111&server=it  HTTP/1.1\r\n";
    $out .= "Host: www.sitoesterno.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        $pal= fgets($fp, 128);
        echo '<pre>';
        var_dump($pal);
        echo '</pre>';
    }
   
    fclose($fp);
}
queasto codice me los tampo così

Codice:
string(17) "HTTP/1.0 200 OK
"
string(31) "Cache-Control: max-age=172800
"
string(37) "Date: Fri, 12 Aug 2016 16:39:39 GMT
"
string(68) "Server: Apache/2.4.12 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4
"
string(23) "Vary: Accept-Encoding
"
string(40) "Content-Type: text/html; charset=utf-8
"
string(40) "Expires: Sun, 14 Aug 2016 16:39:39 GMT
"
string(26) "X-Powered-By: PHP/5.5.26
"
.........
e poi mi elenca i dati ma a righe non per intero

mentre usando il tuo cidce mi restituisce NULL
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova cosi
PHP:
$ch = curl_init("https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=Esteri");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json=curl_exec($ch);
curl_close($ch);
var_dump(json_decode($json));
le connessioni socket non le conosco bene, devo prima studiarmele
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
allora per ora ho risolto lasciandos tare altervista elavorando sul mio sito principale, il decode funziona perfettamente. mis erve una dritta cri. la mole di dati è enorme mi tocca dividerel le variabili in 4 fasi. però ci mett elos tesso tanto a caricare. hai qualche dritta su come fare per sveltire il codice?

in sostanza e na cosa del genere

ho il file
PHP:
esempio.php?start=1&end=16000
per poterlo lavorare lìho diviso in 4 quindi decodifico il
Codice:
esempio.php?start=1&end=4000
e creo l'array
Codice:
array[]=array(id=>dato1,nome=>dato2);
questo erp 4 volte fino 16000. poi l'array finale lo salvo sul database. ma la decodifica dei 4 tronconi impiega troppo tempo.

Hai un idea?

se codifico prima una e inserisco il primo arrai nel database e poi libero la variabile(si può fare?) e poi ricomincio?