Seite 1 von 1

Login für Forum erwingen

Verfasst: 17.07.2004 19:04
von chodo
Ich habe eine private und daher versteckte Webseite auf Basis von phpBB erstellt. Um Zugriff zu dieser Seite haben zu können, muss man sich erst einmal registrieren und man wird dann ggf. von mir freigeschaltet.
Ich habe mich also nach einem Mod umgesehen, dass meine Bedürniss erfüllt und einen nicht eingeloggten User auf die Login-Seite weiterleitet, sofern dieser auf nicht freigegebenen Content zugreift.
Dabei bin ich auf folgende Möglichkeit gestoßen:
in page_header.php wird nach:

Code: Alles auswählen

if ( $userdata['session_logged_in'] )
{   
	$u_login_logout = 'login.'.$phpEx.'?logout=true&sid=' . $userdata['session_id'];
	$l_login_logout = $lang['Logout'] . ' [ ' . $userdata['username'] . ' ]';
}
else
{
folgendes eingebunden:

Code: Alles auswählen

   if ( basename( $HTTP_SERVER_VARS['REQUEST_URI'] ) != 'login.php') 
   { 
      $n = "\n"; 
    
      echo '<HTML>'.$n 
         .'<HEAD>'.$n 
         .'<META HTTP-EQUIV="refresh" content="0;URL='.append_sid('login.'.$phpEx).'">'.$n 
         .'</HEAD>'.$n 
         .'</HTML>'.$n; 
    
      exit; 
   }
Diese Möglichkeit hat natürlich den entscheidenden Nachteil, dass man sich nciht registrieren kann, weill man bei Anwählen der Option die seite profile.php?mode=register betritt, und somit auf login.php weitergeleitet wird. gibt es einen anderen weg, als jede Seite bis auf login.php und profile.php mit einem eigenen Script zu versehen?

Verfasst: 17.07.2004 21:05
von Dwing
Du kannst mal folgendes versuchen:

Code: Alles auswählen

 if ( substr($_SERVER['PHP_SELF'], strrpos($_SERVER['PHP_SELF'], '/')) != 'login.php' && substr($_SERVER['PHP_SELF'], strrpos($_SERVER['PHP_SELF'], '/') != 'profile.php' && $_GET['mode'] != 'view' ) )
{
      $n = "\n";

      echo '<HTML>'.$n
         .'<HEAD>'.$n
        .'<META HTTP-EQUIV="refresh" content="0;URL='.append_sid('login.'.$phpEx).'">'.$n
         .'</HEAD>'.$n
         .'</HTML>'.$n;

      exit;
}

Verfasst: 18.07.2004 10:49
von chodo
Da ist irgendwie der Wurm drinnen. Der Script verfällt in eine Endlos-Schleife, sobald man auf login.php weitergeleitet wird. :-?

Verfasst: 19.07.2004 11:43
von chodo
Kann jemand helfen? :(

Verfasst: 19.07.2004 13:13
von Mungo
Versuch es mal damit:

Code: Alles auswählen

  if ( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
  {
	  $mode = isset($HTTP_GET_VARS['mode']) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
  }
  
  $check_file = basename($HTTP_SERVER_VARS['SCRIPT_FILENAME']);
 
  if ( $check_file != 'login.php' && $check_file != 'profile.php' && ($mode == 'register' || 'sendpassword') && ($check_file) != '' )
  { 
	  redirect(append_sid("login.$phpEx?redirect=" . basename($HTTP_SERVER_VARS['REQUEST_URI']), true));
  }
Einfach nach

Code: Alles auswählen

	$u_login_logout = 'login.'.$phpEx;
	$l_login_logout = $lang['Login'];
einfügen.

Der User wird nicht zur login.php weitergeleitet, wenn er sich einloggen, oder registrieren will. Außerdem wird auch nicht bei Informationen bzw. Mitteilungen oder bei der Passworterinnerung zur login.php weitergeleitet.
Keine Garantie, dass alle Seiten erwischt werden und ob es funktioniert ;-)

Verfasst: 19.07.2004 19:10
von chodo
Danke, es funktioniert. :grin: