Visualizzazione risultati 1 fino 9 di 9

Discussione: get_headers non funziona su Altervista

  1. #1
    Guest

    Predefinito get_headers non funziona su Altervista

    Forse capita solo a me, in locale non ho problemi ma su altervista il seguente codice
    non produce risultati:

    $url = $_POST['link'];
    $header = @get_headers($url);

    se provo a stampare la variabile $header non compare nulla.
    Cosa potrebbe essere?

    Grazie

  2. #2
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Il problema è che quasi tutte le funzioni sono ristrette ai percorsi interni e quindi niente http:// (uri) per queste funzioni...
    Se rimuovi le restrizioni per le librerie curl e la funzione fsockopen dal pannello di controllo inviando un sms, puoi risolvere con questo script:

    Codice PHP:

    $ch
    = curl_init($_POST["link"]);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $header = curl_exec($ch);
    curl_close($ch);

    echo
    $header;
    Saluti!
    Ultima modifica di mycarlo : 14-12-2009 alle ore 23.36.20

  3. #3
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Su AV non funziona, puoi utilizzare fsockopen o cURL:
    Codice PHP:
    <?php
    $url
    = 'http://www.google.it';
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $r = curl_exec($ch);
    curl_close($ch);
    echo
    $r;
    ?>
    o questo:
    Codice PHP:
    <?php
    $socket
    = @fsockopen('www.google.it', 80, $errno, $errstr, 30);
    if(!
    $socket)
    echo
    "$errstr ($errno)<br />";
    else{
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.google.it\r\n";
    $out .= "Connection: Close\r\n\r\n";
    @
    fwrite($socket, $out);
    $header = '';
    do{
    $header .= @fgets($socket, 128);
    }while(
    strpos($header, "\r\n\r\n") === false);
    echo
    $header;
    @
    fclose($socket);
    }
    ?>

  4. #4
    Guest

    Predefinito

    Grazie a entrambi, ora ci provo e vi faccio sapere

  5. #5
    Guest

    Predefinito

    Vi ringrazio funziona perfettamente, ora però ho un altro problemone: leggendo l'header, per qualsiasi sito io inserisca ottengo questo messaggio:

    HTTP/1.0 403 Forbidden ecc...

    Ho letto che potrebbe essere causato da un proxy.
    Io mi collego ad internet tramite router, potrebbe c'entrare qualcosa? Di sicuro il problema è mio visto che ottengo quel messaggio digitando qualsiasi indirizzo.

  6. #6
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Citazione Originalmente inviato da lincalo Visualizza messaggio
    Vi ringrazio funziona perfettamente, ora però ho un altro problemone: leggendo l'header, per qualsiasi sito io inserisca ottengo questo messaggio:

    HTTP/1.0 403 Forbidden ecc...

    Ho letto che potrebbe essere causato da un proxy.
    Io mi collego ad internet tramite router, potrebbe c'entrare qualcosa? Di sicuro il problema è mio visto che ottengo quel messaggio digitando qualsiasi indirizzo.
    Hai sbloccato la whitelist?
    Per sbloccare la whitelist vai Pannello di Controllo -> AlterSito -> Risorse & Upgrade -> Server to server e procedi con l'identificazione.

  7. #7
    Guest

    Predefinito

    Scusami, errore da principiante, ora l'ho fatto e funziona tutto ok.
    Abuso della tua cortesia per chiederti un'ultima informazione: per verificare la validità dell'indirizzo cosa mi consigli?
    Fare una if(curl_errno($ch)) oppure controllare che nell'header sia contenuto il numero 200?

  8. #8
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Puoi fare così:
    Codice PHP:
    $status = substr($header, 9, 3);
    if(
    $status == 200){
    }

  9. #9
    Guest

    Predefinito

    Ok grazie, alcuni header però restituiscono 302...ho fatto un po' di prove con

    if(curl_errno($ch)) {}

    e sembra funzionare bene.

Regole di scrittura

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