Memberpages, Weiterleitung

Third Party Plugins to CMSimple - how to install, use and create plugins

Moderator: Tata

lck
Posts: 1845
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Memberpages, Weiterleitung

Post by lck » Fri May 30, 2014 1:23 pm

Hallo,

in Memberpages config kann man ja einstellen, auf welche Seite man nach dem Login weitergeleitet werden soll.
Jetzt möchte ich aber, je nach Zugangslevel des Mitgliedes auf verschiedene Seiten weiterleiten, evtl. auch auf externe Seiten.

Beispiel:
ich erstelle ein Login-Formular auf einer H1 Seite mit
{{{PLUGIN:memberslogin();}}}
nach der Eingabe des Passwortes soll auf eine untergeordnete Seite H2 (Mitgliederseite) bzw. auf eine externe Seite weitergeleitet werden.

Kann man das im Pluginaufruf angeben?

Schöne Wochenende
Ludwig
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

svasti
Posts: 1649
Joined: Wed Dec 17, 2008 5:08 pm

Re: Memberpages, Weiterleitung

Post by svasti » Fri May 30, 2014 2:35 pm

Hallo Ludwig,
eine interessante Anfrage. Das ist momentan nicht vorgesehen, kann aber leicht eingebaut werden:

Bei memberpages/index.php ab Zeile 408 den code

Code: Select all

            //If a login_page is defined use it
            if($plugin_tx['memberpages']['page_on_login']) {
                header('Location: '.CMSIMPLE_URL.'?'.$plugin_tx['memberpages']['page_on_login']);
                exit;
 
ersetzen durch

Code: Select all

            //If a login_page is defined use it
            if($plugin_tx['memberpages']['page_on_login']) {
                if($_SESSION['accesslevel'] == '2') {
                    header('Location: '.CMSIMPLE_URL.'?Termine');
                    exit;
                } else {
                    header('Location: '.CMSIMPLE_URL.'?'.$plugin_tx['memberpages']['page_on_login']);
                    exit;
                }
 
Ich habe als Beispiel Zugangsniveau "2" eingegeben, da kann ein beliebiges anders Zugangsniveau stehen. Die dann erscheinende Seite steht hinter "location:", Jetzt habe ich nur für den Test die Seite "Termine" eingegeben, also statt Termine den Namen der Seite, die gewünscht wird, URL-codiert eingeben. Bei externer Website einfach eingeben:
header('Location: http://www.meine-externe-website.de');

svasti

cmb
Posts: 13273
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Memberpages, Weiterleitung

Post by cmb » Fri May 30, 2014 3:03 pm

svasti wrote:Das ist momentan nicht vorgesehen, kann aber leicht eingebaut werden:
Schön. :)
svasti wrote:

Code: Select all

header('Location: '.CMSIMPLE_URL.'?Termine');
Hier sollte man vielleicht noch darauf hinweisen, dass CMSIMPLE_URL erst ab CMSimple_XH 1.6 verfügbar ist (und nicht in CMSimple v4). Als Notlösung funktioniert meist auch (nicht unbedingt bei allen Servern, und vielleicht auch nicht bei allen Browsern):

Code: Select all

header('Location: '.$sn.'?Termine');
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 1845
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Memberpages, Weiterleitung

Post by lck » Fri May 30, 2014 4:01 pm

Hallo Svasti,

besten Dank. Habe es eingebaut und war grad schon am verzweifeln, unter CMSimple 4.4.2 wurde mir nur noch ein leere weiße Seite angezeigt. Also zurück ins Forum und siehe da Christoph hat es bereits vorrausgesehen, danke Christoph.

Nachtrag:
das mit der leeren Seite lag an der fehlenden Klammer }, mein Fehler.

Weiterleitung funktioniert bei mir so nicht (Xampp und CMSimple 4.4.2)

Code: Select all

//If a login_page is defined use it
            if($plugin_tx['memberpages']['page_on_login']) {
                if($_SESSION['accesslevel'] == '3') {
                    header('Location: '.$sn.'?Termine');
                    exit;
                } else {
                    header('Location: '.$sn.'?'.$plugin_tx['memberpages']['page_on_login']);
                    exit;
                }
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

svasti
Posts: 1649
Joined: Wed Dec 17, 2008 5:08 pm

Re: Memberpages, Weiterleitung

Post by svasti » Fri May 30, 2014 4:34 pm

stoa wrote:war grad schon am verzweifeln
ja, solche Gefühle kenne ich auch
stoa wrote:CMSimple 4.4.2 . . . siehe da Christoph hat es bereits vorrausgesehen
Uff, darauf wär ich nicht gekommen.
stoa wrote:lag an der fehlenden Klammer }, mein Fehler.
willkommen im Klub
stoa wrote:Weiterleitung funktioniert bei mir so nicht (Xampp und CMSimple 4.4.2)
Wie? es funktioniert nicht? Hat es denn vorher funktioniert (mit ursprünlicher Version). In deiner neuen Version steht ja auch noch "Termine", das muss zum entsprechenden Seitennamen geändert werden.

cmb
Posts: 13273
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Memberpages, Weiterleitung

Post by cmb » Fri May 30, 2014 5:12 pm

svasti wrote:
stoa wrote:lag an der fehlenden Klammer }, mein Fehler.
willkommen im Klub
Da ist im Zweifel ein Editor mit automatischem Syntax-Check recht hilfreich. Das sollte eigentlich auch kein Problem sein, weil PHP selbst einen solchen anbietet (php -l) -- evtl. kann man das im Editor als Erweiterung auch selbst nachrüsten.
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 1845
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Memberpages, Weiterleitung

Post by lck » Fri May 30, 2014 8:18 pm

Hallo Svasti,
svasti wrote: Wie? es funktioniert nicht? Hat es denn vorher funktioniert (mit ursprünlicher Version). In deiner neuen Version steht ja auch noch "Termine", das muss zum entsprechenden Seitennamen geändert werden.
Die Weiterleitung funktioniert nicht, egal mit wechem Parameter ob mit

Code: Select all

header('Location: '.CMSIMPLE_URL.'?Termine');
oder mit

Code: Select all

header('Location: '.$sn.'?Termine');
Den Link ?Termine habe ich zum Testen so belassen, weil ich zufällig auch einen Link Termine in meiner Homepage habe (andere Links habe ich auch getestet, gleiches Ergebnis), nur den Zugangslevel habe ich von 2 auf 3 geändert entsprechend meiner Memberlist.

Vielleicht sollte ich das Ganze mal online testen.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

cmb
Posts: 13273
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Memberpages, Weiterleitung

Post by cmb » Fri May 30, 2014 8:45 pm

stoa wrote:

Code: Select all

header('Location: '.CMSIMPLE_URL.'?Termine');
Diese Variante kann unter CMSimple 4.x normalerweise nicht funktionieren, da dort CMSIMPLE_URL nicht definiert ist (es sei denn, ein Plugin hat das gemacht). Ist eine Konstante aber nicht definiert, dann nimmt PHP an, dass man einen String meinte, und so würde zu "CMSIMPLE_URL?Termine" weiter geleitet werden, aber unter der URL ist sicher nichts zu finden.
stoa wrote:Die Weiterleitung funktioniert nicht
Was meinst Du damit genau: bleibt man einfach auf der selben Seite, oder wird man auf die in der Konfiguration eingestellte Seite weiter geleitet?

In erstem Fall sehe ich spontan zwei Fehlermöglichkeiten:
  • Du hast die bearbeitete Datei als UTF-8 mit BOM gespeichert (oder eine andere liegt so vor). Um das auszuschließen, schalte am besten den Debug-Modus ein; da sollte dann ggf. eine Meldung in der Art "could not send headers; already sent in ..." erscheinen.
  • Du testest mit einem Browser oder lokalen Webserver der damit Probleme hat. Ersteres halte ich für unwahrscheinlich (mir ist jedenfalls noch kein Browser über den Weg gelaufen, der nicht zu relativen URLs weiter leiten kann); zweiteres könnte ganz vielleicht an Portable_XH liegen, falls Du das verwendest. Müsste ich mal prüfen.
Christoph M. Becker – Plugins for CMSimple_XH

Gert
Posts: 3054
Joined: Fri May 30, 2008 4:53 pm
Location: Berlin
Contact:

Re: Memberpages, Weiterleitung

Post by Gert » Fri May 30, 2014 9:13 pm

Hallo stoa,

teste doch header('Location: ...') erstmal mit dem kompletten URL (beginnend mit http://): Einfach zur Zielseite gehen und aus der Adresszeile des Browsers kopieren.

Wenn das funktioniert, kannst Du Dir die Zieladresse immernoch "zusammenbasteln", ich habe da schon seit einiger Zeit was online, das Dir vielleicht dabei helfen kann:

http://www.kstb.de/cmsimplevars/

Gert
Last edited by Gert on Sat May 31, 2014 12:01 pm, edited 1 time in total.
Gert Ebersbach | CMSimple | Templates - Plugins - Services

cmb
Posts: 13273
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: Memberpages, Weiterleitung

Post by cmb » Fri May 30, 2014 9:42 pm

Gert wrote:teste doch erstmal mit dem kompletten URL (beginnend mit http://): Einfach zur Zielseite gehen und aus der Adresszeile des Browsers kopieren.
Das ist auf keinen Fall verkehrt. Allerdings ist die klassische Variante um einen relativen URL zu konstruieren bei CMSimple ja:

Code: Select all

$sn . '?' .$su
(bzw. statt $su eben die "Seiten-URL").

Das ist halt nur für header('Location:') nicht standard-konform, da RFC 2616, Abschnitt 14.30 spezifiziert:
Location = "Location" ":" absoluteURI
(Wobei absoluteURI in RFC 2396, Abschnitt 3 definiert ist.)

Selbst wenn also die Weiterleitung beim Testen funktioniert, ist zumindest nicht sicher gestellt, dass es auch von allen Clients korrekt behandelt wird[1], wenn man einen relativen URL angibt (wie gesagt, ist mir diesbezüglich kein Browser bekannt, der damit Probleme hätte, aber ich kenne nicht alle Browser, und schon gar nicht alle potentiellen Clients).
Gert wrote:Wenn das funktioniert, kannst Du Dir die Zieladresse immernoch "zusammenbasteln"
Wäre es nicht sinnvoll, wenn auch CMSimple 4.x da eine Erleichterung anbieten würde?

[1] Natürlich kann standard-konformes Verhalten Probleme mit nicht standard-konformen Clients nicht ausschließen.

PS:
Gert wrote:ich habe da schon seit einiger Zeit was online, das Dir vielleicht dabei helfen kann:

http://www.kstb.de/cmsimplevars/
Diese Seite hat übrigens mehrere XSS Sicherheitslücken.
Last edited by cmb on Sat May 31, 2014 1:09 am, edited 1 time in total.
Reason: PS hinzugefügt
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply