Hier mal meine Zusammenfassung:
Ausgehend von dieser HTML-Datei – mit dieser Datei kann ich mich beim Router einloggen:
<html>
<head>
</head>
<body>
<form>
<input>
<input>
<input>
</form>
</body>
</html>
In dieser HTML-Datei darf ich
a) die
Reihenfolge der Variablen verändern
b)
zusätzliche Variablen einfügen
c) aber: Die Variablen-Namen
NICHT verändern
Was passiert hier (teilweise Vermutung):
1. es wird das CGI-Programm \"
webcm\" aufgerufen (action=\"http://<Router>/cgi-bin/webcm\")
2. An das CGI-Programm \"webcm\" wird ein Feld mit Variablen übergeben
3. Das CGI-Programm \"webcm\" untersucht die übergebenen Variablen:
a) Wird mit der Variablen \"getpage\" eine \"interne\" Seite aufgerufen, die ein Login voraussetzt ? (Wenn nein, z.b. index.html, dann zeige die entsprechende Seite.)
b) Wenn ja, ist der User schon eingeloggt ? (Wenn ja, dann zeige die entsprechende Seite)
c) Wenn nein, untersuche ob die Variablen \"login:command/username\" und \"login:command/password\" mit richtigen Werten zum Login übergeben wurden. (Wenn nein, dann zeige index.html)
d) Wenn ja, dann zeige die mit \"getpage\" angeforderte Seite.
Man kann somit auch die obige HTML-Datei so schreiben:
<html>
<head>
</head>
<body>
<form>
<input>
<input>
<input>
<input>
</form>
</body>
</html>
Hier wird dann nicht mehr die \"Home\"-Seite aufgerufen (\"home_gm.htm\") sondern gleich die Status-Seite (\"html/status_gm/connstatus.htm\") angefordert. In diesem Falle muß man aber auch noch die Variable
name=\"var:language\" value=\"gm\" mit übergeben.
Wenn man nun im Web-Browser diese Zeile angibt, dann funktioniert die Anzeige ebenfalls -
wenn man eingeloggt ist:
http://<Router>/cgi-bin/webcm?getpage=../html/status_gm/connstatus.htm&var:language=gm
Ohne die Variable
var:language=gm sieht man hingegen nur eine weiße Seite:
http://<Router>/cgi-bin/webcm?getpage=../html/status_gm/connstatus.htm
Und mit dem folgenden kann man die entsprechende englische Seite aufrufen:
http://<Router>/cgi-bin/webcm?getpage=../html/status_gm/connstatus.htm&var:language=en
Das interpretiere ich so, daß das CGI-Programm \"webcm\" sehrwohl die Variable
var:language=gm oder
var:language=en auswertet.
Nun zum Aufruf im Web-Browser
MIT Login-Variablen :
Wenn man schon eingeloggt ist, dann funktionieren die folgenden Aufrufe im Web-Browser:
http://<Router>/cgi-bin/webcm?getpage=../html/status_gm/connstatus.htm&var:language=gm&login:command/username=admin&login:command/password=meinPasswort
oder:
http://<Router>/cgi-bin/webcm?getpage=../html/status_gm/connstatus.htm&login:command/username=admin&login:command/password= meinPasswort&var:language=gm
Es ist also egal
WO die Variable \"
var:language=gm\" steht (am Anfang, oder am Ende). Und
OHNE \"var:language=gm\" wird wiederum nur eine weiße Seite ausgegeben; bzw. mit \"var:language=en\" wird die englische Seite ausgegeben.
Also bisher dachte ich, daß irgendwie die Sonderzeichen \"/\" oder \":\" stören würden – aber das kann es nicht sein. Denn zum einen wird die Variable \"var:language=gm\" richtig erkannt (die enthält ja auch den \":\") und zum anderen enthält ja auch die Variable \"getpage=../html/status_gm/connstatus.htm\" drei \"/\" – wenn auch nicht im Variablen-Namen. Aber selbst wenn man den Aufruf absichtlich falsch schreibt, wird die Variable \"var:language=gm\" am Ende noch richtig erkannt:
http://<Router>/cgi-bin/webcm?getpage=../html/status_gm/connstatus.htm&login:com/mand/user/name=admin&login:com:mand:pass:word=meinPasswort&var:language=gm
Also ich weiß jetzt auch nicht weiter. Was macht meine Anfangs beschriebene HTML-Datei anders, wie diese Zeile im Web-Browser (die Variablen-Namen sind doch die gleichen) ?
http://<Router>/cgi-bin/webcm?getpage=../html/status_gm/connstatus.htm&login:command/username=admin&login:command/password= meinPasswort&var:language=gm