Gäste von Index verbannen

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
ArnoNyhm123
Mitglied
Beiträge: 26
Registriert: 26.05.2007 20:34

Gäste von Index verbannen

Beitrag von ArnoNyhm123 »

Hallo Leute,

da ich nicht genau wusste, wohin mit diesem Posting, habe ich es mal in den Smalltalk gesetzt. Sollte es hier falsch sein, bitte ich um Entschuldigung und darum, es bitte an den rechten Platz zu verschieben.

So, nun zu meiner Frage / Problemstellung:

1. User betritt die Index-Datei

2. zu Beginn der Index-Datei soll irgendwie der Status des Users geprüft werden.

2.1. der User ist eingelogt mit Status "registriert" oder höher
2.1.1. User darf Forum wie gewohnt sehen und nutzen

2.2. der User ist nicht eingelogt bzw. hat den Status "Gast".
2.2.1. in diesem Fall soll der Gast, noch bevor er einen Blick auf die Index werfen kann, per Weiterleitung auf eine andere Page (eine Page, auf der nur ein LogIn-Feld ist) umgeleitet werden.

Meine Frage ist nun: Wie könnte ich solch eine Statusabfrage mit entsprechender Umleitung realisieren?

Bin für jeden Tipp dankbar, da ich Null Plan davon habe.
Gruß,
Arno Nyhm 123
(phpbb-Neuling)
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

Soll das ganze nur für die Index-Seite sein, oder für alle Seiten deines Forums?

Das ganze ist jedenfalls ganz leicht zu realisieren, man muss nur jeden auf die Loginseite weiterleiten :wink:
Bitte mache vorher ein Backup aller Dateien deines Forums!
Dafür musst du in jede Datei, die ein Gast nicht sehen soll, nach diesem Teil:

Code: Alles auswählen

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
folgendes einfügen:

Code: Alles auswählen

// Ist der Benutzer eingeloggt?
if(!$userdata['session_logged_in'])
{
	redirect(append_sid('login.'.$phpEx.'?redirect='.basename($_SERVER['PHP_SELF']).'&'.$_SERVER['QUERY_STRING'], true));
}

MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
ArnoNyhm123
Mitglied
Beiträge: 26
Registriert: 26.05.2007 20:34

Beitrag von ArnoNyhm123 »

killerbees19 hat geschrieben:Soll das ganze nur für die Index-Seite sein, oder für alle Seiten deines Forums?
Eigentlich für alle. Reicht es dann nicht, es nur in die Index zu setzen?

killerbees19 hat geschrieben:Das ganze ist jedenfalls ganz leicht zu realisieren, man muss nur jeden auf die Loginseite weiterleiten :wink:
Bitte mache vorher ein Backup aller Dateien deines Forums!
Dafür musst du in jede Datei, die ein Gast nicht sehen soll, nach diesem Teil:

Code: Alles auswählen

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
folgendes einfügen:

Code: Alles auswählen

// Ist der Benutzer eingeloggt?
if(!$userdata['session_logged_in'])
{
	redirect(append_sid('login.'.$phpEx.'?redirect='.basename($_SERVER['PHP_SELF']).'&'.$_SERVER['QUERY_STRING'], true));
}

MfG Christian
Wo definiere ich denn die URL der Page, auf die er dann weiter geleitet werden soll? Also die, die nur das LogIn haben soll?
Gruß,
Arno Nyhm 123
(phpbb-Neuling)
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

Jeder könnte aber trotzdem die Suche, Forenthemen usw. aufrufen. Du müsstest den Code also in alle Seiten schreiben, die Gäste nicht sehen sollen.

Die Seite auf die Weitergeleitet werden soll, wird hier definiert:

Code: Alles auswählen

'login.'.$phpEx.'?redirect='.basename($_SERVER['PHP_SELF']).'&'.$_SERVER['QUERY_STRING']
Die Login-Seite, und falls sich dann jemand einloggt, kommt er wieder auf die Seite zurück, die er eigentlich sehen wollte :wink:


MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
Asmodiel
Mitglied
Beiträge: 568
Registriert: 31.03.2006 14:16
Wohnort: Kassel
Kontaktdaten:

Beitrag von Asmodiel »

wenn dein ganzes forum nicht für gäste sein soll, pack es einfach in die includes/page_header.php und schon sind alle (mit header und style ausgestatteten) seiten davon betroffen.
Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.
ArnoNyhm123
Mitglied
Beiträge: 26
Registriert: 26.05.2007 20:34

Beitrag von ArnoNyhm123 »

Habs mal probiert und habe

Code: Alles auswählen

