Seite 1 von 2

Fragen zu einem eigenen Loginhistorymod

Verfasst: 03.04.2009 20:11
von Ninos
sers,
ich verwende die boardversion phpbb 3.04 und hätte da paar Fragen, die ich gerne geklärt hätte^^

1. ich will ein Loginhistoryskript basteln, dass er zum Biespiel die Userid und Username gleich nach dem Login in der Datenbank speichert.
Das mit dem speichern ist kein Problem, habe aber in der Datei ucp.php nach den Zeilen

Code: Alles auswählen

    
    case 'login':
        if ($user->data['is_registered'])
        {
            redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
        }
 
paar Befehle hinzugefügt.
Am Anfang des Skriptes steht noch das dran:

Code: Alles auswählen

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('ucp');
$user->setup('staemme');
$userid=$user->data['user_id'];
$username=$user->data['username'];
 
Und in der DB will ich §userid und §username speichern.
Das Problem aber ist, dass er die als Anomymous und 1, also die Gastwerte speichert.
Was kann ich tun?
Hab auch schon versucht die Sessonabfrage kurz vor dem Eintragen der Daten in die Datenbank einzubauen, brachte aber leider auch nichts :(
Könnte mir diesbezüglich vielleicht jemand helfen?

2.
Ich möchte dieses Skript gerne auch ins Adminbereich einbauen, wüsste vielleicht jemand, wie das geht, wenn ja, könnte es mir vielleicht jemand erklären?
Habe es schon versucht, indem ich in adm/style/ eine Datei reingetan hab, includes/acp auch eine und in includes/acp/infos auch eine, konnte aber im Adminbereich dann diese Datei ned auswählen, wenn ich dann ein neues Mod ins Adminbereich da einbauen wollte...

3.
ich will, dass eine Datei nur ausgeführt werden kann, wenn der User ein Admin ist, habe einfach diese paar Zeilen vor einem Skript hinzugefügt, aber nachdem das Skript ausgeführt wird, werde ich einfach so ausgeloggt, weis vielleicht diesbezüglich jemand die Lösung?
Hier die Zeilen:

Code: Alles auswählen

//Definition
define('IN_PHPBB', true);
define('ADMIN_START', true);
define('NEED_SID', true);


// Include files
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'common.' . $phpEx);
require($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
require($phpbb_root_path . 'includes/functions_module.' . $phpEx);


// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('acp/common');
$administrator=$user->data['session_admin'];


//Admincheck
if ($administrator == 0)
    {
    echo "Sie sind nicht berechtigt auf diese Datei zuzugreifen.";
    exit;
    }
else if ($administrator == 1)
    {
    hier dann mein Hauptskript
    }
 

Wäre echt super, wenn mir jemand helfen könnte :)

lg. und danke schonmals,
Ninos

Re: hätte gerne paar Fragen geklärt :)

Verfasst: 04.04.2009 11:20
von test_nick
Ninos hat geschrieben:sers,
ich verwende die boardversion phpbb 3.04 und hätte da paar Fragen, die ich gerne geklärt hätte^^

1. ich will ein Loginhistoryskript basteln, dass er zum Biespiel die Userid und Username gleich nach dem Login in der Datenbank speichert.
Das mit dem speichern ist kein Problem, habe aber in der Datei ucp.php nach den Zeilen

Code: Alles auswählen

    
    case 'login':
        if ($user->data['is_registered'])
        {
            redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
        }
  
paar Befehle hinzugefügt.
Am Anfang des Skriptes steht noch das dran:

Code: Alles auswählen

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('ucp');
$user->setup('staemme');
$userid=$user->data['user_id'];
$username=$user->data['username'];
  
