Indexseite mit Parameter

Xb2.Net von Boris Borzic

Moderator: Moderatoren

Antworten
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Indexseite mit Parameter

Beitrag von Rudolf »

Hallo,
ich brauche eine Weiche für den Login damit ich verschiedene Indexseiten aufrufen kann. Zuerst dachte ich dass ich einen Parameter angeben kann, geht aber nicht, z.B. localhost:81?action=login1 ergibt The requested file was not found ! aus der Methode onnotfound(). Mit login1.localhost:81 geht es, ich kann dann mit oClient:HTTPRequest:host() login1 rausfiltern. Habe ein Domain für meinen Webserver registriert und eine Umleitung auf die IP und den Port gemacht, hier funktioniert es wiederum nicht. Wie kann ich also unterschiedliche Logins für einen Webserver machen ?
Grüße
Rudolf
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Indexseite mit Parameter

Beitrag von Martin Altmann »

Moin Rudolf,
Boris hat doch ein ganz gutes Beispiel dabei - baue einfach subdomains! Die kannst Du dann auch entsprechend verzweigen.
Dazu nutzt Du einfach den FilterRequest:

Code: Alles auswählen

Function FilterRequest(oClient)
  Local i
  Local cHost := oClient:HTTPRequest:Host()
  Local cPath := oClient:HTTPRequest:Path()

  if valtype( cHost ) == "U"
  	cHost := ""
  endif
  if valtype( cPath ) == "U"
  	cPath := ""
  endif
  // strip out port numbers
  if (i := At(':',cHost)) > 0
    cHost := Left(cHost,i-1)
  endif
	if lower( left( cHost, 9 ) ) == "meldungen"
		cHost := ""
		if cPath $ "/\" .or. Empty(cPath)
			cPath := "/index.html"
		endif
	elseif lower( left( cHost, 12 ) ) == "kundenportal"
		cHost := ""
		if cPath $ "/\" .or. Empty(cPath)
			cPath := "/Login"
			oClient:HTTPRequest:StartLine += "?"
		endif
	elseif .not. empty( cHost )
		cHost := "/altem"
		if cPath $ "/\" .or. Empty( cPath )
			cPath := "/index.html"
		endif
	endif
  // modify requested path
  cPath := cHost + cPath
  oClient:HTTPRequest:Path(cPath)
Return .T.
den Du wie folgst einbaust:

Code: Alles auswählen

MEMVAR->oWebServer:FilterRequest  := {|o| FilterRequest(o)}
In meinem Beispiel wird aus meldungen.altem.de :arrow: /index.html
aus kundenportal.altem.de :arrow: /Login?
aus altem.de (oder www.altem.de) :arrow: /altem/index.html

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Indexseite mit Parameter

Beitrag von Rudolf »

Hallo Martin,
danke, so ähnlich habe ich es gemacht, aber ich kann auf einem anderen Rechner im Netzwerk mit dem Webserver nicht z.B. kundenportal.192.168.0.105:81 aufrufen, das geht nur mit localhost. Auch von außerhalb geht es nicht.
Grüße
Rudolf
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Indexseite mit Parameter

Beitrag von Martin Altmann »

Hallo Rudolf,
das kannst Du auch nicht - dafür muss ein entsprechender Eintrag im DNS vorliegen (oder in der lokalen "C:\Windows\System32\drivers\etc\hosts").
Im letzteren Fall schreibst Du Dort (auf dem PC, von dem aus Du testen willst) z.B. rein:

Code: Alles auswählen

192.168.0.105       kundenportal.webserver.localhost
192.168.0.105       meldungen.webserver.localhost
192.168.0.105       www.webserver.localhost
Dann kannst Du in Deinem Browser kundenportal.webserver.localhost als Adresse eingeben (oder eine der anderen beiden), landest immer auf dem selben Zielserver, der aber anhand des FilterRequest dann unterschiedlich reagiert.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
DelUser01

Re: Indexseite mit Parameter

Beitrag von DelUser01 »

Wie Matin schon geschrieben hat müsstest Du verschiedene (Sub-)Hosts verwenden.
Die Web-Server arbeiten vorrangig mit Host-Headern (DNS-gesteuert).
In Intra-Netzen kann das schon über mehrere IP-Adressen je Netzwerkkarte gemacht werden, ist aber bei public Hostern nicht mehr üblich bzw machbar.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Indexseite mit Parameter

Beitrag von Rudolf »

Hallo,
danke für Eure Antworten, dann muss ich mir eine andere Methode suche, mich wundert nur dass ich keine Parameter an die Index Seite übergeben kann die ich mit oServer:IndexFile definiere.
Grüße
Rudolf
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Indexseite mit Parameter

Beitrag von Rudolf »

Hallo,
Problem gelöst, ich prüfe im Filter einfach auf den String im Path und ändere die Index Seite, das geht anscheinend immer.
Grüße
Rudolf
Antworten