Visualizzazione risultati 1 fino 19 di 19

Discussione: json

  1. #1
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito json

    Ciao a tutti, ho il seguente codice:

    Codice HTML:
    <!DOCTYPE html>
    <head>
    <script>
    var xmlhttp = new XMLHttpRequest();
    var url = "http://freegeoip.net/json/";
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var obj = JSON.parse(xmlhttp.responseText);
            document.getElementById("demo").innerHTML =
            obj.city + ",&nbsp;" + obj.region_name + ",&nbsp;" +obj.country_name + ""
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    </script>
    </head>
    <body>
    <div id="demo"></div>
    </body>
    
    
    che partendo dall'ip del visitatore attraverso json di http://freegeoip.net/json/, restituisce città, regione, nazione.
    Come faccio a fare in modo che invece di http://freegeoip.net/json/ li prenda da http://dazzlepod.com/ip/$ip_visitatore$.json ?
    Come si evince a differenza di freegeoip.net dazzlepod scive ".JSON" dopo l'ip, per cui non mi basta semplicemente modificare la variabile "var url " del codice sopra.

    Grz a chi risponderà.

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Se vuoi sapere le informazioni sull'ip che ha fatto la richiesta su dazzlepod.com, puoi usare me.json come url. (es: http://dazzlepod.com/ip/me.json ).

    In ogni caso, le richieste Ajax verso domini esterni (crossdomain) sono proibite dalla maggior parte dei browser.
    Sei sicuro che funzionerà?

  3. #3
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    non capisco cosa intendi, intendo la parte relativa a crossdomain, cmq usando me.json non funziona, ho già provato...cmq grz per la tua risposta

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Puoi pubblicare un link che punta alla pagina in questione?
    Giusto per capire perché non funziona.

  5. #5
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    ancora non capisco cosa intendi, cmq riferendoci al codice sopra di freegeoip, poi vedere l'esempio fiunzionante qui: http://gutguy2.altervista.org/ip/jso...egeoip.net.php, purtroppo ultimamente va male perché è lento, hann qlc problema, anche per qesto volgio cambiarlo, quindi quando lo apri potrebbe non dare nulla, ricaricalo finché non va, come vedi restituisce città, regione, nazione volendo anche isp ora come faccio a farlo per dazzlepod che appende .json alla fine del link dopo l'ip? se uso il codice sopra che funziona per freegeoip non va ovviamente perché il link non è completo
    Ultima modifica di gutguy2 : 13-06-2015 alle ore 17.26.27

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ripeto, dovresti usare me.json, oppure devi specificare l'ip stampandolo nella pagina usando php.
    In ogni caso, a me non funziona il tuo script per il seguente motivo:


    Ecco a cosa mi riferisco quando parlo di richieste crossdomain.
    Come vedi, il mio browser ha bloccato la richiesta perché fa riferimento ad un dominio diverso dal tuo.

  7. #7
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    non sapevo, come hai fatto a visualizzare quella console usi chrome anche tu vero?
    a me invece funziona, ci mette solo un po e spesso bisogna aggiornare la pagina perché come ho detto hanno problemi (l'url da cui prendo i dati è https://freegeoip.net/json/), prova anche questo http://gutguy2.altervista.org/ip/jso...3ipinfo.io.php dimmi se va

  8. #8
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Citazione Originalmente inviato da gutguy2 Visualizza messaggio
    non sapevo, come hai fatto a visualizzare quella console usi chrome anche tu vero?
    No, quello che vedi nella schermata di Javascripter è Firefox, ma anche Chrome (così come gli altri moderni browser) mette a disposizione quelli che vengono comunemente chiamati strumenti per gli sviluppatori.
    Nello specifico vedi la console JavaScript, dove si possono leggere vari messaggi di errore ed informativi, nonché provare del codice al volo.
    Su Firefox trovi tutto nei vari menù, oppure puoi usare le scorciatoie da tastiera come CTRL+SHIFT+K (apre la console) o F12 (mostra o nasconde gli strumenti per gli sviluppatori). Su Chrome la combinazione è invece CTRL+SHIFT+J.

  9. #9
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    cmq mi sono perso io, ovvio che conoscevo la console di javascript solo avevo visto che era diverso, non avevo realizzato ce era di un altro browser...cmq come potete vedere qui: http://gutguy2.altervista.org/ip/jso...egeoip.net.php e qui https://freegeoip.net/json/$ip$ (dacui prendo i dati) funzionano, come detto http://dazzlepod.com/ip/$ip$.json ha ".json" dopo l'ip quindi non posso usare il codice sopra semplicemente cambiando i dati.

  10. #10
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    non so se http://l2.io/ può essere d'aiuto, in pratica stampa l'indirizzo del visitatore usando javascript, basterebbe inserirlo dentro
    var url = "https://dazzlepod.com/ip/userip.json";
    cioè metterlo nel link di dazzlepod, ma non so come si fa

  11. #11
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    Ciao a tutti,
    Scrivo qui per non riaprire una nuova discussione.
    Recentemente mi è subentrata la necessità di loggare l'output json, potevo usare il codice js proposto
    ma alimentando il log con una pagine esterna a cui mando idati tramite un post dal codice js ho pensato
    che potevo fare il grab dei dati json direttamente in php visto che la pagina esterna &egrave; gi&agrave; in php,
    cos&igrave; uso qst codice:
    Codice PHP:
    <?php
    $ip
    =$_SERVER['REMOTE_ADDR'];
    if( !isset(
    $ip)) {$ip='';}
    $url = 'http://ip-api.com/json/'.$ip.'?fields=city';
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    if(
    $response = curl_exec( $curl )) {
    echo
    'curl_exec &egrave; andato a buon fine.<br>';
    if(
    curl_getinfo( $curl, CURLINFO_HTTP_CODE ) == '200' ) {
    echo
    'CURLINFO_HTTP_CODE era 200 come volevamo: curl_getinfo:<br>';
    $curl_info = curl_getinfo( $curl );
    print_r($curl_info);
    echo
    '<br>';
    $json = @json_decode($response, TRUE, JSON_PRETTY_PRINT);
    @
    $city = $json['city'];
    if( !isset(
    $city)) {$city='';}
    echo
    'Estraendo solo il campo city ottengo: '.$city;
    } else {
    echo
    'CURLINFO_HTTP_CODE non era 200 come volevamo: curl_getinfo:<br>';
    $curl_info = curl_getinfo( $curl );
    print_r($curl_info);}
    } else {
    echo
    'curl_exec non &egrave; andato a buon fine.';}
    curl_close($curl);
    ?>
    Putroppo ricevo solo una bella pagina bianca. Ho gi&agrave; cercato nel forum ed infatti qualcun'altro aveva il mio stesso
    problema la cui soluzione consigliata era di sbloccare le server2server cosa che io ho gi&agrave; fatto da tempo.
    Qualcuno riuscirebbe a darmi una dritta, sarebbe molto apprezzato. Grazie a chi rispondergi&agrave;.
    Ultima modifica di gutguy2 : 13-10-2019 alle ore 19.30.05

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Non capisco questo:
    Codice:
    fields=city/'.$ip.'.json
    Dalla documentazione non mi sembra sia corretto.

    Se vuoi ricavare la città, dovresti usare:
    Codice PHP:
    $url = 'http://ip-api.com/json/'.$ip.'?fields=city';
    Ciao!

  13. #13
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    Intanto grz per la risposta, hai ragione la doc dice quello ed infatti il mio primo codice puntava a quello ma come output avevo sempre una pagina bianca per quello l'ho scritta come vedi che è quello che ottengo aprendo il percorso, insomma non penso sia per quello che non va, deve essere il codice o meglio una restrizione di altervista dal momento che usandolo con un altro web server funziona

    Ho appena fatto una prova modificando l'url secondo la documentazione e cmq ottengo una pagina vianca
    Ultima modifica di gutguy2 : 13-10-2019 alle ore 19.29.10

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Non riesco a riprodurre il problema, a me funziona correttamente:
    Codice PHP:
    <?php
    $ip
    =$_SERVER['REMOTE_ADDR'];
    if( !isset(
    $ip)) {$ip='';}
    $url = 'http://ip-api.com/json/'.$ip.'?fields=city';
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    if(
    $response = curl_exec( $curl )) {
    echo
    'curl_exec &egrave; andato a buon fine.<br>';
    if(
    curl_getinfo( $curl, CURLINFO_HTTP_CODE ) == '200' ) {
    echo
    'CURLINFO_HTTP_CODE era 200 come volevamo: curl_getinfo:<br>';
    $curl_info = curl_getinfo( $curl );
    print_r($curl_info);
    echo
    '<br>';
    $json = @json_decode($response, TRUE, JSON_PRETTY_PRINT);
    @
    $city = $json['city'];
    if( !isset(
    $city)) {$city='';}
    echo
    'Estraendo solo il campo city ottengo: '.$city;
    } else {
    echo
    'CURLINFO_HTTP_CODE non era 200 come volevamo: curl_getinfo:<br>';
    $curl_info = curl_getinfo( $curl );
    print_r($curl_info);}
    } else {
    echo
    'curl_exec non &egrave; andato a buon fine.';}
    curl_close($curl);
    ?>
    Come output ottengo:
    curl_exec è andato a buon fine.
    CURLINFO_HTTP_CODE era 200 come volevamo: curl_getinfo:
    Array ( [url] => http://ip-api.com/json/***.***.***.***?fields=city [content_type] => application/json; charset=utf-8 [http_code] => 200 [header_size] => 192 [request_size] => 275 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.007936 [namelookup_time] => 8.9E-5 [connect_time] => 0.000125 [pretransfer_time] => 0.000143 [size_upload] => 0 [size_download] => 16 [speed_download] => 2016 [speed_upload] => 0 [download_content_length] => 16 [upload_content_length] => -1 [starttransfer_time] => 0.007932 [redirect_time] => 0 [redirect_url] => )
    Estraendo solo il campo city ottengo: Milan
    Se ottieni una pagina bianca, puoi eseguire "echo $url;"? Così vediamo come è l'url?

    Ciao!
    Ultima modifica di alemoppo : 13-10-2019 alle ore 19.43.05

  15. #15
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    Ancora grz, molto apprezzato. Mi da:
    http://ip-api.com/json/mio_ip?fields=city
    Poi vedere qui:http://gutguy2.altervista.org/json2
    Grz mill

  16. #16
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Quale versione di PHP stai utilizzando? Puoi provare ad usare la 5.6 o la 7? (la costante JSON_PRETTY_PRINT è disponibile solamente da PHP 5.4). Temporaneamente elimina i simboli "@" per visualizzare eventuali errori e capire i problemi.

    (la versione di PHP la puoi modificare dalla gestione files, cliccando sul tasto azzurro "PHP").

    Ciao!
    Ultima modifica di alemoppo : 13-10-2019 alle ore 22.06.25

  17. #17
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    Uso la 5.3.10, quando posso proverò a fare lo switch della versione php

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Allora ti confermo che è quello il problema. O utilizzi una versione più aggiornata di PHP oppure elimini quella costante, inesistente su PHP5.3:
    Codice PHP:
    $ip=$_SERVER['REMOTE_ADDR'];
    if( !isset(
    $ip)) {$ip='';}
    $url = 'http://ip-api.com/json/'.$ip.'?fields=city';
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    if(
    $response = curl_exec( $curl )) {
    echo
    'curl_exec &egrave; andato a buon fine.<br>';
    if(
    curl_getinfo( $curl, CURLINFO_HTTP_CODE ) == '200' ) {
    echo
    'CURLINFO_HTTP_CODE era 200 come volevamo: curl_getinfo:<br>';
    $curl_info = curl_getinfo( $curl );
    print_r($curl_info);
    echo
    '<br>';
    $json = json_decode($response, TRUE);
    $city = $json['city'];
    if( !isset(
    $city)) {$city='';}
    echo
    'Estraendo solo il campo city ottengo: '.$city;
    } else {
    echo
    'CURLINFO_HTTP_CODE non era 200 come volevamo: curl_getinfo:<br>';
    $curl_info = curl_getinfo( $curl );
    print_r($curl_info);}
    } else {
    echo
    'curl_exec non &egrave; andato a buon fine.';}
    curl_close($curl);
    ?>
    Ciao!

  19. #19
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    Ho tolto la costante in oggetto e ti confermo che ora funziona, quindi non so come ringraziarti.
    Eventualmente ho la possibilità di cambiare la vers di php solo per qst cartella? Con un htaccess magari?
    Ultima modifica di gutguy2 : 14-10-2019 alle ore 07.47.29

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •