PDA

View Full Version : [PHP] cURL: richiesta pagina, ricerca nella pagina e invio dati?


biowep
17-11-2010, 13:26
Ciao
vorrei realizzare uno script che salvi del contenuto di una pagina dentro una variabile
ho provato
$cookie="cookie.txt";

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://google.it/");
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);

$result = curl_exec ($ch);
echo $result;
curl_close($ch);
il problema è che $result contiene la pagina "http://google.it/" e non "http://www.google.it/" come indicato nel "Location" dell'header di risposta della pagina "http://google.it/"
eppure CURLOPT_FOLLOWLOCATION è impostato true


una volta salvato questo contenuto nella variabile, come faccio a ricercare del testo nella pagina e salvarlo in un'altra variabile?
<input type="text" class="control2h" name="lavoratori" id="2h-value2" onkeyup="slide2.setValue(parseInt(this.value))">
vorrei prendere il valore dentro il problema è che quel valore è il risultato di una elaborazione javascript; è possibile farlo con php?

ultimissima domanda
come posso impostare l'header della richiesta in modo da inviare dei dati come da un form POST?

biowep
17-11-2010, 21:40
sono riuscito a fare qualche cosa anche se il codice è uno schifo unico
possibilmente consigliatemi qualcosa di meglio
<?php
$username="biowep";
$password="Carbonca";
$cookie="cookie.txt";

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://google.it/");
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_AUTOREFERER, true);
curl_setopt ($ch, CURLOPT_HEADER, true);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);

$result = curl_exec ($ch);
$loc = (substr(strstr($result, "Location:"), 10, strpos(strstr($result, "Location:"), "\n")));
curl_setopt ($ch, CURLOPT_URL, $loc);
curl_setopt ($ch, CURLOPT_HEADER, false);
$result = curl_exec ($ch);
echo $result;
curl_close($ch);
?>

questo serve per stampare la nuova pagina [indicata in Location: dell'header di risposta]
cosa che dovrebbe fare in automatico con CURLOPT_FOLLOWLOCATION e che evidentemente non fa


mi stavo chiedendo se per caso esistesse un array che comprenda le informazioni dell'header di risposta della pagina richiesta


decifrare $loc non deve essere facile :D
scusate ma le mie conoscenze sono estremamente superficiali
per scrivere anche una minima cosa devo continuamente consultare la guida