User Login - Cache Problem

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

User Login - Cache Problem

Beitragvon korbinian » 12. Apr 2011, 12:01

Hallo,

Ich habe auf meine Webseite einen Benutzerbereich, für den man sich einloggen muss.
Das Login Formular (aus dem Community-Addon) habe ich in ein extra Template eingebaut, dass in das default-Template eingebunden wird.

Wenn der Benutzer angemeldet ist, soll an der Stelle, wo vorher dass Login-Formular war, eine Usernavi sein. (Ähnlich wie bei myRedaxo)

Allerdings stellt sich folgendes Problem ein:
War der Benutzer beispielsweise auf Artikel 2,3,4 und loggt sicht dann auf Artikel 5 ein, dann funktioniert die Anzeige des Usermenü beim Artikel 5. Bei den Artikeln 2,3,4 wird immer noch das Login-Formular angezeigt.

Was mache ich falsch?

Vielen Dank schon mal
Korbinian
korbinian
 
Beiträge: 3
Registriert: 17. Jul 2009, 15:36

Re: User Login - Cache Problem

Beitragvon Markus.Lorch » 12. Apr 2011, 13:02

Das kann dir keiner Sagen, wenn Du uns nicht zeigst wie du das gemacht hast. Code Beispiele etc solltest du schon posten. Wenn es nach dem besuch auf anderen Seiten auf Artikel 5 wieder nicht mehr geht, dann wohl eher ein Session problem.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle
Benutzeravatar
Markus.Lorch
 
Beiträge: 635
Registriert: 21. Okt 2007, 16:22
Wohnort: Walheim

Re: User Login - Cache Problem

Beitragvon korbinian » 12. Apr 2011, 13:24

Hier das Auth-Template:

Code: Alles auswählen
<?php
// -------------------------------------------------------------- USER AUTH
unset($REX['COM_USER']);
$pagekey = 'comrex'; // Frontendkey, muss sich unterscheiden, damit frontend und backend sich nicht schneiden.
$login_name = rex_request("login_name","string");
$login_psw = md5(rex_request("login_psw","string"));
$logout = rex_request("logout","int");
$msg = 'Bitte einloggen';

// ----- session start
session_start();
if ((isset($_SESSION[$pagekey]['UID']) && $_SESSION[$pagekey]['UID'] != "") or $login_name != "" or $login_psw != "")
{
   $user_id = (int) $_SESSION[$pagekey]['UID'];
   $GLOBALS["I18N"] = rex_create_lang("de");
   $REX['COM_USER'] = new rex_login();
   $REX['COM_USER']->setSqlDb(1);
   $REX['COM_USER']->setSysID($pagekey);
   $REX['COM_USER']->setSessiontime(3000);
   $REX['COM_USER']->setLogin($login_name,$login_psw);
   if ($logout == 1) { $REX['COM_USER']->setLogout(true); }
   $REX['COM_USER']->setUserID("rex_com_user.id");
   $REX['COM_USER']->setUserquery("select * from rex_com_user where id='USR_UID' and status>0");
   $REX['COM_USER']->setLoginquery("select * from rex_com_user where login='USR_LOGIN' and password='USR_PSW' and status>0");
   
   if ($REX['COM_USER']->checkLogin())
   {
      // ----- Login gelungen
      if ($login_name != "")
      {
         // ----- Login gelungen und gerade erst eingeloggt
         $msg = 'Sie haben sich eingeloggt!';
         
         /*
         $COM_USER_SAVE = new rex_sql();
         $COM_USER_SAVE->setTable('rex_com_user');
         $COM_USER_SAVE->setValue('last_login_time',time());
         $COM_USER_SAVE->setWhere('id='.$REX['COM_USER']->getValue('rex_com_user.id'));
         $COM_USER_SAVE->update();
         */
         $jump_aid = $REX['START_ARTICLE_ID'];
      }
   }else
   {
      // ----- Login failed
      $msg = 'Login ist fehlgeschlagen.';
      if ($logout == 1)
         $msg = 'Sie haben sich ausgeloggt';
      
      unset($REX['COM_USER']);
      if ($logout == 1)
         $jump_aid = $REX['START_ARTICLE_ID'];
   }
}else
{
   // ----- nicht eingeloggt und kein login
   $msg = 'Sie sind nicht eingeloggt.';
   unset($REX['COM_USER']);
}
if (isset($jump_aid))
{
  header('Location:'.rex_getUrl($jump_aid));
  exit;
}
?>


