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
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
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.
per il momento sto facendo le prove sul mio Apache in locale con questo, prendendo il form di esempio da google.com:
non ho capito però perchè non stampa nulla nè restituisce alcun errore, pagina bianca.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 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
è 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);
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;
Come sei con le impostazioni di visualizzazione degli errori?
metti in cima allo script
codice:error_reporting(E_ALL);
Errare humanum est, perseverare ovest