- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 36

Thema: html code für User Login + password (esp8266 + Arduino IDE)

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    HaWe
    Gast
    Zitat Zitat von Moppi Beitrag anzeigen
    Zu Arduino kann ich nichts beitragen, aber HTML-Formulare sind nicht schwer: https://wiki.selfhtml.org/wiki/HTML/...Webformular%3F
    Grundsätzlich ist das ja auch nicht das Problem, sondern die Arduino-mäßige Umsetzung. Aber ich mache es gerne mal konkret: Was ist an diesem Code fehlerhaft, dass er nicht mit ESP8266 cores 4.4.1 und 4.4.2 läuft sondern nur mit cores 4.3.0 und 4.4.0?

    Code:
    #include <ESP8266WiFi.h>
    #include <ESP8266WebServer.h>
    
    WiFiServer   wifiserver(http_port);
    const int  MAXLEN = 1024;
    const int  TOKLEN =  64;
    char  website_uname[20]; //  website user name log in  "MyWebsiteLoginName"
    char  website_upwd[20];  //  website user pwd log in   "MyWebsiteLoginPwd"
    
    bool authorized = false;
    
    void handleNotAuthorized() {
      String readString="";
      char   strinput[MAXLEN], strupwd[TOKLEN], struname[TOKLEN];
    
      WiFiClient client = wifiserver.available();
    
      //---------------------------------------
      // debug
      // authorized=true;
      
      strcpy(strinput, "");
      strcpy(strupwd, "");
      strcpy(struname, "");
    
      while ( client.connected() ) {
        if (authorized) return;
        
        readString.toCharArray(strinput, MAXLEN);
        // cstringarg( char* haystack, char* vname, char* sarg )
        // haystack pattern: &varname=1234abc,  delimiters &, \n, \0, SPACE, EOF
        cstringarg(strinput, "uname", struname);  // uname
        cstringarg(strinput, "upwd", strupwd);   // upwd    
    
        if ( strlen(strupwd) == strlen(website_upwd)
             && strncmp(strupwd, website_upwd, strlen(website_upwd) ) == 0)   {
          authorized = true;
          //debug
          //Serial.print("check: authorized="); Serial.println(authorized);
          readString = "";
          return;
        }
    
        if ( client.available() ) {
          char c = client.read();
    
          //read char by request
          if (readString.length() < TOKLEN) {
    
            //store characters to string
            readString += c;
            //Serial.print(c);
          }
    
          //if HTTP request has ended
          if (c == '\n') {
            client.flush();
            Serial.println(readString);
    
            //now output html data header
    
            String script = "";
    
            script += ("HTTP/1.1 401 Log-In Required");
            script += ("Content-Type: text/html \n");
            script += ("\n");   
            script += ("<!DOCTYPE html> \n");
            script += ("<html> \n");
            script += ("<head> \n");
    
    
            // utf-8 für "°" Zeichen
            script +=  "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> \n" ;
            script +=  "<title>" ;
            script +=  website_title ;
            script +=  "</title> \n" ;
            script +=  "</head> \n" ;
            script +=  "<body> \n" ;
    
            script += "<h1><p style=\"color:rgb(255,0,191);\"> " + (String)website_url ;
            script += (String)": &nbsp; <wbr> <wbr> " + "Not authorized !</p> </h1> \n" ;
            script += ("<h2><p style=\"color:rgb(255,0,191);\"> log in to proceed: </p> </h2> \n");
    
            script += ("<FORM ACTION='/' method=GET > \n");
            script += ("<h2>user name:  <INPUT TYPE=text NAME='uname' VALUE=''  MAXLENGTH='50'> </h2> \n");
            script += ("<h2>password :  <INPUT TYPE=PASSWORD NAME='upwd' VALUE='' MAXLENGTH='50'> </h2> \n");
    
            script += ("<h2><INPUT TYPE=SUBMIT></h2> \n");
    
            script += ("</FORM> \n");
            script += ("<BR> \n");
            script += ("</body> \n");
            script += ("</html> \n");
    
            client.print(script);
    
            //stopping client
            client.stop();
            delay(1);
    
            //clearing string for next read
            readString = "";
          }
        }
        delay(1);
      }
    }
    Bei den beiden neueren Cores springt er zur Laufzeit sofort aus dieser Funktion heraus und bricht ab mit der Meldung "Die Website ist nicht verfügbar", und dann kann man sich auch nicht erneut einloggen oder die Standard-Website aufrufen.
    Ansonsten wird bei den älteren Cores bei korrektem Login auch anschließend die Standard-Seite korrekt geladen.
    Setzt man authorized dagegen vorher manuell auf true, wird bei jedem Core, neu wie alt, auch sofort die Standardseite korrekt erzeugt.

    oder sind es evt bugs in den esp-cores selber?
    Geändert von HaWe (12.08.2018 um 12:37 Uhr)

Ähnliche Themen

  1. html-Code für nodeMCU mit Arduino IDE + Wifi libs
    Von HaWe im Forum Arduino -Plattform
    Antworten: 7
    Letzter Beitrag: 14.08.2018, 18:30
  2. Pegelwandler RX/TX Arduino ESP8266
    Von Cysign im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 05.02.2018, 23:29
  3. ESP8266 boards per per Arduino-IDE programmieren?
    Von HaWe im Forum Arduino -Plattform
    Antworten: 27
    Letzter Beitrag: 10.06.2017, 15:19
  4. arduino ide mit esp8266
    Von NotEvil im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 4
    Letzter Beitrag: 12.01.2017, 14:17
  5. HTML-Code (scripts)
    Von Technik =) im Forum Umfragen
    Antworten: 6
    Letzter Beitrag: 10.10.2008, 09:21

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress