Frontend-Login funktioniert nicht (Redirect auf index.php)

Gesperrt
pateng
Beiträge: 53
Registriert: Do 1. Sep 2005, 16:38
Kontaktdaten:

Frontend-Login funktioniert nicht (Redirect auf index.php)

Beitrag von pateng » Do 1. Sep 2005, 16:57

Habe folgendes Problem und freue mich über jeden Tip:

Mein Frontend läuft unter www.xyz.ch/cms (fiktiv)
Mein Backend läuft unter cms.xyz.ch/contenido-4.4.5/contenido/index.php

Ich will bestimmte Kategorien nur Login-Benutzern zugänglich machen, also habe ich diese Kategorien "geschützt". Solange ich als irgendein User eingeloggt bin, funktioniert alles prima, d.h. ich kann die geschützten Kategorien und Artikel ganz normal aufrufen.

Bin ich aber nicht unter einem User eingeloggt, so würde ich erwarten, dass beim Zugriff auf diese Kategorien eine Weiterleitung auf ein Login-Form erfolgt, oder zumindest eine entsprechende "Access denied"-Meldung.
Stattdessen aber wird aber auf eine Datei index.php in meinem root-Verzeichnis weitergeleitet, die gar nicht existiert.

Konkret:
Wenn z.B. die url
http://www.xyz.ch/cms/front_content.php?idcatart=345
auf einen Artikel in einer "geschützten" Kategorie zeigt und ich diese URL ohne Login aufrufe, so erfolgt fälschlicherweise ein Redirect auf
http://www.xyz.ch/cms/index.php
und folglich erhalte ich einen "Page cannot be displayed"-Fehler (IE).

Meine bisherigen Vermutungen, die mich auber nicht weiterbringen sind folgende:
1. es stimmt etwas nicht mit der $contenido_path-Variable in meiner Mandanten-config.php:
$contenido_path = "/data/www/contenido/htdocs/contenido-4.4.5/contenido/";
Dieser absolute Pfad scheint mir aber korrekt zu sein. Der absolute Pfad meines Frontends lautet "/data/www/xyz/cms"
2. Es gibt ein Problem mit den unterschiedlichen Subdomains (s.o.: www.xyz.ch für das Frontend, cms.xyz.ch für das Backend)

Hat hierzu jemand eine gute Idee?
Vielen Dank im Voraus :) :) :)

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Do 1. Sep 2005, 21:03

Es scheint, dass Contenido die Error page aufruft, aber nicht die Login Seite. Der Link im Frontend muss richtig sein, sonst käme gar nichts. Eher ist der Mandantenpfad im Backend und Administration/ Mandant nicht richtig gesetzt.

Ist die Seite garantiert online und hat einen Startartikel?
Viel Erfolg
Florian

pateng
Beiträge: 53
Registriert: Do 1. Sep 2005, 16:38
Kontaktdaten:

Beitrag von pateng » Fr 2. Sep 2005, 10:20

Erstmal vielen Dank für die schnelle Antwort ;-)
Beleuchtfix hat geschrieben:Ist die Seite garantiert online und hat einen Startartikel?
Ja, denn abgesehen vom Loginproblem funktioniert ja alles.
Beleuchtfix hat geschrieben:Der Link im Frontend muss richtig sein, sonst käme gar nichts.
Das denke ich auch, denn wenn ich eingeloggt bin und auf den link zur geschützten Seite klicke, sehe ich sie ja ohne Fehler.
Beleuchtfix hat geschrieben:Eher ist der Mandantenpfad im Backend und Administration/ Mandant nicht richtig gesetzt.
Folgendes ist gesetzt:
Server path=/data/www/xyz/cms/
Web address=http://www.xyz.ch/cms/

Wenn diese Pfade falsch wären, dann dürfte die Seite doch generell nicht funktionieren, oder sehe ich das falsch?
Könnte es nicht sein, daß abgesehen vom Filesystempfad auch die Web-URLs ausschlaggebend sind? Denn ich vermute ja ein Problem mit den Subdomain-Namen. Oder andersrum gefragt: Kann das Backend generell unter einer anderen Domain laufen als das Frontend?
Beleuchtfix hat geschrieben:Es scheint, dass Contenido die Error page aufruft, aber nicht die Login Seite.
Welche Errorpage ist das denn, die da aufgerufen werden soll? Die im Mandant oder eine Seite aus dem Contenido-Backend?

Fragen über Fragen...

NACHTRAG (wichtig!):
Habe soeben entdeckt, daß es unter Administration -> Mandanten noch zwei weitere Parameter gibt:
Error page category = 0
Error page article = 0

Muß ich hier vielleicht eine Kategorie und einen Artikel verlinken, damit die Errorpage angezeigt werden kann? Und wie müsste eine solche Errorpage implementiert werden?

pateng
Beiträge: 53
Registriert: Do 1. Sep 2005, 16:38
Kontaktdaten:

Beitrag von pateng » Fr 2. Sep 2005, 11:11

Ok, und hier gleich nochmal ein Nachtrag, denn ich bin einen Schritt weitergekommen:

1. Habe einen (leeren) Artikel namens "errorpage" erstellt
2. Habe als sysadmin unter Administration -> Mandanten diese Seite unter den Parametern Error page category und Error page article registriert

Wenn ich nun im ausgeloggten Zustand meine geschützte Seite aufrufen will, erscheint tatsächlich ein Loginprompt. Soweit so gut...

Allerdings handelt es sich um den Backend-Login, denn wenn ich mich nun einlogge, werde ich nicht auf meine Seite zurückgelenkt, sondern lande im backend. Ausserdem wird mir die loginseite im top frame angezeigt, obwohl sich die aufzurufende geschützte Seite in einem iframe befinden sollte. Also gleich zwei neue Probleme auf einmal... :-/... :)

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Fr 2. Sep 2005, 11:15

Handelt es sich wirklich um den Backend-Login? Schau ggf mal in die URL

pateng
Beiträge: 53
Registriert: Do 1. Sep 2005, 16:38
Kontaktdaten:

Beitrag von pateng » Fr 2. Sep 2005, 12:29

timo hat geschrieben:Handelt es sich wirklich um den Backend-Login? Schau ggf mal in die URL
Ja, die URL, auf die ich geleitet werde, ist
http://cms.xyz.ch/contenido-4.4.5/contenido/index.php

Das Frontend liegt unter
http://www.xyz.ch/cms

Aber jetzt habe ich noch was anderes gefunden, das vielleicht aufschlussreich sein könnte:
In meiner Contenido-(nicht Mandanten-!)-config.php gibt es folgenden Eintrag:

/* The root server path where all frontends reside */
$cfg['path']['frontend'] = '/data/www/contenido/htdocs/contenido-4.4.5';


Kann es sein, daß dies zu Fehlern führt, wenn mein Frontend außerhalb dieses Pfades liegt???

Und wie wäre denn eigentlich das korrekte, zu erwartende Verhalten? Ich denke, eigentlich sollte ich doch anstelle der geschützten Seite einen Login sehen, der mich dann, nach erfolgreichem Login auf die geschützte Seite weiterleitet, oder etwa nicht?

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Fr 2. Sep 2005, 14:56

pateng hat geschrieben:Welche Errorpage ist das denn, die da aufgerufen werden soll? Die im Mandant oder eine Seite aus dem Contenido-Backend?
Wenn nichts eingegeben ist, dann erscheint bei Fehlern (wie Seite nicht vorhanden etc) die Startseite der Site.
pateng hat geschrieben:Und wie wäre denn eigentlich das korrekte, zu erwartende Verhalten? Ich denke, eigentlich sollte ich doch anstelle der geschützten Seite einen Login sehen, der mich dann, nach erfolgreichem Login auf die geschützte Seite weiterleitet, oder etwa nicht?
Also deine Vermuting ist korrekt, so arbeitet Contenido wenn alles klappt.
pateng hat geschrieben:/* The root server path where all frontends reside */
$cfg['path']['frontend'] = '/data/www/contenido/htdocs/contenido-4.4.5';
hier scheint der Fehler zu liegen.
nach meiner Meinung müsste da stehen:

Code: Alles auswählen

$cfg['path']['frontend'] = '/data/www/xyz/cms' 
Viel Erfolg
Florian

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Fr 2. Sep 2005, 15:43

nein, in $cfg["path"]["frontend"] steht ein SERVER-Pfad. Der kann es beim besten willen nicht sein, außerdem wird dieser Pfad nur beim Mandanten anlegen sowie bei der Ausgabe der Systeminformationen verwendet.

pateng
Beiträge: 53
Registriert: Do 1. Sep 2005, 16:38
Kontaktdaten:

Beitrag von pateng » Fr 2. Sep 2005, 16:29

Beleuchtfix hat geschrieben:hier scheint der Fehler zu liegen.
nach meiner Meinung müsste da stehen:

Code: Alles auswählen

$cfg['path']['frontend'] = '/data/www/xyz/cms' 
timo hat Recht: Genau das habe ich schon ausprobiert, aber ohne Erfolg.
Deshalb würde ich gerne nochmal auf die Mandanten-Parameter Error page category und Error page article zurückkomen (s.o.): Weiß jemand, ob ich die überhaupt brauche bzw. ob ich deren Funktion richtig verstanden habe?
Oder gibt's zu der ganzen Thematik eine Doku? Bisher habe ich nämlich im Handbuch nix gefunden.

pateng
Beiträge: 53
Registriert: Do 1. Sep 2005, 16:38
Kontaktdaten:

Beitrag von pateng » Di 6. Sep 2005, 11:44

Gibt's denn niemand, der deses Problem kennt?

Ich hatte inzwischen die Vermutung, daß Contenido ein Problem damit hat, daß mein Frontend-Verzeichnis außerhalb des Contenido-Installationsverzeichnisses liegt. Deshalb habe ich das Frontend zurück ins cms-Verzeichnis unter Contenido kopiert und die Mandantenpfade entsprechend angepaßt, aber ohne Effekt.

Alles ist wie zuvor, das bedeutet: Die Seite funktioniert bestens, aber sobald ich (ohne Login) einen geschützten Bereich aufrufe, werde ich auf den Backend-Login umgeleitet. Wenn ich mich dort einlogge, lande ich im Backend statt im Frontend. Kehre ich daraufhin zum Frontend zurück (im selben Browser), so bin ich dort immer noch ausgeloggt (also scheint es nicht mal eine gültige Session zu geben). Das kann doch so nicht beabsichtigt sein!

FrankHoffmann
Beiträge: 149
Registriert: Sa 21. Jun 2003, 14:03
Kontaktdaten:

Beitrag von FrankHoffmann » Mi 7. Sep 2005, 08:28

Ich habe das Problem auch gehabt und habe mir quick&dirty folgendes gebaut:
Die Datei front_crcloginform.inc.php im cms Verzeichnis einfach mit einer Javascript-Weiterleitung auf die entsprechende Login-Seite versehen:

Beispielsweise:

Code: Alles auswählen

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
    <script LANGUAGE="JavaScript">
    top.location.href='http://www.xxxxx.de/front_content.php?idcatart=100'
</script>
</head>
<body>
</body>
</html>
ccccccccc

pateng
Beiträge: 53
Registriert: Do 1. Sep 2005, 16:38
Kontaktdaten:

Beitrag von pateng » Mi 7. Sep 2005, 09:03

FrankHoffmann hat geschrieben:Ich habe das Problem auch gehabt und habe mir quick&dirty folgendes gebaut:
Die Datei front_crcloginform.inc.php im cms Verzeichnis einfach mit einer Javascript-Weiterleitung auf die entsprechende Login-Seite versehen:
Danke für den Tip!
Ich verstehe das jetzt so, daß http://www.xxxxx.de/front_content.php?idcatart=100 eine von Dir handimplementierte Loginseite ist, welche das Login-Prompt für alle anderen Seiten zur Verfügung stellt. So etwas ähnliches habe ich auch schon probiert (mit einer PHP-Weiterleitung mittels "header(...);".

Allerdings bedeutet das dann doch, daß ...
1. ...der anschließende Redirect auf die Seite, die ursprünglich aufgerufen werden soll, verloren geht (es sei denn, man übergibt diese Information ebenfalls an das Loginform und programmiert die Weiterleitung selbst aus)
2. ...ich auf sämtliche von Contenido vorimplementierte Loginlogik verzichten muß. Damit komme ich dann in Teufelsküche, weil ich alles von Adam&Eva wieder selbst machen muß.

Oder verstehe ich das jetzt völlig falsch?

FrankHoffmann
Beiträge: 149
Registriert: Sa 21. Jun 2003, 14:03
Kontaktdaten:

Beitrag von FrankHoffmann » Mi 7. Sep 2005, 09:49

zu 1 und 2: stimmt.

ist eben quick & dirty

pateng
Beiträge: 53
Registriert: Do 1. Sep 2005, 16:38
Kontaktdaten:

Beitrag von pateng » Mi 7. Sep 2005, 10:06

Rätsel gelöst! Das ganze hatte mit dem HTML-Frameset zu tun!

Der Hinweis auf front_crcloginform.inc.php war schon mal nicht schlecht. Darin findet sich folgender JS-Header:

Code: Alles auswählen

<script language="javascript">
	if(top!=self)
	{
		top.location="index.php";
	}
    </script>
Da sich meine aufgerufene (geschützte) Seite in einem iframe befindet, springt das Loginformscript automatisch in den top frame und öffnet dort das index.php im Mandantenverzeichnis. Und dieses macht schlicht und ergreifend folgendes:

Code: Alles auswählen

<?php
header("location:http://cms.xyz.ch/contenido-4.4.5/contenido/index.php");
?>
Im Klartext: Es wird das Backend-Login aufgerufen (wozu eigentlich???).

Aber egal: Durch Auskommentieren der o.g. Javascript-Zeilen funktioniert's nun. :)

Gesperrt