Go Down

Topic: dubbio su html (Read 598 times) previous topic - next topic

relinquished

scusate ragazzi una domanda , se io tramite l'interfaccia ethernet di arduino  ho creato una pagina web  con username e password  , ora vorrei che  i dati imessi nelle text box vengano salvati dentro a dellke variabili di tipo string

ho provato un paio di metodi ma senza sucesso , sapreste suggerirmi qualche aiuto

lucadentella

ciao

che metodo hai impostato nella form? GET o POST? Sulla stessa pagina HTML?
lucadentella.it

relinquished

questo e il codice che sto utilizzando



void loop(){

  lcd.begin(16, 2);
  lcd.print(user);
 
 
 
Client client = server.available();
if (client) {
  boolean currentLineIsBlank = true;
  while (client.connected()) {
    if (client.available()) {
      char c = client.read();
        readString.concat(c); //store characters to string
      //if HTTP request has ended
      if (c == '\n' && currentLineIsBlank) {
         Serial.print(readString);
         lcd.print(user);
         
        if(readString.indexOf("L=1") > 0) {
          digitalWrite(ledPin, HIGH);
          LEDON = true;
          }else{
          digitalWrite(ledPin, LOW);
          LEDON = false;
        }
       
       if(readString.indexOf("pul")){ 
          digitalWrite(ledPin, HIGH);
          LEDON = true;
          delay(500);
          digitalWrite(ledPin, LOW);
          LEDON = false;
         
       }
       
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();
        //client.println("<meta http-equiv=""REFRESH"" content=""5; URL=http://xxxxxxxx"">");
        client.print("<html>");
        client.print("<head><title> MATRIX SYSTEM </title></head>");
        client.print("<body bgcolor=\"cyan\">");
        user = client.read();
       
        client.print("<fieldset bgcolor=\"grey\"><legend>LOG IN</legend>");
        client.print("<label for=\"username\">Username:</label><input name=\"username\" id=\"username\" value=\"Some Text\">");
        client.print("<label for=\"password\">Password:</label><input type=\"password\" name=\"password\" id=\"password\" value=\"Password\">");
        client.print("<input type=button value=invia></fieldset>");
         //     
   client.print("");
   client.print("");
        //
        client.print("<A HREF=\"http://grix.it/\"><IMG SRC=\"http://www.buttongenerator.com/ima/link.gif\" WIDTH=78 HEIGHT=31 BORDER=0 ALT=\"RELINQUISHED\"></A>");
        //
        client.print("<body style=background-color: red;>");
        client.print("<h2 style=background-color:#ff0000;>RELINQUISHED</h2>");
        client.print("<hlrows=\"5\" cols=\"30\">LED remoto</h1>");
        //
        client.println("<form method=get name=LED><input type=checkbox name=L value=1>LED<br><input type=submit value=submit></form>");
        client.println("<br />");
        client.println("<html><head><body style=background-color: #FFCC66;></body></head></html>");
        //printing LED status
        client.print("<span>LED status: </span>");
          if (LEDON) {
              client.println("<span style='color:green'>ON</span>");
            }
            else
            {
              client.println("<span style='color:grey'>OFF</span>");
          }
        client.print("<h2><a href='/?L=1'><font size=\"20\">accendi!</font></a> |");
        client.print("<a href='/?L=0'> <font size=\"20\">spegni!</font></a></h2>");
     
     
        //print link
        client.println("<hr />");
        client.print("<h2><a href='link'>Visita www.grix.it!</a></h2>");
        client.println("<hr />");

        // chiudo pagina da togliere se uso ajax
        client.println("</body></html>");

        //clearing string for next read
        readString="";
        //stopping client
        client.stop();

        } //if c == /n .... devo capire che significa
    } // if client available
  } // while client connesso
} // if client
} //loop

lucadentella

mmm mi sembra molto sballato... è un po' che non metto mano all'html direttamente ma sicuramente tutti i campi devono essere all'interno di un tag FORM altrimenti il browser non invierà il loro contenuto: il tuo esempio sembra tanto il copia&incolla di due pezzi: quello del led mi pare ok, nel primo così a occhio manca quaclosa
lucadentella.it

relinquished

non sono molto esperto pero attualmente il codice funziona
e cmq ora quello che mi interessa e capire come risolvere  il problema delle text box , poi il resto vien man mano

DevonMiles

Ciao,
non sono un grande esperto di ETH shield e avevo chiesto anche io aiuto su un problema simile. Prova a vedere se ne cavi qualcosa:
http://arduino.cc/forum/index.php/topic,53045.msg378857.html#msg378857
Probabilmente Luca ha ragione.

lucadentella


non sono molto esperto pero attualmente il codice funziona


funziona nel senso che ti appare la pagina sul browser, ma se è sbagliata la form il browser non ti rimanderà mai indietro i dati...
lucadentella.it

relinquished

diciamo di si che e quello che voglio , il problema e che il codice non funziona

lucadentella

ok guardati questo tutorial, il tuo problema ora non è lato Arduino ma di codice HTML:
http://xhtml.html.it/guide/lezione/1696/struttura-del-tag-form/
lucadentella.it

relinquished

ma il problema e come faccio con un pulsante ad inviare un valore in una variabile ???

DevonMiles

Se vedi nel esempio che ti ho linkato ho messo:
Code: [Select]
       
// Finestra di login
client.print("<form action='http://192.168.0.4/'>");
client.print("Nome");   
client.print("utente: <input name='Nome' value=''>");
client.print("Password: <input type='Password' name='Pwd' value=''>");
client.print("<input type='submit' value=' OK '>");
client.print("</form>");

Poi vado a leggere la stringa Nome=pippo&Pwd=pluto con questo codice:
Code: [Select]

if(readString.indexOf("Nome=pippo&Pwd=pluto") > 0) {
   login=true;
} else {
   login=false;
}

In sostanza faccio una comparazione.

leo72


Poi vado a leggere la stringa Nome=pippo&Pwd=pluto con questo codice:
Code: [Select]

if(readString.indexOf("Nome=pippo&Pwd=pluto") > 0) {
   login=true;
} else {
   login=false;
}

In sostanza faccio una comparazione.

Credo potresti sostituire tutto con un confronto/assegnazione:
Code: [Select]
login=readString.indexOf("Nome=pippo&Pwd=pluto");
Se è 0, la variabile sarà false, 1 o più di 1 darà su un boolean un risultato di true.

relinquished

si ma cosi il valore delle text box non viene trasferito ad una variabile, inoltre io non voglio usare  il metodo get ma il metodo post

relinquished

ragazzi un altro problema se nel mio codice html  voglio inserire un immagine che e presente sulla mia sd card come faccio????

lucadentella


inoltre io non voglio usare  il metodo get ma il metodo post


come mai? processare i dati passati con il metodo GET è molto più semplice (vengono "accodati" all'URL che richiami nella forma miapagina.htm?parametro1=valore1;parametro2=valore2...)
lucadentella.it

Go Up