Ciao a tutti,
devo passare i dati di un semplice form di 4 campi in modalità nascosta via "socket" ad un URL di destinazione esterno al mio sito.
Però non so come fare, qualcuno mi aiuta per favore ?
Grazie
Ciao a tutti,
devo passare i dati di un semplice form di 4 campi in modalità nascosta via "socket" ad un URL di destinazione esterno al mio sito.
Però non so come fare, qualcuno mi aiuta per favore ?
Grazie
Usando c-url
http://php.net/manual/en/book.curl.php
ok, ma mi è stato chiesto esplicitamente di usare un socket ...
é lo stesso ? è un'alternativa valida ? Pro e contro ?
....... leggi la documentazione di c-url
Se devi interrogare un web server lo fai tramite http request e in php il modo migliore e' usare la lib curl.
In alternativa hai le funzioni fsockopen (usate da curl), se usi le fsock...(open clos exec etc..) ti devi fare tutto l'interfacciamento e la gestione dello standard del protocollo richiesto manualmente. Se il protocollo di comunicazione e' http/s allora curl ti da gia' tutto.
Quindi se devi eseguire un "push" di dati tramite post ad un determinato url usa curl.
Pro :
- funzioni human readable
- facile da apprendere
- veloce
- gestisce gia' errori
- elevato tasso di configurabilità
Contro :
- elevato tasso di configurabilità
- prestazioni dipendenti dal server e linee
Non ho eseguito test super approfonditi su questa lib ma per quanto l'ho usata(abbastanza) e' utilissima in molti contesti, questa lib e' usata anche su plugins di alcuni servizi bancari per gestione pagamenti... vedi te.
ok grazie
No prob se servono altre info o hai dubbi stiamo qua
uhm ... "troppo complesso" per me ora per questo lavoretto che mi hanno richiesto (speravo fosse più semplice e veloce) ...
alla fine ho un form semplicissimo di tre campi per il quale devo far arrivare il contenuto in modo invisibile a questa URL (così mi hanno richiesto) e se per farlo devo studiarmi queste funzioni che mi sembrano non molto semplici e veloci, allora per ora lascio stare un attimo e vedo se trovo un'alternativa ... scusatemi, non sto buttando la spugna ma non ho il tempo materiale per buttarmi sopra a studiare e testare questa funzione
o.O
scritp che gestisci il submit del form
ecco tutte le option che hai : http://www.php.net/manual/en/function.curl-setopt.phpCodice PHP:
$data = $_POST ;
$ch= curl_init();
curl_setopt_array( $curl , array(
CURLOPT_URL => "http://www.target.com" ,
CURLOPT_FOLLOWLOCATION => true ,
CURLOPT_POST => $data ,
CURLOPT_RETURNTRANSFER => true
) );
$ris = curl_exec($ch);
curl_close($ch);
var_dump($ris);
In base a quello che devi fare imposti le relative opzioni .... sinceramente nn capisco dove stia la difficoltà ..
Si sono tantissime opzioni infatti ho segnato sia come pro che come contro... puoi fare di tutto ma davvero di tutto, spedire cookies, user agents, formattare l'header ocme ti pare o come ti richiedono ... insomma... non vedo perche' devi complicarti la vita quando puoi usare questo layer per le interrogazioni remote... beh poi vedi te
Ciao e grazie per l'aiuto ... allora vediamo se riesco a farlo insieme a te ...
Intanto partiamo dal mio form che è questo:
Ora guardando il tuo codice postato e facendo una ricerca in più su Google ho trovato un articolo di un ragazzo che ha creato un metodo per inviare dati POST di un form proprio tramite c-url ...codice:<form name="form2" id="form2" method="post" action="http://nomedominiodiatterraggio/paginadiatterraggio.php"> <input name="surname" type="text" id="surname" class="textfieldImput" value="" size="30"/> <input name="name" type="text" id="name" class="textfieldImput" value="" size="30" /> <input name="email" type="text" id="email" class="textfieldImput" value="" size="30" /> <input name="privacy" type="checkbox" id="privacy" value="Y" /> <input name="area" type="hidden" value="newsletter" /> <input name="send_mail" type="hidden" value="Y" /> <input name="newsletter" type="hidden" value="Y" /> <input name="bottone" type="submit" class="testo12nero" value=" Invia " > </form>
Clicca qui per vedere il link con la prova fatta da questo ragazzo. In realtà è abbastanza simile al tuo esempio.
Lui ha creato questo codice:
Ora come integro il tuo o il suo esempio nella mia pagina del form ?codice:< ?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.esempio.com/percorso/del/form"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, true); $data = array( 'foo' => 'foo foo foo', 'bar' => 'bar bar bar', 'baz' => 'baz baz baz' ); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $output = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); ?> la variabile "$info" conterrà il risultato dei dati postati.
Mi dai un'ultima mano ?
Grazie a priori ...
Nessun problema allora il tuo form deve puntare un tuo personale script .php.
Nello script php puoi eseguire tutti i controlli che preferisci prima di spedire i dati al server esterno.
Poi impoti le opzioni e quindi avvi la chiamata curl .
il flow :
form --[request+postdata]-->tuo server+tuoscript.php->gestione dati->avvio chiamata curl->[request+postdata]-->server esterno ->[response]-->tuo server gestisci response -> termina tuoscript.php
il tuo form nel www.tuosito.com, il tuoscript lo chiamiamo gestoreform.php
il file gestoreform.phpcodice:<form name="form2" id="form2" method="post" action="/actions/gestoreform.php"> dati vari </form>
Codice PHP:
// inizializzo struttura dati
$data = array();
// Eventuale layer di controllo per gestire i dati in POST
// alla fine $data conterrà i dati correttamente formattati da spedire al server esterno
// Una versione di test
$data = $_POST;
// Inizializzo l'handler curl
$ch= curl_init();
// Configuro i paramentri e i dati per la request da eseguire
// Posso passare la configurazione anche da array ... non serve impostarle 1 alla volta
curl_setopt_array( $ch , array(
CURLOPT_URL => "http://www.target.com" ,
CURLOPT_FOLLOWLOCATION => true ,
CURLOPT_POST => true, // qui avevo sbagliato io scusa ora e' corretto
CURLOPT_POSTFIELDS => $data ,// infatti i dati in post vanno messi qui
CURLOPT_RETURNTRANSFER => true
) );
// eseguo la request(connessione->invio dati->interecetta risposta)
$ris = curl_exec($ch);
// Chiudo la connessione
curl_close($ch);
// Stampo il risultato
var_dump($ris);
$ris contiene la risposta del server che per ora devi vedere e successivamente analizzare gestire per renderla trasparente all'utente( l'utente non deve vedere nulla di quel dato se non quello che vuoi tu)