ja,
so sollte es auch sein.
auf user name wird noch nicht geprüft in dieser debug-Version, hier werden noch alle möglichen Eingaben akzeptiert.
yy
ist dann auch das korrekte Passwort für alle User.
allerdings wird eben auch
yy67
als korrekt akzeptiert, was nicht sein dürfte (IMO)
- - - Aktualisiert - - -
PS,
Finden kann er hier uname und struname auch noch nicht im html string, da dort ja '?uname=' steht und nicht '&uname=', was aber nachrangig ist, da ja auch noch nicht darauf geprüft wird.
- - - Aktualisiert - - -
PS,
hier ist die neue cstringarg Version mit testcode, wo auch ?varname= neben &varname= akzeptiert wird:
Code:
int16_t strstrpos(char * haystack, char * needle) // find 1st occurance of substr in str
{
char *p = strstr(haystack, needle);
if (p) return p - haystack;
return -1; // Not found = -1.
}
//----------------------------------------------------------------------------
const int MAXLEN = 1024;
const int TOKLEN = 64;
char * cstringarg( char* haystack, char* vname, char* sarg ) {
int i=0, pos=-1;
unsigned char ch=0xff;
char kini[3] = "&"; // start of varname: '&':
char kequ[3] = "="; // end of varname, start of argument: '='
char needle[TOKLEN]=""; // complete pattern: &varname=abc1234
strcpy(sarg,"");
strcpy(needle, kini);
strcat(needle, vname);
strcat(needle, kequ);
pos = strstrpos(haystack, needle);
if(pos==-1) {
needle[0]='?';
pos = strstrpos(haystack, needle);
if(pos==-1) return sarg;
}
pos=pos+strlen(vname)+2; // start of value = kini+vname+kequ
while( (ch!='&')&&(ch!='\0') ) {
ch=haystack[pos+i];
if( (ch=='&')||(ch==';')||(ch==' ')||(ch=='\0') ||(ch=='\n')
||(i+pos>=strlen(haystack))||(i>TOKLEN-1) ) {
sarg[i]='\0';
return sarg;
}
if( (ch!='&') ) {
sarg[i]=ch;
i++;
}
}
return sarg;
}
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("Test mit cstringarg()");
Serial.println();
char htmlstring[1024]="html teststring evtl mit Fehlern ?upwd0=QMARKupwd0&upwd1=testupwd1&upwd2=testupwd2 &upwd13=testupwd13&upwd224=testupwd224 EndeTststring";
char argstring[64]="";
cstringarg(htmlstring, "upwd0", argstring);
Serial.print("upwd0 >>"); Serial.print(argstring); Serial.println("<< soll: >>QMARKupwd0<<");
cstringarg(htmlstring, "upwd1", argstring);
Serial.print("upwd1 >>"); Serial.print(argstring); Serial.println("<< soll: >>testupwd1<<");
cstringarg(htmlstring, "upwd2", argstring);
Serial.print("upwd2 >>"); Serial.print(argstring); Serial.println("<< soll: >>testupwd2<<");
cstringarg(htmlstring, "upwd13", argstring);
Serial.print("upwd13 >>"); Serial.print(argstring); Serial.println("<< soll: >>testupwd13<<");
cstringarg(htmlstring, "upwd224", argstring);
Serial.print("upwd224 >>"); Serial.print(argstring); Serial.println("<< soll: >>testupwd224<<");
cstringarg(htmlstring, "upwd9", argstring);
Serial.print("upwd9 >>"); Serial.print(argstring); Serial.println("<< soll: >><< (// not found)");
}
void loop() {
}
Lesezeichen