- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 97

Thema: esp8266, Arduino IDE: neuer Versuch: warum wird website sofort beendet?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    leider springt er jetzt sofort wieder raus, wie ganz am Anfang,
    und wenn ich einsetze vor client.stop();
    Code:
              //stopping client
              while(client.connected()) {
                 delay(10);             
              }
              client.stop();
    dann baut er sie auf, beibt aber ewig drin hängen, auch nach korrektem login+pwd

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    strupwd und struname werden doch überhaupt nicht aus dem gelesenen String readString extrahiert, aber anschließend verglichen und dann davon abhängig gemacht, ob authorized = true;

    Das haut irgendwie hinten und vorne noch nicht hin.

  3. #3
    HaWe
    Gast
    dieser Teil mit der Extrahierung von strupwd und struname ist hier nur verkürzt wiedergegeben, um die Lesbarkeit zu erhöhen, meine eigene Methode ist recht kompliziert.
    Wie würdest DU diese Extrahierung samt Vergleich machen, und, wo wir gerade dabei sind, ggf. mit POST anstelle von GET?

    Vieleicht liegt ja tatsächlich hier der Hase im Pfeffer...?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    ich habs nochmals geändert und ein Schnipsel eingefügt:

    Code:
    bool authorized=false;
    
    
    
    
    void handleNotAuthorized() {
      String readString = "";
      char   strinput[MAXLEN], strupwd[TOKLEN], struname[TOKLEN] ;
      
      WiFiClient client = wifiserver.available();
    
    
    
    
      if (client) {
    
    
    
    
              //---------------------------------------
              // debug
              // authorized=true;
    
    
    
    
              strcpy(strinput, "");
              strcpy(strupwd, "");
              strcpy(struname, "");
    
    
    
    
      
    
    
    
    
              while ( client.connected() ) {
                if (authorized) return;
    
    
    
    
                if ( client.available() ) {
                  char c = client.read();
    
    
    
    
                  //read char by request
                  readString = "";
                  while ( (readString.length() < TOKLEN) && (c != '\n') ) {
                      readString += c;
                      c = client.read();
                  }
            
                  readString.toCharArray(strinput, MAXLEN);
             
                  if(strstr(website_upwd,strupwd)!=NULL & strstr(website_uname,struname)!=NULL)
                  {
                    authorized = true;
                    readString = "";
                    return;           
                    // return;  // <<< selbes Ergebnis, egal ob kommentiert oder auskommentiert
                  }    
          
                  //if HTTP request has ended
                  while ( c != '\n') { 
                      c = client.read();
                  }
    
    
                  if (c == '\n') {
                     //client.flush();
    
    
    
    
                    //now output html data header
    
    
    
    
                    String script = "";
    
    
    
    
                    script += ("HTTP/1.1 200 OK\r\n");
                    script += ("Content-Type: text/html\r\n");
                    script += ("Connection: close\r\n");
                    script += ("\n");  //  do not forget this one //????
                    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 +=  "</title> \n" ;
                    script +=  "</head> \n" ;
                    script +=  "<body> \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.println(script);
                    delay(100);
            
                    //stopping client
                    client.stop();
                    //clearing string for next read
                    //readString = "";
                  }
                }
                //delay(1);
              }
      }
    }

    entscheidend ist, dass die Seite jedesmal angezeigt wird, wenn der Browser eine Anfrage an den Server stellt. Denn erst dann kann man das Passwort eingeben und den Namen, was dann ausgewertet werden muss.
    Ob das Passwort stimmt oder ob der Vergleich dazu hinhaut wissen wir nicht, weil der Teil fehlt. Man kann das umschreiben, ich habe aber nicht die Möglichkeit, das mit 2.5.x zu probieren - glaub ich.
    Muss mal sehen. Das kann so schwer nicht sein.

  5. #5
    HaWe
    Gast
    in dieser Form springt es wieder sofort aus der Website raus, wie ganz am Anfang.

    - - - Aktualisiert - - -

    mit
    Code:
     
       while(client.connected()) {
                 delay(10);
       }          
    
       client.stop();
    baut er wieder auf, bleibt aber auch wieder komplett im Formular hängen (wie zuvor)

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    wie lese ich diese version beim nodemcu aus?

  7. #7
    HaWe
    Gast
    Werkzeuge => Board => Boardverwalter =>....
    dann in der Eingabezeile
    nodeMCU
    eingeben
    dann steht die Version ganz oben im Feld, Version auswählen ganz unten

    Klicke auf die Grafik für eine größere Ansicht

Name:	Arduino_Boardverwalter.jpg
Hits:	2
Größe:	46,1 KB
ID:	34420

    Klicke auf die Grafik für eine größere Ansicht

Name:	Boardverwalter.jpg
Hits:	3
Größe:	50,8 KB
ID:	34418
    Geändert von HaWe (21.10.2019 um 14:03 Uhr)

Ähnliche Themen

  1. arduino ide mit esp8266
    Von NotEvil im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 4
    Letzter Beitrag: 12.01.2017, 14:17
  2. Raspberry Pi 3: Neuer Bastelrechner ist ab sofort verfügbar
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 4
    Letzter Beitrag: 29.02.2016, 20:56
  3. [ERLEDIGT] Google wird am Lenovo-Tablet ohne Zutun beendet
    Von oberallgeier im Forum Offtopic und Community Tratsch
    Antworten: 5
    Letzter Beitrag: 24.11.2015, 08:02
  4. Funktion wird nicht richtig beendet
    Von kowolfgang im Forum C - Programmierung (GCC u.a.)
    Antworten: 16
    Letzter Beitrag: 31.12.2008, 16:37
  5. schieberegister neuer versuch...
    Von Bluesmash im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 12
    Letzter Beitrag: 11.07.2005, 21:10

Berechtigungen

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

LiFePO4 Speicher Test