Weiterleitung nach Login auf geschützte Seite - eine Lösung

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

Weiterleitung nach Login auf geschützte Seite - eine Lösung

Beitragvon tania63 » 10. Apr 2007, 09:32

Hallo zusammen,
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
tania63
 
Beiträge: 1
Registriert: 10. Apr 2007, 09:05

Beitragvon maik@nordbahn » 3. Aug 2007, 11:53

Super! Das ist das was ich gesucht habe.
Ich hab da noch eine Geschichte bei der ich nicht Weiterkomme.
Vielleicht hast du ja eine Lösung dafür?

ich verwende Das NaviMenü von Raybeam Login Logout.

Mein Menü sieht so aus:
Code: Alles auswählen
Eintrag1 | Eintrag2 | Eintrag3 | Eintrag4 | Eintrag5    -->zeilenwechsel
Login (Logout wenn eingeloggt)

Ich möchte das gerne so machen:
Code: Alles auswählen
Eintrag1 | Eintrag2 | Eintrag3 | Eintrag4 | Eintrag5 | Login (Logout wenn eingeloggt)   !-->kein zeilenwechsel!


Meine Struktur:
Code: Alles auswählen
<div id="container">
     <div id="head"></div>
     <div id="menu"><?php print $navigation."\n"; ?>
     <?php 
if (!$FORM['USR'] OR $FORM['LOGOUT'] == 1) {
print '<ul class="navroot"><li><a href="'.rex_getUrl(66,$REX['CUR_CLANG']).'">Login</a></li></ul>'."\n";
}
else {
print '<ul class="navroot"><li><a href="'.rex_getUrl($REX['START_ARTICLE_ID'],$REX['CUR_CLANG'],'&FORM[LOGOUT]=1').'">Logout</a></li></ul>'."\n";
  }
?>
      </div>
      <div id="submenu"><?php print $subNavigation."\n"; ?></div>
      <div id="content"><?php print $this->getArticle(); ?></div>
      <div id="foot"></div>
</div>

Durch die Einbindung des Login/Logout "Button" entstehen aber zwei UL´s.
Liebe Grüße
Maik
Benutzeravatar
maik@nordbahn
 
Beiträge: 166
Registriert: 29. Jan 2007, 15:10

Beitragvon Zuperfly » 20. Aug 2007, 15:32

Wie du schon schreibst, einmal wird ja durch das
Code: Alles auswählen
<?php print $navigation."\n"; ?>
eine Liste generiert. Und danach geht's ja direkt mit
Code: Alles auswählen
<ul class="navroot">
weiter, daher die zweite Liste. Liste sind in HTML Block-Elemente, d.h. sie verursachen immer einen Zeilenumbruch und können im Normalfall nicht hintereinander in einer Zeile stehen.

Entweder friemelst du also die Login/Logout-Sache noch in dein Navigationstemplate rein (was zwar eleganter aber vielleicht ein wenig aufwändig ist), oder du formatierst einfach deine beiden Listen via CSS entsprechend um, so dass beide nicht als Block-Element, sondern 'inline' angezeigt werden (display: inline;). Dann sollte es auch klappen.
Zuperfly
 
Beiträge: 214
Registriert: 17. Mär 2006, 17:42

Beitragvon Seven-Art » 2. Sep 2007, 20:56

Hi tania63

Erstmal danke für Deinen klasse Post,. Leider habe ich aber Probleme damit,. Ich kann mich einloggen, werden aber nicht zum Artikel für den Kunden weitergeleitet.

Kannst Du mir da irgendwie helfen oder jemand anderes hier ?
Das wäre klasse. Danke

Chris
Benutzeravatar
Seven-Art
 
Beiträge: 19
Registriert: 23. Jul 2006, 21:43
Wohnort: Kalkar / Kleve


Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast