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
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
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:
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
Zeile immer angemeckert wurde
