hallo,
ich will nochmal einen Anlauf starten:
Board ESP-12E nodeMCU (esp8266),
Arduino Board core nodeMCU 1.0, version 2.5.2
wer kann sagen, warum die hier aufgebaute Website zum Eingeben von username und passwort unter Version 2.5.2 zwar kurz aufgebaut wird, dann aber sofort beendet wird?
Der Fehler tritt unter nodeMCU 1.0, version 2.4.0 noch NICHT auf.
Vermutlich ist ein Fehler drin versteckt, der bei der alten core Version geduldet wird, aber unter der neuen dann doch als Fehler sichtbar wird.
Nur: Wo ist der Fehler?
Code:
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;
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);
// cstringarg(strinput, "uname", struname); // uname
// cstringarg(strinput, "upwd", strupwd); // upwd
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
if (c == '\n') {
client.flush();
//now output html data header
String script = "";
script += ("HTTP/1.1 200 OK \n");
script += ("Content-Type: text/html \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.print(script);
//stopping client
client.stop();
delay(1);
//clearing string for next read
//readString = "";
}
}
delay(1);
}
}
Website in Firefox:
(Seite wird kurz aufgebaut, dann sofort wieder weg, stattdessen Fehler-Website:
Code:
Fehler: Verbindung unterbrochen
Die Verbindung zum Server wurde zurückgesetzt, während die Seite geladen wurde.
Die Website könnte vorübergehend nicht erreichbar sein, versuchen Sie es bitte später nochmals.
Wenn Sie auch keine andere Website aufrufen können, überprüfen Sie bitte die Netzwerk-/Internetverbindung.
Wenn Ihr Computer oder Netzwerk von einer Firewall oder einem Proxy geschützt wird, stellen Sie bitte sicher,
dass Firefox auf das Internet zugreifen darf.
Serial Konsole, neuer core:
Code:
strupwd >>><<<
website_upwd>>>admin<<<
readString>>>GET /logout HTTP/1.1
GET /logout HTTP/1.1
Bei der alten core Version werden diese 4 Zeilen NICHT seriell ausgegeben, die Login-Seite steht stabil und wartet auf Eingaben.
Wer hat die rettende Idee?
Lesezeichen