// Ist der Benutzer eingeloggt? 
if(!$userdata['session_logged_in']) 
{ 
redirect(append_sid('login.'.$phpEx.'?redirect='.basename($_SERVER['PHP_SELF']).'&'.$_SERVER['QUERY_STRING'], true)); 
}
oben in die includes/page_header kopiert.
Aber sobald ich mich auslogge um den Gaststatus zu testen, kommt nur noch "SEITE NICHT GEFUNDEN". :(
Gruß,
Arno Nyhm 123
(phpbb-Neuling)
Benutzeravatar
Asmodiel
Mitglied
Beiträge: 568
Registriert: 31.03.2006 14:16
Wohnort: Kassel
Kontaktdaten:

Beitrag von Asmodiel »

könnte an der relativen angabe der login.php... mach mal aus dem
append_sid('login.'.$phpEx.
ein
append_sid('http://deineseite.de/deinforum/login.'.$phpEx. [...]
Schönen gruß, Asmodiel
Linus Thorvals hat geschrieben:Intelligence is the ability to avoid doing work, yet getting the work done.
ArnoNyhm123
Mitglied
Beiträge: 26
Registriert: 26.05.2007 20:34

Beitrag von ArnoNyhm123 »

Irgendwie will das nicht funktionieren.

Habe es wie folgt eingebaut in die includes/page_header.php

Code: Alles auswählen

<?php
/***************************************************************************
 *                              page_header.php
 *                            -------------------
 *   begin                : Saturday, Feb 13, 2001
 *   copyright            : (C) 2001 The phpBB Group
 *   email                : support@phpbb.com
 *
 *   $Id: page_header.php,v 1.106.2.25 2005/10/30 15:17:14 acydburn Exp $
 *
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

// Ist der Benutzer eingeloggt? 
if(!$userdata['session_logged_in']) 
{ 
redirect(append_sid('http://www.ehtac.de/phpbb2/login.'.$phpEx.'?redirect='.basename($_SERVER['PHP_SELF']).'&'.$_SERVER['QUERY_STRING'], true)); 
} 


if ( !defined('IN_PHPBB') )
{
	die("Hacking attempt");
}

define('HEADER_INC', TRUE);

//
// gzip_compression
//
$do_gzip_compress = FALSE;
if ( $board_config['gzip_compress'] )
{
	$phpver = phpversion();

	$useragent = (isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) ? $HTTP_SERVER_VARS['HTTP_USER_AGENT'] : getenv('HTTP_USER_AGENT');

	if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) )
	{
		if ( extension_loaded('zlib') )
		{
			ob_start('ob_gzhandler');
		}
	}
	else if ( $phpver > '4.0' )
	{
		if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') )
		{
			if ( extension_loaded('zlib') )
			{
				$do_gzip_compress = TRUE;
				ob_start();
				ob_implicit_flush(0);

				header('Content-Encoding: gzip');
			}
		}
	}
}


... und so weiter ...
Selbst bei der Index-Datei kommt so ein Fehler 404
Gruß,
Arno Nyhm 123
(phpbb-Neuling)
Benutzeravatar
metty84
Mitglied
Beiträge: 159
Registriert: 08.03.2007 13:13
Wohnort: Marienberg
Kontaktdaten:

Beitrag von metty84 »

ist ja kein wunder so versucht er immer neu zu verbinden zu loginseite selbst wen man schon auf der loginseite ist das führt unweigerlich zu nem timeout!

entweder du bindest das in jeder datei einzeln ein oder du machst dem script noch klar das ews bei der login.php nicht neuverbinden soll.

z.b. so
in der login.php vor

Code: Alles auswählen

include($phpbb_root_path . 'includes/page_header.'.$phpEx);
das einfügen

Code: Alles auswählen

define('NO_REDIRECT', true);
in der pageheader.php

Code: Alles auswählen

// Ist der Benutzer eingeloggt? 
if(!$userdata['session_logged_in']) 
{ 
redirect(append_sid('http://www.ehtac.de/phpbb2/login.'.$phpEx.'?redirect='.basename($_SERVER['PHP_SELF']).'&'.$_SERVER['QUERY_STRING'], true)); 
} 
ersetzen mit

Code: Alles auswählen

// Ist der Benutzer eingeloggt? 
if(!$userdata['session_logged_in'] && !(defined('NO_REDIRECT')) ) 
{ 
redirect(append_sid('http://www.ehtac.de/phpbb2/login.'.$phpEx.'?redirect='.basename($_SERVER['PHP_SELF']).'&'.$_SERVER['QUERY_STRING'], true)); 
} 
damit !!!könnte!!! es funktionieren wen nicht irgend ne andere dei da probleme macht was ich nicht weis weil ichs nicht ausprobiert habe.

mfg metty
Nichts auf der welt ist so gerecht verteilt wie der Verstand.Denn jederman ist überzeugt das er genug davon habe.
ArnoNyhm123
Mitglied
Beiträge: 26
Registriert: 26.05.2007 20:34

Beitrag von ArnoNyhm123 »

das gleiche Ergebnis ... Fehler 404 :(

Edit:
ohne den absoluten Pfad scheint es so zu klappen. :)

Also mit:

Code: Alles auswählen

redirect(append_sid('login.'.$phpEx.'?redirect='.basename($_SERVER['PHP_SELF']).'&'.$_SERVER['QUERY_STRING'], true)); 
Werde das mal so drin lassen und testen.
Aber auf den ersten Blick scheints zu klappen.

Ich laß dir in den nächsten Tagen auf jeden Fall Feedback da. DANKE schon mal!
Gruß,
Arno Nyhm 123
(phpbb-Neuling)
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“