- Home
- Categorie
- Coding e Sistemistica
- PHP
- [php/c++/java] dialogare autonomamente col client
-
[php/c++/java] dialogare autonomamente col client
salve,
sto cercando il modo di inviare dati ad una pagina php ma ho 1 vincolo:il client non deve inviare alcuna richiesta http,
ergo non posso:- refreshare la pagina
- cambiare pagina
- usare ajax et similia.
in pratica la pagina "dovrebbe" cambiare automaticamente sotto "input" che parte direttamente dal server. .
Il problema è: come faccio a far partire 'sto benedetto input?
E come faccio a farlo arrivare solo ed esclusivamente a quell'utente?pensavo a qualche applicazione in c++/java in alternativa a php. oppure cosa??
-
Potresti usare le socket o una classe che le usa... ad esempio con la classe Snoopy e questo codice:
[php]$snoopy = new Snoopy();
// Valori da inviare
$form[$input_name] = $input_value;$snoopy->submit('http://www.sito.it/submit.php', $form);[/php]
Fai una richiesta POST alla pagina "http://www.sito.it/submit.php".
-
ok ok m'informo sulle Socket e vedo cosa si può fare
-
ho girato un po' in rete, ma non ci ho capito molto. hai qualche guida/link/dritta da consigliarmi su:
- cos'è una socket?
- come funziona in php (ho guardato sul manuale, ma non ci ho capito troppo..)
-
Una richiesta HTTP POST (tipo quando invii un form con method post) è una cosa del genere:
POST /login.php HTTP/1.1 Host: www.host.it Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Content-Length: 1245 var1=valore1&var2=valore2 ```GET invece:
GET /login.php?var1=valore1&var2=valore2 HTTP/1.1
Host: www.host.it
Content-Type: application/x-www-form-urlencoded; charset=UTF-8Per fare la stessa cosa che farebbe un browser, ma lato server e con PHP, si può fare così: [php]// Apertura connessione a www.host.it usando la porta 80 $con = fsockopen ( 'www.host.it', 80); // Invio richiesta fwrite($con, 'POST /login.php HTTP/1.1 Host: www.host.it Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Content-Length: 1245 var1=valore1&var2=valore2');[/php]Se ti interessa il risultato... continua sul manuale :D Una cosa, ogni linea deve terminare con "\r\n". Tra header e body ci deve essere un ulteriore \r\n... Content-Length: dovrebbe contenere il peso del body, quindi: [php]strlen('var1=valore1&var2=valore2')[/php]Comunque con una classe è più semplice: [php] $snoopy = new Snoopy(); // Valori da inviare $form['var1'] = 'valore1'; $form['var2'] = 'valore2'; // Invio POST $snoopy->submit('http://www.sito.it/submit.php', $form); // Invio GET $snoopy->fetch('http://www.sito.it/submit.php?var1=valore1&var2=valore2'); // Risultato echo $snoopy->results;[/php]Puoi usare anche la libreria CURL... ma più o meno la "solfa" è sempre questa.
-
Grazie mille FRA_T
solo 1 ultima info - come posso inviare questi dati esclusivamente ad uno /due client precisi su un numero indefinito di client connessi alla stessa pagina?
sul manuale ho trovato questo:
...connessione nel dominio Internet (AF_INET, usando TCP o UDP) o Unix (AF_UNIX). Per il dominio Internet, apre una connessione a un socket TCP verso l' hostname sulla porta port. hostname può essere in questo caso, sia un fully qualified domain name o un indirizzo IP. Per le connessioni UDP, è necessario specificare esplicitamente il protocollo, usando: 'udp://' come prefisso di hostname. Per il dominio...
ma nn credo faccia molto al caso mio...
-
Mi ero perso la tua risposta ^_^
Non so, il codice che ti ho postato da per scontato che il cliente richiede una pagina al server, che a sua volta esegue una richiesta ad un server e fornisce eventuali risultati al client che ha richiesto la pagina.