Und in der DB will ich §userid und §username speichern.
Das Problem aber ist, dass er die als Anomymous und 1, also die Gastwerte speichert.
Was kann ich tun?
Hab auch schon versucht die Sessonabfrage kurz vor dem Eintragen der Daten in die Datenbank einzubauen, brachte aber leider auch nichts :(
Könnte mir diesbezüglich vielleicht jemand helfen?

2.
Ich möchte dieses Skript gerne auch ins Adminbereich einbauen, wüsste vielleicht jemand, wie das geht, wenn ja, könnte es mir vielleicht jemand erklären?
Habe es schon versucht, indem ich in adm/style/ eine Datei reingetan hab, includes/acp auch eine und in includes/acp/infos auch eine, konnte aber im Adminbereich dann diese Datei ned auswählen, wenn ich dann ein neues Mod ins Adminbereich da einbauen wollte...

3.
ich will, dass eine Datei nur ausgeführt werden kann, wenn der User ein Admin ist, habe einfach diese paar Zeilen vor einem Skript hinzugefügt, aber nachdem das Skript ausgeführt wird, werde ich einfach so ausgeloggt, weis vielleicht diesbezüglich jemand die Lösung?
Hier die Zeilen:

Code: Alles auswählen

//Definition
define('IN_PHPBB', true);
define('ADMIN_START', true);
define('NEED_SID', true);


// Include files
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'common.' . $phpEx);
require($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
require($phpbb_root_path . 'includes/functions_module.' . $phpEx);


// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('acp/common');
$administrator=$user->data['session_admin'];


//Admincheck
if ($administrator == 0)
    {
    echo "Sie sind nicht berechtigt auf diese Datei zuzugreifen.";
    exit;
    }
else if ($administrator == 1)
    {
    hier dann mein Hauptskript
    }
  

Wäre echt super, wenn mir jemand helfen könnte :)

lg. und danke schonmals,
Ninos
Meinst du dies, Code dafür:

Code: Alles auswählen

[quote="Ninos"]sers,
ich verwende die boardversion phpbb 3.04 und hätte da paar Fragen, die ich gerne geklärt hätte^^

1. ich will ein Loginhistoryskript basteln, dass er zum Biespiel die Userid und Username gleich nach dem Login in der Datenbank speichert.
Das mit dem speichern ist kein Problem, habe aber in der Datei ucp.php nach den Zeilen
[code=PHP]	
	case 'login':
		if ($user->data['is_registered'])
		{
			redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
		}
paar Befehle hinzugefügt.
Am Anfang des Skriptes steht noch das dran:

Code: Alles auswählen

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('ucp');
$user->setup('staemme');
$userid=$user->data['user_id'];
$username=$user->data['username'];
Und in der DB will ich §userid und §username speichern.
Das Problem aber ist, dass er die als Anomymous und 1, also die Gastwerte speichert.
Was kann ich tun?
Hab auch schon versucht die Sessonabfrage kurz vor dem Eintragen der Daten in die Datenbank einzubauen, brachte aber leider auch nichts :(
Könnte mir diesbezüglich vielleicht jemand helfen?

2.
Ich möchte dieses Skript gerne auch ins Adminbereich einbauen, wüsste vielleicht jemand, wie das geht, wenn ja, könnte es mir vielleicht jemand erklären?
Habe es schon versucht, indem ich in adm/style/ eine Datei reingetan hab, includes/acp auch eine und in includes/acp/infos auch eine, konnte aber im Adminbereich dann diese Datei ned auswählen, wenn ich dann ein neues Mod ins Adminbereich da einbauen wollte...

3.
ich will, dass eine Datei nur ausgeführt werden kann, wenn der User ein Admin ist, habe einfach diese paar Zeilen vor einem Skript hinzugefügt, aber nachdem das Skript ausgeführt wird, werde ich einfach so ausgeloggt, weis vielleicht diesbezüglich jemand die Lösung?
Hier die Zeilen:

Code: Alles auswählen

//Definition
define('IN_PHPBB', true);
define('ADMIN_START', true);
define('NEED_SID', true);


// Include files
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'common.' . $phpEx);
require($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
require($phpbb_root_path . 'includes/functions_module.' . $phpEx);


// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('acp/common');
$administrator=$user->data['session_admin'];


//Admincheck
if ($administrator == 0)
	{
	echo "Sie sind nicht berechtigt auf diese Datei zuzugreifen.";
	exit;
	}
else if ($administrator == 1)
	{
	hier dann mein Hauptskript
	}

Wäre echt super, wenn mir jemand helfen könnte :)

lg. und danke schonmals,
Ninos[/quote][/code]

mfG:

test_nick

Re: hätte gerne paar Fragen geklärt :)

Verfasst: 04.04.2009 14:07
von Ninos
sry, hab ausversehen php statt code als BB-Code verwendet, da ich es von nem anderen Forum so gewohnt bin^^
Hab meinen Beitrag geändert und hoffe jetzt auf bissle Hilfe :)

lg. und danke schonmals,
Ninos

Re: hätte gerne paar Fragen geklärt :)

Verfasst: 04.04.2009 17:31
von gn#36
Muss ich jetzt verstehen warum test_nick den Beitrag gleich zwei mal identisch in seinem Beitrag stehen hat?

