Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Gprs...

  1. #1

    Gprs...

    Salve a tutti,

    volevo sapere se c'è un modo 'semplice' di ricevere dati inviati tramite GPRS con il PHP.

    Mi spiego meglio.
    Ho dell'hardware che invia ogni tot. secondi una stringa di dati ad un indirizzo IP ed una specifica porta tramite GPRS.
    Quello che voglio fare è ricevere questi dati per poi metterli in un db. Il db non è un problema.

    Non capisco però come ricevere questi dati, che poi è solo una stringa di dati, nulla di più.

    Inserisco qui un semplice codice per verificare che la richiesta al mio IP arrivi. Lo script non ha altro che andare a scrivere dentro un file la data odierna ogni qual volta arriva una richiesta. Vorrei appunto poter scrivere anche l'oggetto della richiesta.

    Codice PHP:
    $f = @fopen("dati_1.txt""a+"); // 
    if ($f

    $frase date("d-m-Y")." ".date("H-i-s")." ".$_GET['ID']."\n"
    fputs($f,$frase);
    fclose($f);  

    Grazie mille a chiunque vorrà darmi una mano...

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    bisogna vedere come l'hw formula la "richiesta"... può essere più un problema di programmazione server, che php... che tipo di chiamata è effettuata? hai forse la possibilità di configurare qualcosa sull'hw? se facesse una chiamata http allora potresti sicuramente usare direttamente uno script php per la gestione, ma bisogna vedere com'è composta... eventualmente consultando i log del server se non hai altre info

  3. #3
    Intanto grazie per la risposta.

    Dunque purtroppo non ho modo di lavorare sull'hw.
    Per quanto riguarda il 'come' vengono inviati i dati, ti scrivo qui quello che mi da il manuale come informazioni:

    GPRS messages are sent over a GSM network. Supported GSM frequencies are
    850/900/1800/1900MHz.
    GPRS messages are sent in a fixed 8-field textual format: “N, D, L, D1, V, T1, T2, S1”. Fields are separated by a comma which may not be used as part of any field.

    Le lettere hanno poi dei riferimenti, ma nulla più che una semplice legenda.

    La cosa che mi fa supporre si possano ricevere i dati direttamente dal PHP, è che a quanto parte l'hw può inviare i dati anche ad un semplice dominio del tipo www.nomedominio.it. In questo modo la richiesta finisce direttamente nella index di quel dominio.


    Posto di inviare i dati ad un IP e porta specifica, non esiste al più un modo con il PHP per monitorare tutte le richieste che vengono fatte?

    P.s. Nel caso in cui fosse una richiesta http, come potrei usare 'direttamente' uno script php?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi provare con i wrappers dell'input standard: diciamo che resta da capire "dove" va la chiamata... potrai almeno configurare l'ip o l'url da chiamare? se sì metti qualcosa come www.example.com (o indirizzo ip) /tuofile.php, dove tuofile.php è quello che userai per i test, altrimenti - se non puoi specificare il percorso/file - metti un .htaccess che redirezioni tutte le chiamate verso tuofile.php, in cui poi inserisci anche un dump di $_SERVER per vedere il tipo di chiamata, anzi, io comincerei proprio così:

    - imposta il server
    - imposta l'hw chiamando il tuo script (se non puoi specificare il file usa .htaccess)
    - nello script metti:

    Codice PHP:
     <?php print_r($_SERVER);exit; ?>
    e basta e posta qui il risultato

  5. #5
    Intanto GRAZIE!! Adesso mi sembra di intuire che la soluzione sia a portata di mano =)

    Ecco il risultato del print_r

    codice:
    Array ( [TMP] => C:/PROGRA~2/EASYPH~1.1/tmp [PATH] => C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\php;C:\Windows\SysWOW64;C:\Program Files (x86)\QuickTime\QTSystem\;C:\PROGRA~2\EASYPH~1.1\Apache\bin;C:\PROGRA~2\EASYPH~1.1\PHP [SystemRoot] => C:\Windows [COMSPEC] => C:\Windows\system32\cmd.exe [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC [WINDIR] => C:\Windows [SERVER_SIGNATURE] => [SERVER_SOFTWARE] => Apache/2.2.21 (Win32) PHP/5.3.8 [SERVER_NAME] => 127.0.0.1 
    [SERVER_ADDR] => 192.168.1.104 
    [SERVER_PORT] => 80 
    [REMOTE_ADDR] => 192.168.1.104 
    [DOCUMENT_ROOT] => D:/www/ 
    [SERVER_ADMIN] => admin@127.0.0.1 
    [SCRIPT_FILENAME] => D:/www/index.php 
    [REMOTE_PORT] => 59748 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [SERVER_PROTOCOL] => HTTP/0.9 
    [REQUEST_METHOD] => Test_1,2.399,0.081,0.0,324.0,25.0,30.0,0  
    [QUERY_STRING] => [REQUEST_URI] => [SCRIPT_NAME] => /index.php 
    [PHP_SELF] => /index.php 
    [REQUEST_TIME] => 1340361113 )
    La stringa in grassetto è quella che mi interessa ricevere. In teoria già adesso, grazie al tuo aiuto, potrei tirarla fuori andando con il PHP ad esaminare $_SERVER fino a trovare [REQUEST_METHOD] e prendere 'quello che viene dopo'.

    Resta solo da capire (per me) da questa stringa da dove andare a vedere di che tipo di richiesta si tratta.
    Confesso che è la prima volta che mi imbatto in un problema di questo tipo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Perfetto! Dunque:

    si tratta di una "normale" richiesta HTTP con metodo customizzato... sostanzialmente devi semplicemente recuperare le info che ti servono così:

    Codice PHP:
    $data $_SERVER['REQUEST_METHOD']; // <--- questo è ciò che ti serve 

    ...detto questo potresti aggiungere dei "controlli" se il server ha accesso pubblico (questo non lo so...): se è così magari puoi controllare che la porta e l'ip di chiamata siano autorizzati, in pratica controllando:

    Codice PHP:
    $auth_ip '192.168.1.104'// è un esempio basato sul tuo snippet
    $auth_port '59748'// forse questa è sempre così: fai delle prove
    $remote_addr $_SERVER['REMOTE_ADDR'];
    $remote_port $_SERVER['REMOTE_PORT'];
    $auth = (($remote_addr==$auth_ip)&&($remote_port==$auth_port));
    if (
    $auth) {
      
    // ok
    } else {
      
    // non autorizzato
    }; 

  7. #7
    Funziona alla grande!!!!!

    GRAZIE MILLE!! era esattamente quello che mi serviva =)

    Tra l'altro, essendo un server con accesso pubblico, la tua idea del controllo calza a pennello. Mi hai persino scritto lo script per il controllo, davvero davvero grazie =)

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    A buon rendere :) ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.