Hier der wichtige Teil aus dem Login-Template:

Code: Alles auswählen
<?php
$login = '';
$status = '';
if (isset($REX['COM_USER']) && is_object($REX['COM_USER'])){   
   $status = 'Login';   
   $sql = new rex_sql();
   $sql->setQuery('UPDATE `rex_com_user` SET `last_login` = "'.date().'"where user_id='.$REX['COM_USER']->getValue('id'));      
   $login .= '<strong> ###Template::Begruessung###&nbsp; '.ucwords($REX['COM_USER']->getValue('firstname')).' '.ucwords($REX['COM_USER']->getValue('name')).'</strong>';      
   $login .= '<a href="'.rex_getUrl('115').'" class="user_link">###Template::MeinProfil### </a>';      
   $login .= '<a href="'.rex_getUrl('120').'" class="user_link">###Template::Passwortaendern### </a>';   
  $login .= '<a href="'.rex_getUrl('130').'" class="user_link">###Template:Newslettereinstellungen###</a>';
  $login .= '<a href="'.rex_getUrl($logout_aid,'',array('logout'=>1)).'" class="user_link">Logout</a>';
  if ($REX['COM_USER']->getValue('active_to') <> "0000-00-00"){    
    $timedif = time() -strtotime($REX['COM_USER']->getValue('active_to'));
    if ($timedif >86400){    
       $sql_qry ="UPDATE rex_com_user SET serviceprogramme = '0', changeable = '0' WHERE rex_com_user.id = ".$REX['COM_USER']->getValue('id');
       $sql->setQuery($sql_qry);   $REX['COM_USER'] = "";
       $url = "Location: http://www.schletter.de/576-".$_GET['clang']."-Account-abgelaufen.html";   
       Header($url);
    }
  }
}
elseif("REX_VALUE[1]"!='0' OR(!isset($REX['COM_USER']) && !is_object($REX['COM_USER']) )){
    $status = 'Logout';   
    if($fehlschlag==TRUE){       
      $login .=' <div style="color:red;"> ';   
    }   
    else{      
      $login .='<div>';   
    }      
    $login .= $msg;      
    $login .= ' </div><p class="form_warning" style="">';
    if($_GET['fehlschlag']==TRUE) $login .= "###Login::Fehlgeschlagen### ";
      $login .='<form action="index.php?article_id='.$_GET['article_id'].'&clang='.$_GET['clang'].'" method="post">
  ###Template::Benutzername###
  <input type="text" class="input" id="name" name="login_name" value="###Template::Benutzername###..." onblur="if(this.value == \'\') this.value=\'###Template::Benutzername###...\'" onfocus="if(this.value.substring(this.value.length-3, this.value.length) == \'...\') this.value=\'\'">
  ###Template::Passwort###
  <input type="password" class="input" id="password" name="login_psw" value="###Template::Passwort###..." onblur="if(this.value == \'\') this.value=\'###Template::Passwort###...\'" onfocus="if(this.value == \'###Template::Passwort###...\') this.value=\'\'">
  <input type="submit" class="submit" value="Login" title="Anmeldung durchführen">
  <input type="hidden" name="article_id" value="';
   if($_GET['redirect']!=""){
    $login.=$_GET['redirect'];
   }
   else{
    $login.=$_GET['article_id'];
   }
   $login.='">';
  $login .='<a href="'.rex_getUrl(114).'" class="user_link">###Template::Registrieren###</a>
  <a href="'.rex_getUrl(92).'" class="user_link">###Template::Passwortvergessen###</a>
  </form>';
}
echo $login;
?>
korbinian
 
Beiträge: 3
Registriert: 17. Jul 2009, 15:36


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste