nachdem ich in diesem Forum verschiedene Ansätze für Weiterleitungen nach dem Login gelesen habe, möchte ich hier meine Lösung für folgendes Szenario vorstellen:
nicht eingeloggter User wählt in der Navigation eine Seite, die geschützt ist. Der User wird auf das Login-Formular umgeleitet. Nach dem erfolgreichen Login soll der User nun direkt auf die ursprünglich gewählte Seite weitergeleitet werden.
Diese Weiterleitung habe ich unter Verwendung der Templates "login" (Login-Formular) und "Authentifizierung - mehrere Benutzerbereiche" von raybeam eingerichtet.
Folgende Ergänzungen sind einzutragen:
1. zusätzliches verstecktes Feld im Login-Formular:
- Code: Alles auswählen
<input type="hidden" name="come_from" value="'.$_GET["come_from"].'" />
2. zusätzlicher Parameter come_from im Aufruf des Login-Formulars, ergänzen am Ende des Templates "Authentifizierung - mehrere Benutzerbereiche":
- Code: Alles auswählen
header("Location: http://".$_SERVER['HTTP_HOST']."/cms_redaxo/index.php?article_id=".$errorArticleId."&come_from=".$this->getValue("article_id")."&clang=".$REX['CUR_CLANG']);
also hinzu: "&come_from=".$this->getValue("article_id").
3. weiterleiten auf diese Seite nach erfolgreichem Login, hier die entsprechende Stelle im Template "Authentifizierung - mehrere Benutzerbereiche":
- Code: Alles auswählen
...
if ($FORM['USER']->checkLogin())
{
$FORM['USR'] = true;
$user_id = $FORM['USER']->getValue("rex_2_user.id");
$user_name = $FORM['USER']->getValue("rex_2_user.user_name");
$FORM['USR_ID'] = $user_id;
$FORM['USR_TYP'] = $FORM['USER']->getValue("rex_2_user.user_typ");
/* Umleitung nach Login auf die vorher gewählte Seite */
if(!empty($_POST["come_from"])){
header("Location: http://".$_SERVER['HTTP_HOST']."/cms_redaxo/index.php?article_id=".$_POST["come_from"]."&clang=".$REX['CUR_CLANG']);
exit;
}
/* Ende Umleitung */
}
...
Hoffe, es hilft jemandem,
Gruß
Tania

