Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Grab sito remoto

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376

    Grab sito remoto

    buongiorno!
    lo scenario è il seguente:

    devo mostrare sul sito A un form presente sul sito B: cosa dovrei usare? file_get_contents, fread, fsockopen non ho ben capito.
    Grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,918
    file_get_contents() se devi prendere tutto il contenuto della pagina, quindi se su quel file ci sono anche altre cose che non ti servono non va bene o al limite devi poi stare lì a rimuovere le parti che non vuoi.

    fread() fa la stessa cosa di file_get_contents(), ma devi assicurarti anche che ti sia possibile aprire handle verso file esterni al server. Vedi la documentazione per ulteriori informazioni.

    fsockopen() richiede che dall'altra parte ci sia il server in ascolto sul socket che specifichera e che risponda alle richiestei, se non c'è non te ne fai niente.

    Quindi: cosa devi usare dipende da come è strutturato il server o la pagina da cui vuoi prendere il form.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    per il momento sto facendo le prove sul mio Apache in locale con questo, prendendo il form di esempio da google.com:

    codice:
    <?php
        $benq = file_get_contents("https://www.google.com");
        $benq_matches = array();
        preg_match_all('#<form class="tsf nj" action="/search" style="overflow:visible" data-submitfalse="q" id="tsf" method="GET" name="f" role="search">(.*?)</form>#', $benq, $benq_matches);
        $benq_num = count($benq_matches[1]);
        for ($i=0 ; $i < $benq_num; $i++) {
            echo $benq_matches[1][$i] . ' ';
            echo "\n";
        }
    ?>
    non ho capito però perchè non stampa nulla nè restituisce alcun errore, pagina bianca.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,918
    Non stampa nulla perché la tua espressione regolare non prende nessun risultato, quindi $benq_matches è vuota e nel for non ci entri.

    Prova a fare un
    print_r($benq_matches);

    vedrai che l'array è vuoto.

    Se devi includere la ricerca di Google ci siano modi più semplici
    https://www.wikihow.com/Add-a-Google...o-Your-Website

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    è vuoto infatti. Ho indicato il form di google ma non per includere la ricerca ma solo per indicare un qualsiasi form che sia compreso tra i tag appositi.

    Come fa a non prendere risultati?
    Qui il codice semplificato di una pagina dove so che esiste quel tag form
    preg_match_all('#<form action="pagina.php" method="GET">(.*?)</form>#', $benq, $benq_matches);

  6. #6
    Utente di HTML.it L'avatar di ninja72
    Registrato dal
    May 2020
    residenza
    -
    Messaggi
    79
    Ciao, scarica Snoopy è una classe php che forse fa al caso tuo.

    https://sourceforge.net/projects/snoopy/

    Codice PHP:
    <?php

    include_once 'Snoopy.class.php';

    $url "https://www.google.com";

    $snoopy = new Snoopy;

    if(
    $snoopy->fetchform($url)){
        
    $result $snoopy->results;
    }
    echo 
    $result;

  7. #7
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,866
    Come sei con le impostazioni di visualizzazione degli errori?

    metti in cima allo script
    codice:
    error_reporting(E_ALL);
    Errare humanum est, perseverare ovest

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.