In jedem Fall: Es gibt eine Vorlage für ACP Module: http://wiki.phpbb.com/Creating_modules

Ob ein User Admin ist kannst du auch testen mit $auth->acl_get('a_'), das ist allerdings grundsätzlich immer true wenn der User Admin ist, selbst wenn er seine Anmeldung für das ACP nicht bestätigt hat. Das würdest du mit der Einbettung in ein Modul für das ACP aber erledigen.

Re: hätte gerne paar Fragen geklärt :)

Verfasst: 04.04.2009 18:04
von Ninos
k, hab jetzt
die vorherige $administrator variable durch $administrator=$auth->acl_get('a_'); geändert.
Leider bekomme ich immernoch die Meldung, dann ich nicht berechtigt bin, diese Datei zu verwenden, obwohl ich in der if-anweisung 0,"0" und false, oder bei der else if-anweisung 1,"1" und true verwendet hab.
wieso klappts immernoch ned, weisch des? :(
Aber danke shconmals für den Ansatz ;)

Re: hätte gerne paar Fragen geklärt :)

Verfasst: 04.04.2009 18:43
von Mahony
Hallo
Dein Code sollte etwas so aussehen

Code: Alles auswählen

    // Benötigte Dateien und Variablen von phpBB 
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);


// Session auslesen und Benutzer-Informationen laden
$user->session_begin();  // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup();          // Sprachvariablen laden
if ($user->data['user_id'] == ANONYMOUS)
{
    login_box();
}

if ($auth->acl_get('a_') || $auth->acl_getf_global('m_'))
{
}

else
    {
    trigger_error('Sie sind nicht berechtigt, diese Seite aufzurufen!');
    die;
    } 
Grüße: Mahony

Re: hätte gerne paar Fragen geklärt :)

Verfasst: 04.04.2009 19:18
von Ninos
super, es klappt.
Jetzt müsste mir nur noch jemand Frage 1 beantworten, dann wäre ich glücklich^^

Super wäre es noch, wenn mir vielleicht jemand helfen könnte, den Mod ins Adminbereich einzubauen, weil ich damit iwii Probs hab und ned weis, an was das liegt :(

Aber schonmal vielen Dank :)

lg. Ninos

Re: hätte gerne paar Fragen geklärt :)

Verfasst: 05.04.2009 10:05
von nickvergessen

Code: Alles auswählen

$user->setup('ucp');
$user->setup('staemme');
geht übrigens nicht.

Code: Alles auswählen

$user->setup('ucp');
$user->add_lang('staemme');
Zu dem Code von Mahony:

Code: Alles auswählen

    trigger_error('Sie sind nicht berechtigt, diese Seite aufzurufen!');
    die;
Nach trigger_error ist Ende, das die; also überflüssig

Re: hätte gerne paar Fragen geklärt :)

Verfasst: 05.04.2009 10:41
von Mahony
Hallo
nickvergessen hat geschrieben:Nach trigger_error ist Ende, das die; also überflüssig
Ja, das ist richtig. :oops:
Man könnte übrigens anstelle von

Code: Alles auswählen

{
    trigger_error('Sie sind nicht berechtigt, diese Seite aufzurufen!');
}
auch

Code: Alles auswählen

{
    trigger_error('NOT_AUTHORIZED');
}
verwenden


Grüße: Mahony

Re: hätte gerne paar Fragen geklärt :)

Verfasst: 05.04.2009 16:33
von Ninos
nickvergessen hat geschrieben:

Code: Alles auswählen

$user->setup('ucp');
$user->setup('staemme');
geht übrigens nicht.

Code: Alles auswählen

$user->setup('ucp');
$user->add_lang('staemme');
Zu dem Code von Mahony:

Code: Alles auswählen

    trigger_error('Sie sind nicht berechtigt, diese Seite aufzurufen!');
    die;
Nach trigger_error ist Ende, das die; also überflüssig
Die Variablen stimmen schon, aber der aktualisiert ned die Sesson-id.
Oder wie kann ich gleich nach dem Login die Sesson aktualisieren lassen, damit wie Variablen wieder gehen?
Weil beim Logout mach ich das genauso, also ein DB Eintrag und die Sessonabfrage, und da nimmt er die richtige Sesson...
Vielleicht hab ich ja den DB Eintrag ect. an der falschen Stelle platziert, kann das sein? :(

lg. Ninos