Nein. Windows und Linux haben ihre eigenen APIs. Da oben meinte ich, du kannst auf einem Linux-Server auch Linux-APIs aufrufen.
> Ich könnte also auf einem Linux Server die Umgebungsvariablen vom Windows User rauskrigen
Du meinst, mein Linux-Server könnte die Windows-Umgebungsvairablen deines Computers herausbekommen, wenn du auf meine Seite gehst? Nein, das geht natürlich nicht. Die Sache mit Umgebungsvariablen funktioniert nur innerhalb eines Computersystems.
Dein PB-Programm auf dem Webserver kann also nur die Umgebungsvariablen bekommen, die es auf dem Linux-Server gibt. Schau dir mal meine Umgebungsvariablen an:
http://and51.de/cgi-bin/test/index.cgi
> Ich kann also ... In die Website einbauen und es würde mir meinen Namen anzeigen ?
Nein. Entschuldige, wenn ich dir da falsche Hoffnungen gemacht habe. Die Variable USERNAME, die es auf deinem PC gibt, kann der Server natürlich nicht aufrufen. Das wäre ja ein Sicherheitsrisiko, wenn jeder Webseitenbertreiber meine Umgebungsvariablen kennen würde.
> Das mit Cache hab ich dann wohl falsch verstanden.
Vermutlich ja. Und zwar benutzt der PB Interpreter einen Cache: In diesen Zwischenspeicher werden alle Executables gespeichert, die kompiliert wurden. Bevor ein Programm kompiliert wird, schaut der Interpreter zuerst im Cache nach, ob das Programm schon im kompilierter Form vorliegt, wenn ja, braucht natürlich kein zweites Mal kompiliert werden. Es wird nur dann erneut kompiliert, wenn sich der Sourcecode des Programms geändert hat, also wenn der Sourcecode neuer ist, als das Executable im Cache.
Und als Cache benutzt der Interpreter den Temp-Ordner, den man ja mit GetTemporaryDirectory() ermitteln kann. Deshalb ist es auch überhaupt nicht schlimm, wenn man den Temp-Ordner einfach leert, dann kompiliert der Interpreter jeden Sourcecode beim nächsten Mal einfach neu.
> Ich würde mich ja über ein richtiges Beispiel freuen für GET und Post freuen
Klar, gern. Vorab: POST habe ich mit meinem Programm bisher noch nicht ganz getestet, nur einmal ganz kurz. Da hat es auch geklappt. Deshalb liefere ich dir erst einmal dein GET-Beispiel.
Ich nehme deinen Code und schreibe ihn nach PureBasic um:
Code: Alles auswählen
#!/pb/interpreter -w
OpenConsole()
PrintN("Content-Type: text/html"+#LF$)
seite$=GetEnvironmentVariable("QUERY_STRING")
seite$=StringField(seite$, 2, "=")
If seite$ = "index"
Print("Indexseite")
EndIf
If seite$ = "start"
Print("Startseite")
EndIf
Der Rest ist dein PHP, wa sich nach PB konvertiert habe. Ich habe die QUERY_STRING-Variable genommen, und dann mit StringField() den Teil nach dem Gleichheitszeichen rausgeschnitten. Es gibt sicherlich elegantere Wege, das zu erreichen. Ich könnte dir das auch in einem Einzeiler machen, aber so ist es erst mal verständlicher.
Die beiden If-Abfragen dürftest du ja leicht wieder erkennen.
Bitte teste dein Beispiel einmal selbst, ich habe den eben gezeigten Code hochgeladen:
http://and51.de/cgi-bin/test/x360andy.pb?seite=start
http://and51.de/cgi-bin/test/x360andy.pb?seite=index