Seite 1 von 2

Externes Login MOD

Verfasst: 29.07.2009 21:36
von Daniel0108
Ich bin gerade dabei einen Mod für ein externes Login zu basteln...
Ich habe jetzt gerade diesen Code:

Code: Alles auswählen

<?php
session_start();
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../Forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'common.' . $phpEx);
$session = session_id();
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$connection = mysql_connect('localhost','user,'geheim') or die("Keine Verbindung zum Server."); 
mysql_select_db('database') or die("Keine Verbindung zur Datenbank."); 

function login ($user, $pass) {

	$autologin = false;
	$viewonline = 1;
	$username = $user;
	$password = $pass;
	$username     = request_var('username', '', true);
	$password     = request_var('password', '', true);
	$autologin    = (!empty($_POST['autologin'])) ? true : false;
	$viewonline = (!empty($_POST['viewonline'])) ? 0 : 1;
	if (isset($username) && isset($password))
	{
	        $auth->login($username, $password, $autologin, $viewonline);
	}
 	else {
	echo 'Benutzername oder Passwort falsch!';
	}
}
?>
Wenn ich durch nun die funktion durch ein Formular ausgeben lasse, kommt dieser Fehler:

Code: Alles auswählen

Fatal error: Call to a member function on a non-object
Ich weiß es liegt daran das die funktion $auth nicht verfügbar ist. aber wie greife ich sonst auf das Forum zu?
PS.: Das Forum liegt hier "Server/Forum" und das Script hier "Server/Mods/".

Hoffentlich könnt ihr mir helfen.
Ich weiß echt nicht weiter, da ich mich nicht so gut mit phpbb-Modding auskenne und das eigentlich mein erster Mod ist.
LG
Daniel0108

Re: Externes Login MOD

Verfasst: 29.07.2009 22:00
von HJW

Re: Externes Login MOD

Verfasst: 30.07.2009 09:31
von Daniel0108
So ein ähnliches Script hab ich doch schon...
Trotzdem danke aber ich brauche ja hilfe bei meinem script...

übrigens, es liegt daran das er die common.php irgendwie nicht richtig einliest. aber das erste

Code: Alles auswählen

$auth->acl($user->data);
geht, nur dann das

Code: Alles auswählen

$auth->login($username, $password, $autologin, $viewonline);
gibt einen Fehler aus. es könnte daran liegen das er das login nicht findet oder so :-?

Re: Externes Login MOD

Verfasst: 30.07.2009 18:05
von Metzle
Hallo,

spiel doch mal hiermit

Code: Alles auswählen

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../Forum/';
ein wenig rum.

Ändere doch vielleicht mal um in

Code: Alles auswählen

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './Forum/';
Wie su selbst auch schon gesagt hast, glaube ich, dass die common.php nicht korrekt eingebunden bzw. gefunden wird.

Re: Externes Login MOD

Verfasst: 30.07.2009 19:13
von Daniel0108
Ja hab ich schon längst probiert.
Deine Idee mit ./Forum/ hab ich dabei auch schon probiert aber bei einer Änderung kommt immer:

Code: Alles auswählen

Fatal error: main() [function.require]: Failed opening required './Forum/common.php' (include_path='./:/usr/local/lib/php')
Heißt das es nicht eingebunden werden konnte.

Also ich habe echt keine Ahnung mehr was ich sonst machen könnte. vielleicht irgendwas mit dem $auth, das komische ist ja, das

Code: Alles auswählen

$auth->acl($user->data);
funktioniert, aber

Code: Alles auswählen

$auth->login($username, $password, $autologin, $viewonline);
nicht. Ich denke mal das es was mit dem $auth->login zu tun hat.
Die Funktion umbennen, da $auth->login() den gleichen Namen hat, hat auch nichts gebracht.
PS.: Vielleicht kann die common.php, die auth.php nicht richtig einbinden(da nur die Funktion der auth.php nicht aufgerufen werden kann).
Edit: Außer bei ./../Forum/ das gibt wieder:

Code: Alles auswählen

Fatal error: Call to a member function on a non-object
.
lg
Daniel

Re: Externes Login MOD

Verfasst: 30.07.2009 20:39
von Metzle
Hallo,

und wie ist es, wenn du mal spasseshalber und einfach ins Blaue geschossen die auth.php noch zusätzlich einbindest?

Code: Alles auswählen

require($phpbb_root_path . 'includes/auth.' . $phpEx);
Ne andere Möglichkeit, ich weiß ja nicht, ob das von dir aus gehen würde, das Skript einfach im Forenverzeichnis laufen zu lassen?

Re: Externes Login MOD

Verfasst: 31.07.2009 08:21
von Daniel0108
Metzle hat geschrieben:Hallo,

und wie ist es, wenn du mal spasseshalber und einfach ins Blaue geschossen die auth.php noch zusätzlich einbindest?

Code: Alles auswählen

require($phpbb_root_path . 'includes/auth.' . $phpEx);
Ne andere Möglichkeit, ich weiß ja nicht, ob das von dir aus gehen würde, das Skript einfach im Forenverzeichnis laufen zu lassen?
ja das mit dem Forenverzeichnis hab ich mir auch schon gedacht. Nur leider geht das nicht, da die scripts da drin sind und ich das ganze durch eine include.php aufrufen lasse(die Funktionen), wenn ich nun die login.php verschiebe, muss ich auch die include.php verschieben und dann funktionieren die anderen scripts nicht, bzw wenn ich was ändere muss ich dies immer doppelt machen. FAZIT: Es muss in dem Ordner sein...
werds mal mit auth requiren probieren ;)
EDIT: Ergebnis:

Code: Alles auswählen

 Fatal error: Cannot redeclare class auth in 
Wenn ich auth include.

Re: Externes Login MOD

Verfasst: 31.07.2009 17:52
von Metzle
Hallo,

eine Möglichkeit habe ich noch, dann bin ich ratlos ;)

Code: Alles auswählen

require once($phpbb_root_path . 'includes/auth.' . $phpEx);
Wenn das nicht klappt, dann bin ich quasi erst mal raus hier :)

Re: Externes Login MOD

Verfasst: 31.07.2009 18:04
von Boecki91
require_once ;)

Aber der meckert ja darüber das sie nicht umdeklariert werden kann, heist sie ist schon drin, oder eine andere die genauso heißt.

Das ist jetzt aber nur ein schneller Einwurf, ich weiß nicht woran es genau liegt.

Hast du irgendwelche Zeilen-Nummern angegeben bekommen oder wie kommst du auf die auth?

Re: Externes Login MOD

Verfasst: 31.07.2009 19:15
von Metzle
Boecki91 hat geschrieben:require_once ;)
Danke für die Verbesserung...Aufm Nachtdienst rutscht einem schon mal nen _ durch, wenns schnell gehen muss mim Tippen :)

Korrekt lautet es dann also so:

Code: Alles auswählen

require_once($phpbb_root_path . 'includes/auth.' . $phpEx);
Achso, meintest du mich mit deiner Frage, Boecki? Wenn ja, ich komm drauf, weil der Threadersteller drauf gekommen ist und es sollte nur nen schneller Versuch sein, weil die

Code: Alles auswählen

$auth->login
Zeile immer angemeckert wurde ;)