Newsgroup: it.comp.www.php
Titolo: fsockopen e google

Salve,
sto giocando un po con fsockopen  e stavo provando a farmi restituire
i risultati di una pagina di google.
Io pensavo di passargli come paramtro q=pippo ad esempio dato che q è
la variabile mi sembra che utilizza nel campo ricerca ma non mi riesce
ottenre risultati.
Qualcuno mi può aiutare?
Mik

 ottenre risultati.
Effettuare query automatiche su google viola i termini di utilizzo.
Inoltre il motore di ricerca utilizza alcune tecniche base per evitare
tale comportamento. Se vuoi imparare ad utilizzare fsockopen ti
suggerisco di provare ad interfacciarti con un'altro sito (o con script
in locale).
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/


prova con le API di google se vuoi fare un lavoro simile

Facevo un esempio, ho letto altre discussioni su fsockopen e ho visto
che non si possono fare cose del genere.
Io lo portavo come esempio e avevo fatto un tentativo in quel senso.
Cmq mettiamo che la pagina web abbia un campo nominato var. Come
faccio a passargliela? ho provato a mettere in parametri di fsockopen
var=pippo ma non mi va. Inoltre se io inserisco nel campo var qualcosa
tipo pippo e premo il bottone di solito ottengo una pagina che ha comp
indirizzo qualcosa del tipo 
www.example.com/search.php?q=pippo
 giusto?
Ma il nome della pagina è cambiato ora non è più solo 
www.example.com
(immagino
ci metta index.php in automatico) quindi quando apro fsockopen devo
mettere nel nomde dell'host 
www.example.com
 o 
www.example.com/search.php
??

 mettere nel nomde dell'host 
www.example.com
 o 
www.example.com/search.php
??
Credo tu stia confondendo diversi concetti, fsockopen() serve per aprire 
una socket e non per mandare i dati.
I dati che esistono all'interno di una form di un documento html vengono 
passati al livello HTTP, e vengono passati secondo i parametri della 
form (vedi il metodo). Quello che restituisce il server può variare 
molto e determina l'indirizzo che "vedi" dopo un submit.

Ho spiegato male.
I penso che una volta aperta la connessione con fsockopen posso
passargli dei parametri con fput e fget no?
ALtrimenti come pensi potrei fare? Forse non sbaglio ad aver pensato
di utilizzare fscokpen con fput e fget?

 di utilizzare fscokpen con fput e fget?
Con fput e fget non puoi passare parametri ad una socket, quelli li devi 
passare al momento della creazione.
Il punto è che quegli elementi della pagina html che chiami parametri, 
come ad esempio il valore di un campo testo di una form, vivono ad un 
livello diverso da fput e fget.
Vivono come carico di HTTP che a sua volta tu stai usando con le socket, 
ma a questo punto, in cui sei sceso almeno di due livelli, il rischio di 
confondersi parlando di "parametri" è forte.
Ma magari è semplicemente che non ci siamo capiti.

Mi spiego ho un sito dal quale ho bisogno, interrogandolo più volte,
di estrarre delle informazioni. Il sito è composto da  campi con una
data e parametro di ricerca e io volevo fare più chiamate (es data1
dato1 e data2 dato2 ) a questo sito per ottenere varie informazioni.
Il sito è mio quindi non ho problemi di permessi per fare le ricerche
solo che non l'ho fatto io ne detengo solo la proprietà e inoltre non
volevo modificarlo dall'interno per farmi dare sti dati ma fare una
pagina web che lo interrogasse.
Come posso fare?

 Come posso fare?
Ma vuoi realizzare le interrogazioni in php?
Se sì sono ragionevolmente sicuro che ci sia già qualche classe pronta 
per gestire HTTP.
Devi trovare questa classe, leggerne un po' la documentazione e vedere 
come chiamare i metodi, probabilmente ci saranno le opzioni per passare 
direttamente i parametri in modo che la classe gestisca il tutto.
In alternativa se proprio vuoi dialogare con fwrite() e fread() dorai 
scriverti a mano il metodo GET (e forse POST?) di HTTP.
Se il metodo della form che devi inviare è "get" i parametri li passerai 
nell'url separandoli dall'url (che precede i parametri) con un punto 
interrogativo, e tra di loro con il carattere di ampersand. Se invece il 
metodo è "POST" i parametri vanno a parte dopo l'url, per la 
formattazione specifica devi cercare un po'.

 Mik
Prova ad usare le CURL.
Ciao,
    Fabrizio
--website: 
http://www.negusweb.it
--lighest streaming player: 
http://www.radioconnectsoftware.com

Non riesco a trovare alcuna classe che si adatti al mio scopo si
voglio farlo dentro php.

 voglio farlo dentro php.
Hai letto bene la documentazione?
A quest'indirizzo
http://it.php.net/manual/it/function.curl-exec.php
c'è un ottimo esempio!!
Ciao,
   Fabrizio
--website: 
http://www.negusweb.it
--ligntest streaming player: 
http://www.radioconnectsoftware.com


Ti conviene lanciare con popen "lynx -source URL" e processarne l'output 
con fgets, fsockopen come ti e` stato detto e` per aprire flussi TCP che 
non sanno nulla di HTTP e tantomeno di URI e URL.
Bye,
  Gabry

 flussi TCP che non sanno nulla di HTTP e tantomeno di URI e URL.
Hai letto il primo esempio del manuale ufficiale relativo a
http://www.php.net/fsockopen
 prima di postare?


 
http://www.php.net/fsockopen
 prima di postare?
Perň effettivamente fsockopen non conosce HTTP e gli URI, questo non 
toglie che l'esempio sia semplice (ma č anche un problema semplice).
Viste le premesse una classe dedicata mi sembrava la via piů semplice.

 
http://www.php.net/fsockopen
 prima di postare?
Si, solo il fatto che in un esempio crafti a mano un header HTTP mica 
significa che fsockopen sa qualcosa del protocollo UDP...
Se ci mettevano fputs($fp, "USER xxx\n\r"); fputs($fs, "PASS 
xxxxx\n\r"); dovevo dire che fsockopen sa gestire il POP3?
Tra l'altro fare a mano un header di HTTP/GET e` piuttosto semplice, ma 
gestire la risposta da un server HTTP/1.1 ad esempio e` una cosa che a 
mano richiede svariate centinaia di righe di codice.
Bye,
  Gabry

 che a mano richiede svariate centinaia di righe di codice.
Si, certo, ma e' sempre meglio che utilizzare "lynx -source URL". 
Inoltre esistono decine di classi gia' pronte (es. Snoopy) che
gestiscono il protocollo HTTP senza dover scrivere "svariate centinaia
di righe".
Per non parlare di curl.
