Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 56
Like Tree2Likes

Discussione: [PHP] Caricamento dati da arduino a pagina php

  1. #1
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito [PHP] Caricamento dati da arduino a pagina php

    Buongiorno, vorrei caricare dei dati che Arduino rileva da un sensore e poi trasmette tramite Http POST a una pagina chiamata aggiungi.php sul mio sottodominio. La suddetta pagina ha il compito di acquisire il dato e salvarlo sul database. Per quanto riguarda Arduino, si connette al server e da quanto ho potuto constatare consultando altri progetti simili invia il dato via POST Http, ma il server risponde con un 500 Internal Error. Facendo stampare alla pagina vari messaggi di errore si vede che l' array $_POST[] è vuoto. A questo punto la mia domanda è: devo agire sul file .htaccess? Se si in che modo? Vi dico subito che sono alle prime armi con la programmazione e ho consultato tutte le guide possibili e immaginabili tra PHP, Apache e forum di Altervista, ma non mi è molto chiaro su cosa agire e come. Posto di seguito i codici della pagina e di .htaccess (che ho copiato da una discussione simile e + o - adattato al mio profilo). Ringrazio anticipatamente chiunque abbia tempo e voglia di darmi delle dritte.

    Codice PHP:
    ​<!DOCTYPE html>
    <html>
    <body>
    <script>var lettura = "<?php $lettura;?>"
    document.getElementById("escilo").innerHTML = $lettura</script>
    <?php
    $lettura
    = $_POST['lettura'];
    if (isset(
    $_POST['lettura']))
    echo (
    $_POST['lettura']);
    else echo (
    'no<br>');
    echo
    var_dump($_POST);
    $con = mysqli_connect('localhost','honeyecompost','','my_honeyecompost') or die('db non connesso<br>');
    if (!
    $con)echo "db non connesso";
    else echo
    "<br>db connesso<br>";
    $select=mysqli_select_db($con,'my_honeyecompost') or die ('<br>db non selezionato');
    if (
    $select){echo "db selezionato";}
    $toinsert = "INSERT INTO letture_umidità
    (LETTIERA0)
    VALUES
    (
    {$_POST['lettura']})";
    $result= mysqli_query($con,$toinsert) or die('<br>query non eseguita'); //order executes
    if($result){
    echo(
    "<br>Inserimento avvenuto correttamente");
    } else{
    echo(
    "<br>Inserimento non eseguito");
    }
    mysqli_close();
    ?>
    <p id="escilo">lettura=</p>
    </body>
    </html>
    ...e questo è quanto ho scritto in .htaccess:

    Codice:
    # # av:PHP-RG
    php_flag register_globals on
    <IfModule mod_rewrite.c>
    	RewriteEngine on
    
    	RewriteCond %{REQUEST_METHOD} ^POST$ [NC]
    	RewriteCond %{HTTP_REFERER} !^$
    	RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]*)honeyecompost\.altervista\.org/aggiungi.php
    	RewriteRule .* - [R=405,L]
    </IfModule>
    P.S: So benissimo di avere scritto istruzioni ridondanti in .php, ma è una pagina di prova e il problema più grossoadesso è il dato non caricato in POST.

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Facendo stampare alla pagina vari messaggi di errore si vede che l' array $_POST[] è vuoto
    Se è solo questo il problema allora la situazione è chiara: arduino non sta inviando correttamente i parametri POST, è un problema del client.

    In realtà guardando il codice sembra ci siano anche altri problemi, per esempio c'è un JavaScript che usa del PHP (cosa possibile, ma strana...) per impostare il valore della variabile lettura a $lettura, che in quel momento non è ancora definito, e poi alla riga seguente invoca un innerHTML sul un elemento del DOM che in quel momento pure non è definito, usando come valore un $lettura che non esiste (nel JavaScript). Tutto questo per andare a scrivere dentro un <p> HTML: probabilmente puoi rimuovere tutta la parte JavaScript e usare direttamente
    Codice PHP:
    <p id="escilo">lettura=<?php echo $_POST['lettura']; ?></p>
    Anche la scelta di restituire un HTML anziché JSON/XML in un contesto (probabilmente) di API Arduino è abbastanza inusuale.

    Il .htaccess che hai mostrato più che altro fa riscritture di URL, nulla a che vedere con $_POST e simili. Se arrivi alla pagina corretta puoi essere certo che il problema non è lì. Se invece ti accorgi che la pagina PHP non sta ricevendo le richieste, allora forse c'è qualcosa che non va nel .htaccess.

    Se non l'ha già fatto, dovesti analizzare la pagina e il sistema Arduino separatamente. Per la pagina dovresti provare a effettuare richieste POST semplicissime da una pagina HTML, giusto per vedere se funziona. Per Arduino dovresti invece inviare le richieste ad una pagina che crei un file di log col contenuto della richiesta, così da verificare che tutti i parametri siano passati correttamente.

    I suggerimenti che do più spesso:


  3. #3
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Register globals è deprecata non esiste mai il suo utilizzo anzi è probabile che verrai hackerato.
    La variabile $_POST legge il contenuto del body della richiesta POST e cioè nella forma var1=valore1&val2=valore2 in php sarà creata aggiungendo la chiave a $_POST ($_POST['var1'] e $_POST['var2'] del precedente esempio) se diversa da tale formato puoi utilizzare
    Codice PHP:
    echo file_get_contents("php://input");
    che legge i dati POST grezzi (eccetto enctype="multipart/form-data").
    EDIT: Ecco l'esempio per inviare var1=val tramite metodo POST direttamente con php https://www.php.net/manual/en/context.http.php
    Comunque se la richiesta è POST (pagina attuale), e se il refer è diverso da vuoto/inesistente (prima dell'invio dati POST), e se il refer è diverso dal percorso aggiungi.php compreso l'assenza del sottodominio (prima dell'invio dati POST) in quel caso verrà inoltrato alla pagina http 405 non permesso.
    (Da arduino) Sei sicuro di inviare i dati POST chiave=valore?
    Inizialmente dovrai verificare l'esistenza di
    Codice PHP:
    <?php
    $lettura
    = null; // Inizializzazione variabile a null
    if(isset($_POST['lettura'])) { // Verifica esistenza
    $lettura = $_POST['lettura']; // Sovrascrivo al valore $_POST['lettura']
    }

    ?>
    Sono testo ma potrei anche essere Markup html, l'interprete php è già chiuso dal relativo tag di chiusura
    <?php
    echo $lettura; // Non stampa a video valore null mentre var_dump lo stampa

    ?>
    È intuibile dovrai inserirlo nel tag script se ti serve la lettura e comunque devi stampare il contenuto con echo altrimenti la variabile Javascript non avrà mai valore.
    La Wiki consiglia di usare sempre
    # # root / cambia in /cartella/ se il file .htaccess risiede dentro una cartella
    RewriteBase / http://it.help.altervista.org/w/Conf...ta_(.htaccess)
    Quindi in realtà da browser dovrai effettuare due azioni prima visualizzare la pagina http://test.example.com/aggiungi.php per avere il refer http://test.example.com/aggiungi.php (o comunque Arduino dovrà impostare il refer con due passaggi o direttamente con l'invio dei dati POST) e poi l'invio di dati POST.
    Sostituisci il dominio test.example.com nel tuo caso d'uso.
    Ultima modifica di darbula : 03-11-2020 alle ore 23.22.59

  4. #4
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Grazie per le dritte, proverò a implementare i vostri consigli. é probabile che ciò che sostiene darbula sia forse il problema principale, non sono sicuro che arduino mandi i dati alla pagina poichè non sono sicuro del percorso esatto della pagina. Tuttavia ho provato a modificare la POST in arduino sketch in modo da verificare che si connetta almeno al server Altervista, e che debug da arduino dia esito positivo (connessione al server effettuata e 500 server internal error, mentre diversamente non si connette o restituisce errore 40x). Aggiungo di seguito la parte di codice arduino che esegue la POST:

    Codice:
      var = analogRead(7);
        String body = ("lettura="+String(var));
        String url = "POST /aggiungi.php HTTP/1.1";
    client.println(url);
    client.println("Host: honeyecompost.altervista.org"); //Metti il dominio dove si trova aggiungi.php (SOLO dominio!)
    client.println("User-Agent: Arduino/1.0 ");
    client.println("Connection: close ");
    client.println("cache-control: no-cache");
    client.println("Content-Type: application/x-www-form-urlencoded; ");
    client.print("Content-Length: ");
    client.println(body.length()); //Lunghezza dato
    Serial.println(var); //Per debug
    Serial.print("lunghezza var1:");
    Serial.println(body.length()); //Per debug
    client.println();
    client.println(body);
    client.println();
    se apro aggiungi.php inserendo degli errori di scrittura del codice mi esce un "parse error" che si riferisce alla pagina con un percorso diverso, tipo /membri/aggiungi.php, ho provato a metterlo nel POST ma niente.

  5. #5
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Se stai utilizzando una regola htaccess con sottodominio devi impostare anche quel parametro nell'intestazione HOST altresì aggiungi anche l'intestazione
    Codice:
    client.println("Referer: http://test.example.com/aggiungi.php");
    :)
    Aggiungi il RewriteBase / nel tuo file .htaccess e posta il codice aggiornato. Rileggi il messaggio sopra controllando i link per maggiori dettagli.
    Se il file php contiene errori devi prima aggiornare la sintassi lato php e poi solo dopo effettui una richiesta POST con Arduino (ovviamente /membri/ etc è il percorso locale dove si trova fisicamente il file ma per internet è sulla root, si chiama root questo carattere / quindi host più root http://test.example.com/)
    Ultima modifica di darbula : 04-11-2020 alle ore 11.54.06

  6. #6
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    darbula, ho modificato così, non mi stramaledire, navigo veramente a vista

    Codice:
    # # av:PHP-RG
    	RewriteEngine on
            RewriteBase /membri/honeyecompost

  7. #7
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    devo aggiungere RewriteRule? Tipo così?
    Codice:
    RewriteRule \(./*)

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    darbula intendeva questo:
    Codice:
    # # av:PHP-RG
    <IfModule mod_rewrite.c>
    	RewriteEngine on
            RewriteBase /
    	RewriteCond %{REQUEST_METHOD} ^POST$ [NC]
    	RewriteCond %{HTTP_REFERER} !^$
    	RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]*)honeyecompost\.altervista\.org/aggiungi.php
    	RewriteRule .* - [R=405,L]
    </IfModule>
    Ma sono abbastanza certo che il .htaccess non c'entri nulla: hai già appurato che il tuo Arduino è in grado di contattare la pagina, in quanto riceve errori diversi introducendo appositamente "degli errori di scrittura del codice".

    Ti ri-suggerisco di testare individualmente la pagina usando un semplice form HTML per simulare le richieste e valutarne l'esito.
    Quando questo sarà sistemato dovresti testare individualmente Arduino per capire se sta effettuando le richieste nel formato corretto.

    I suggerimenti che do più spesso:


  9. #9
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    darbula intendeva questo:
    Codice:
    # # av:PHP-RG
    <IfModule mod_rewrite.c>
    	RewriteEngine on
            RewriteBase /
    	RewriteCond %{REQUEST_METHOD} ^POST$ [NC]
    	RewriteCond %{HTTP_REFERER} !^$
    	RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]*)honeyecompost\.altervista\.org/aggiungi.php
    	RewriteRule .* - [R=405,L]
    </IfModule>
    Ma sono abbastanza certo che il .htaccess non c'entri nulla: hai già appurato che il tuo Arduino è in grado di contattare la pagina, in quanto riceve errori diversi introducendo appositamente "degli errori di scrittura del codice".

    Ti ri-suggerisco di testare individualmente la pagina usando un semplice form HTML per simulare le richieste e valutarne l'esito.
    Quando questo sarà sistemato dovresti testare individualmente Arduino per capire se sta effettuando le richieste nel formato corretto.
    Grazie, prima di sera provo il form poi ti saprò dire. Comunque io sono sicuro che arduino raggiunga il server, ma non la pagina. Rimangono i miei dubbi (e soprattutto le mie lacune) riguardo al percorso assoluto dei file .

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Generalmente non hai motivo di preoccuparti dei percorsi assoluti, ti basta conoscere l'URL della pagina a cui effettuare le richieste (http://honeyecompost.altervista.org/aggiungi.php).

    Ad ogni modo provando a eseguire adesso richieste POST verso la pagina, ottengo questo output:
    Codice HTML:
    <!DOCTYPE html>
    <html>
    <body>
    test-da-esterno<br>db connesso<br>db selezionato<br>query non eseguita
    La richiesta è stata effettuata tramite
    Codice:
    curl -X POST -d "lettura=test-da-esterno" http://honeyecompost.altervista.org/aggiungi.php
    Sembra tu abbia un problema con la query.

    I suggerimenti che do più spesso:


  11. #11
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Percorso url potrebbe essere diverso dal percorso fisico.
    Percorso url: http://test.example.com/aggiungi.php scomponiamo il percorso url nei vari passaggi http:// indica il protocollo test.example.com è hostname con porta 80 di default (nota il sottodominio test e in alcuni casi il campo HOST è composto da hostname e porta quando diversa dal default) il resto indica il percorso /aggiungi.php il primo slash è la root il resto in questo caso il file aggiungi.php.
    Il campo
    Codice:
    Referer: http://test.example.com/aggiungi.php
    è l'unica sintassi valida per evitare http 405 poiché a te occorre inviare dei dati POST da e verso un sottodominio quando invi i dati dovrà esistere l'intestazione (header anche HOST è un header) Referer.
    Non dimenticare di effettuare i tuoi test con il sottodominio, visualizza la pagina e poi invi i dati sempre a tale pagina da browser dopo tale test (capisci come funziona) puoi provare con Arduino e in caso di dubbi stampa direttamente
    Codice PHP:
    echo file_get_contents("php://input");
    .
    Ultima modifica di darbula : 04-11-2020 alle ore 14.51.01

  12. #12
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Generalmente non hai motivo di preoccuparti dei percorsi assoluti, ti basta conoscere l'URL della pagina a cui effettuare le richieste (http://honeyecompost.altervista.org/aggiungi.php).

    Ad ogni modo provando a eseguire adesso richieste POST verso la pagina, ottengo questo output:
    Codice HTML:
    <!DOCTYPE html>
    <html>
    <body>
    test-da-esterno<br>db connesso<br>db selezionato<br>query non eseguita
    La richiesta è stata effettuata tramite
    Codice:
    curl -X POST -d "lettura=test-da-esterno" http://honeyecompost.altervista.org/aggiungi.php
    Sembra tu abbia un problema con la query.
    Ok, so che ho un problema con la query, sarà il passo successivo. Ora per prima cosa devo risolvere il problema tra arduino e la pagina

  13. #13
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La pagina è "raggiungibile" tramite cURL, quindi per comunicazioni "dall'esterno" non sembrano esserci problemi. Probabilmente l'intoppo è nel codice (in Arduino) che effettua la chiamata. Non conosco Arduino, ma se vuoi riportare il codice coinvolto non dovrebbe essere difficile da analizzare.

    I suggerimenti che do più spesso:


  14. #14
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    La pagina è "raggiungibile" tramite cURL, quindi per comunicazioni "dall'esterno" non sembrano esserci problemi. Probabilmente l'intoppo è nel codice (in Arduino) che effettua la chiamata. Non conosco Arduino, ma se vuoi riportare il codice coinvolto non dovrebbe essere difficile da analizzare.
    il codice sullo sketch arduino è questo:
    Codice:
     var = analogRead(7);
        String body = ("lettura="+String(var));
        String url = "POST /aggiungi.php HTTP/1.1";
    client.println(url);
    client.println("Host: honeyecompost.altervista.org"); //Metti il dominio dove si trova inserisci.php (SOLO dominio!)
    client.println("Referer: http://honeyecompost.altervista.org/aggiungi.php");
    client.println("User-Agent: Arduino/1.0 ");
    client.println("Connection: close ");
    client.println("cache-control: no-cache");
    client.println("Content-Type: application/x-www-form-urlencoded; ");
    client.print("Content-Length: ");
    client.println(body.length()); //Lunghezza dato
    Serial.println(var); //Per debug
    Serial.print("lunghezza var1:");
    Serial.println(body.length()); //Per debug
    client.println();
    client.println(body);
    client.println();
    La porta è la 80. Questa è la parte di codice che manda richiesta POST con nel body il dato rilevato "lettura=var". Ho aggiunto l' header "Referer ecc. ecc., ma dal monitor seriale(per debug) di arduino ricevo ancora questa risposta:
    HTTP/1.1 500 INTERNAL SERVER ERROR.
    Devo ancora provare il form da una pagina creata ad hoc, vi farò sapere.

  15. #15
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Ragazzi sono una frana. Ho creato una pagina form.html che manda un dato a aggiungi.php, ma non funziona, l' altra pagina non riceve il dato. Il codice del form è il seguente:
    Codice:
    <!DOCTYPE html>
    <html>
    <body>
    <form name=”dato” action=”/aggiungi.php” method=”POST”>
    <label for="lettura">inserisci il valore da inviare</label>
    <input type=”text” name=”lettura” value=”qui”>
    <p><input type=”submit” name="bottone" value=”invia”></p></form>
    </body>
    </html>
    semplice ma non efficace, oppure la pagina di destinazione è il problema?

  16. #16
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Stai lavorando molto a basso livello con quelle API, stai costruendo i messaggi HTTP a mano. Non ci sono librerie più ad alto livello per Arduino?

    Il messaggio generato sembra anche corretto, provato con telnet sembra funzionare. La parte di connessione com'è?

    Nella pagina che hai mostrato ci sono degli apici abbastanza assurdi, prova con:
    Codice HTML:
    <!DOCTYPE html>
    <html>
      <body>
        <form action="http://honeyecompost.altervista.org/aggiungi.php" method="POST">
          <label for="lettura">inserisci il valore da inviare</label>
          <input type="text" name="lettura" value="qui">
          <p><input type="submit" name="bottone" value="invia"></p>
        </form>
      </body>
    </html>

    I suggerimenti che do più spesso:


  17. #17
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Ci sono librerie, ma per quello che devo fare (e sbirciando in miliardi di esempi)mi sembra che sia una soluzione abbordabile, almeno per il momento. Questa parte di sketch poi andrà ad aggiungersi al resto del programma, se la memoria di arduino mi permette di fare tutto...altrimenti mi sbatterò con le librerie. Ora riprovo il form con le tue modifiche...

  18. #18
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    ok, il form funziona, quindi a questo punto il problema è arduino.Cerco di capire se mi conviene usare una libreria e in che modo.
    Ultima modifica di honeyecompost : 04-11-2020 alle ore 23.26.59

  19. #19
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    La parte di connessione è questa:
    Codice:
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress ip(192, 168, 1, 177); // IP address, may need to change depending on network
    EthernetServer server(80);  // create a server at port 80
    EthernetServer serverA(80);
    const char Altervista[] = "http://honeyecompost.altervista.org";
    String HTTP_req;            // stores the HTTP request
    
    
    void setup() {
        int a;
        int var;
        Ethernet.begin(mac, ip);  // initialize Ethernet device
        server.begin();           // start to listen for clients
        Serial.begin(9600);       // for diagnostics
        pinMode(7, INPUT);        // switch is attached to Arduino pin 7
        pinMode(8, INPUT);        // switch is attached to Arduino pin 8
        EthernetClient client;
        delay(2000);
        a = client.connect(Altervista,80);
        delay(5000);
        Serial.println(a);
    dove client.connect ritorna 1 se si connette al server(e ritorna 1)

  20. #20
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Puoi togliere momentaneamente il file .htaccess? Per favore prova il codice di Arduino non modificato magari stavolta crea una pagina chiamata test.php con questo contenuto.
    Codice PHP:
    <?php
    $lettura
    = null; // Inizializzazione variabile a null
    if(isset($_POST['lettura'])) { // Verifica esistenza
    $lettura = $_POST['lettura']; // Sovrascrivo al valore $_POST['lettura']
    }

    ?>
    Sono testo ma potrei anche essere Markup html, l'interprete php è già chiuso dal relativo tag di chiusura
    <?php
    var_dump
    ($lettura, file_get_contents("php://input")); // Non stampa a video valore null mentre var_dump lo stampa

    ?>
    Ovviamente Arduino invia una richiesta POST a test.php con il dato lettura=valore ;)
    Se ti funziona so il perché e poi provo a rispiegarlo nuovamente.
    Comunque qui il codice per una connessione remota è diverso https://www.html.it/pag/48799/arduin...ne-a-internet/
    Ultima modifica di darbula : 05-11-2020 alle ore 02.00.01

  21. #21
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ieri ho provato a inviare richieste POST alla pagina da form, curl e telnet, quest'ultimo replicando esattamente il messaggio HTTP mostrato qualche messaggio fa, e ha funzionato con tutte, e nel .htaccess non sembra esserci nulla di specifico per bloccare Arduino. Se il problema fosse nel .htaccess sarebbe piuttosto sorprendente, e quindi interessante

    Esistono emulatori di Arduino da poter utilizzare per i test senza avere un dispositivo fisico?

    I suggerimenti che do più spesso:


  22. #22
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,980

    Predefinito

    Salve mzanella,
    esitono alcuni simulatori.

    C'è avr8js ne parlano in questa guida avr8js open source arduino simulator based javascript, scarcabile da github

    poi c'è Arduino simulator 1.6, che ritengo sia più professionale.

    Cordiali saluti.
    mzanella likes this.

  23. #23
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    darbula ho provato test.php e mi stampa a video: NULL string(0)"", cioè quello che restituisce var_dump.
    Il codice per una connessione remota a cui tu fai riferimento è praticamente uguale, cambia il nome degli oggetti ma i metodi sono identici.Ho modificato togliendo header Referer e togliendo .htaccess, il risultato è sempre errore 500 (da debug arduino).

  24. #24
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Ho guardato i simulatori, ma più che altro mi sembra che simulino circuiterie esterne, ci si deve comunque collegare ad arduino fisicamente.Io l' ho collegato via usb al pc e via ethernet al router, è così necessario il simulatore?

  25. #25
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Comunque in server condivisi devi sempre includere l'intestazione HOST in php avviene automaticamente ma forse Arduino deve essere forzato.
    Codice:
    // client Ethernet
    EthernetClient ethclient;
    void setup()
    {
    	// ...
    	if (ethclient.connect(server, 80))
    	{
    		Serial.println("Connessione avvenuta!");
    		ethclient.println("GET / HTTP/1.1");
    		ethclient.println("Host: nick.altervista.org");
    		ethclient.println("Connection: close");
    		ethclient.println();
    	}
    }
    Altrimenti è il main di altervista che ti risponde e non il tuo sito.
    Però non capisco perché ricevi errorr HTTP 500.
    Fai una banalissima richiesta GET e controlla che le stringhe siano esattamente racchiuse da apici doppi e poi nemmeno dopo ci siano spazi.
    È normale visualizzare da browser con una richiesta GET null e 0... discorso diverso quando metodo POST e invio dati nel body in quel caso se la chiave è lettura e il valore val devi vedere val, lettura=val.
    Ultima modifica di darbula : 05-11-2020 alle ore 23.12.54

  26. #26
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Ho fatto una get mettendo in coda ?lettura=valore(un numero a caso di tre cifre) e la pagina stampa string(3)"654", e ci siamo. Poi ho modificato test.php con $_GET al posto di $_POST, ho modificato il codice di arduino per inviare la GET ma da sempre error 500. Per me è un rompicapo

  27. #27
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Va beh in teoria l'unica differenza è che query string può anche essere dentro la url se prima ha il ? http://url.corta?lettura=123.
    Forse l'errore http 500 dipende che scrivi codice php sbagliato?
    Per favore quando affermi di cambiare $_POST in $_GET il codice è uguale a questo?
    Codice PHP:
    <?php
    $lettura
    = null; // Inizializzazione variabile a null
    if(isset($_GET['lettura'])) { // Verifica esistenza
    $lettura = $_GET['lettura']; // Sovrascrivo al valore $_GET['lettura']
    }

    ?>
    Sono testo ma potrei anche essere Markup html, l'interprete php è già chiuso dal relativo tag di chiusura
    <?php
    var_dump
    ($lettura, file_get_contents("php://input")); // Non stampa a video valore null mentre var_dump lo stampa, php://input funziona con i dati POST

    ?>
    Ultima modifica di darbula : 05-11-2020 alle ore 23.44.52

  28. #28
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Esatto, ho cambiato solo $_POST. Se php://input funziona con i dati post provo con echo

  29. #29
    honeyecompost non è connesso Utente giovane
    Data registrazione
    21-09-2020
    Messaggi
    39

    Predefinito

    Codice:
     var = analogRead(7);
        String body = ("lettura="+String(var));
        String url = "GET /test.php?body HTTP/1.1";
    client.println(url);
    client.println("Host: honeyecompost.altervista.org");
    client.println("Connection: close");
    client.println();
    codice arduino

  30. #30
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Si prova altrimenti ti stampa 0.
    In internet ho letto che bisogna aggiungere anche la codifica, ora aggiorno.
    Scegli se usare GET nella url o come parametro al momento non farlo in entrambe :)
    Codice:
    String body = ("lettura="+String(var));
    String url = "GET /test.php?lettura=var HTTP/1.1";
    client.println(url); //url
    //client.println(body) Send http body
    Ultima modifica di darbula : 06-11-2020 alle ore 00.11.24

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •