anpera.net
http://anpera.homeip.net/phpbb3/

phpBB2/3 Foreneinbindung by Alkatar
http://anpera.homeip.net/phpbb3/viewtopic.php?f=43&t=3625
Seite 1 von 3

Autor:  Alkatar91 [ So 06 Mai, 2007 20:36 ]
Betreff des Beitrags:  phpBB2/3 Foreneinbindung by Alkatar

Hallo ihr,
dies hier ist mein erster öffentlicher Hack, also sry schonma, falls der Code nicht ganz optimal ist;)
also
Dies ist ein Mod, mit dem Spieler im LoGD unter Profil sich einen Forumaccount in einem phpBB-Forum einrichten lassen können.
(s. http://anpera.homeip.net/forum/viewtopic.php?t=3617 )

FUNKTIONIERT JETZT MIT phpBB2 UND phpBB3

Einbauschwierigkeit: SEHR leicht^^
Bugs: Bisher keine Bekannten
WICHTIG: Damit das funktioniert, muss der Datenbankbenutzer von LoGD die Rechte auf die Forumsdatenbank haben
Einbauanleitung hier und auch in der Datei forumacc.php:

Öffne forumacc.php

CONFIG bitte anpassen (direkt unter page_header("Forumaccount erstellen");)

Öffne prefs.php
Suche
$this->bbcode_second_pass_code('', 'addnav("Bio", $biolink);')
Füge danach ein
$this->bbcode_second_pass_code('', '//Forumseinbindung by Alkatar
output("`n`n<form action='forumacc.php?op=forumacc' method='POST'>",true);
output("<input type='submit' class='button' value='Forumaccount erstellen'>", true);
output("</form>",true);
addnav("","forumacc.php?op=forumacc");
//Forumseinbindung by Alkatar Ende
')
Ich hoffe es gefällt euch. Feedback jeglicher Art ist immer Willkommen;)
mfg
Alkatar

Dateianhänge:
Dateikommentar: Unterstützt jetzt phpBB2 und phpBB3...Bitte in der Datei wie beschrieben einstellen
forumacc.rar [1.46 KIB]
89-mal heruntergeladen

Autor:  azraeldemon [ So 06 Mai, 2007 21:32 ]
Betreff des Beitrags: 

sql befehl fehlt

ALTER TABLE accounts ADD forumacc TINYINT(4) NOT NULL DEFAULT '0';

da fehlt der nette befehl der das feld in der DB erzeugt damit die abfrage ob schonmal erstellt oder nicht auch geht

und HTTP_GET_VARS würde ich besser zu $_GET machen da register_long_arrays soviel ich schon xmal hier und in anderen php befassenden foren gelesen habe aussterben.
dann

[php]das hier
$session['user']['forumacc']==1;
sollte besser
$session['user']['forumacc']=1;
sein
damit es auf 1 gesetzt wird
und diesen
$sql = "SELECT * FROM $db_name.phpbb_users where username='$user'";

zu machen
$sql = "SELECT * FROM $db_name.phpbb_users where username='$user' AND forumacc<1";
ist auch besser für die abfrage[/php]

und in der anleitung steht

/**Einbauanleitung:**/

besser so /**Einbauanleitung:**

damit der nachfolgende text der anleitung auskommentiert sind.

und es heisst forumaccount und nicht forumaccound.

aber dennoch thx für das script irgendwie hatte ich nicht die idee dazu *schäm*

PS: sollte ich mich irren entschuldige ich mich natürlich

Autor:  Alkatar91 [ So 06 Mai, 2007 21:45 ]
Betreff des Beitrags: 

azraeldemon hat geschrieben:
sql befehl fehlt

ALTER TABLE accounts ADD forumacc TINYINT(4) NOT NULL DEFAULT '0';
da fehlt der nette befehl der das feld in der DB erzeugt damit die abfrage ob schonmal erstellt oder nicht auch geht


xD
den Braucht man garnet, ich hab nur vergessen die eine zeile zu löschen, der überprüft direkt, ob es den namen schon im Forum gibt.

azraeldemon hat geschrieben:
und HTTP_GET_VARS würde ich besser zu $_GET machen da register_long_arrays soviel ich schon xmal hier und in anderen php befassenden foren gelesen habe aussterben.
dann

azraeldemon hat geschrieben:
[php]das hier
$session['user']['forumacc']==1;
sollte besser
$session['user']['forumacc']=1;
sein
damit es auf 1 gesetzt wird
und diesen
$sql = "SELECT * FROM $db_name.phpbb_users where username='$user'";

zu machen
$sql = "SELECT * FROM $db_name.phpbb_users where username='$user' AND forumacc<1";
ist auch besser für die abfrage[/php]


S. oben^^
azraeldemon hat geschrieben:
und in der anleitung steht

/**Einbauanleitung:**/

besser so /**Einbauanleitung:**

damit der nachfolgende text der anleitung auskommentiert sind.

ups :bash: Danke
azraeldemon hat geschrieben:
und es heisst forumaccount und nicht forumaccound.

ups :bash: Danke
azraeldemon hat geschrieben:
aber dennoch thx für das script irgendwie hatte ich nicht die idee dazu *schäm*

Gern geschehen, dafür mach ich das ja;)
azraeldemon hat geschrieben:
PS: sollte ich mich irren entschuldige ich mich natürlich

DANKEEE, brauchst du net;)
mfg
Alkatar91
PS:hab das ma alles geupdatet

Autor:  azraeldemon [ So 06 Mai, 2007 21:47 ]
Betreff des Beitrags: 

so noch eine frage bzw

anmerkung

du hast die tabellen des forums in der DB des spiels oder?

Autor:  Alkatar91 [ So 06 Mai, 2007 21:49 ]
Betreff des Beitrags: 

Nein, hab ich nicht^^
Die Datenbank wird durch das $db_name. gewechselt
damit das funktioniert, muss der Logd-dbbenutzer rechte für die phpBB datenbank haben( habs grad auch nochma oben hingeschrieben)

Autor:  azraeldemon [ So 06 Mai, 2007 21:56 ]
Betreff des Beitrags: 

und durch die dbconnectdaten wird aber zur spieldb connected

und nicht zur db des forums

beispiel

ich habe datenbanken

blabla-spiel <-- dort sucht er sich den namen
blabla-forum <-- dort sollte suchen

kann er aber nicht da er nicht zur datenbank des forums connecten kann

denn es kommt immer diese nette fehler meldung
[php]SELECT * FROM where username='Azrael'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where username='Azrael'' at line 1[/php]

db-name_phpbb_users(egal wie man sie nennt) findet er nicht. Wird er auch nie finden da wie schon gesagt er nicht an die DB des forums kommt

Autor:  Alkatar91 [ So 06 Mai, 2007 22:01 ]
Betreff des Beitrags: 

Ich hab keine ahnung, bei mir funktioniert das einwandfrei mit 2 verschiedenen Datenbanken.
Falls das bei dir nit funzt, müsste ich nochma gucken
mfg
Alkatar91

Autor:  Alkatar91 [ So 06 Mai, 2007 22:07 ]
Betreff des Beitrags: 

Hast du $db_name="" geändert?

Der Benutzer, der in der dbirgendwas.php steht, muss auch die Forumrechte haben

Autor:  Alkatar91 [ So 06 Mai, 2007 22:11 ]
Betreff des Beitrags: 

azraeldemon hat geschrieben:
db-name_phpbb_users(egal wie man sie nennt) findet er nicht. Wird er auch nie finden da wie schon gesagt er nicht an die DB des forums kommt


das muss auch $dbname.phpbb_users heißen

Ich hab mir grad ma den source von dir da angeguckt und festgestellt, das du da mist gebaut hast(sry)
downloade die Datei da oben nochma und tuh die so wie sie ist rein(du musst dann natürlich bei $db_name das richtige einfügen)

Autor:  azraeldemon [ So 06 Mai, 2007 22:24 ]
Betreff des Beitrags: 

das ich evtl schon die ganze zeit am machen bin und meine $db_name ist forum

und phpbb_ habe ich nicht in meiner forumdb

Autor:  Kamui [ So 06 Mai, 2007 23:03 ]
Betreff des Beitrags: 

Hier wäre die Function mysql_eb_query([string db_name],[string sqlbefehl]); besser ;)
Mit dieser Function muss man nicht erst eine Verbindung zu einer Datenbank aufnehmen sondern muss den Datenbanknamen einfach als erstes Argument in die Function schreiben und so erspart man sich die kleinen Schönheitsfehler und mögliche Fehler. Natürlich muss man erst zum Mysqlserver connecten hier mal ein kleines beispiel
[php]
<?php
require_once('dbconnect.php');

$db = @mysql_connect($DB_HOST,$DB_USER,$DB_PASS);

$sql = 'SELECT `name`,`acctid` FROM `accounts` WHERE acctid=1';
mysql_db_query($DB_NAME,$sql);

mysql_close($db);
?>
[/php]

Autor:  Alkatar91 [ Mo 07 Mai, 2007 06:18 ]
Betreff des Beitrags: 

Ich lass das aber vorerst so, vllt änder ich das späater mal, aber Danke für den Tipp

Autor:  -DoM [ Mo 07 Mai, 2007 10:47 ]
Betreff des Beitrags: 

Kamui hat geschrieben:
Hier wäre die Function mysql_eb_query([string db_name],[string sqlbefehl]); besser ;)
Mit dieser Function muss man nicht erst eine Verbindung zu einer Datenbank aufnehmen sondern muss den Datenbanknamen einfach als erstes Argument in die Function schreiben und so erspart man sich die kleinen Schönheitsfehler und mögliche Fehler. Natürlich muss man erst zum Mysqlserver connecten hier mal ein kleines beispiel
[php]
<?php
require_once('dbconnect.php');

$db = @mysql_connect($DB_HOST,$DB_USER,$DB_PASS);

$sql = 'SELECT `name`,`acctid` FROM `accounts` WHERE acctid=1';
mysql_db_query($DB_NAME,$sql);

mysql_close($db);
?>
[/php]


Warum immer so kompliziert????
Seit PHP 4.2 gibt es für mysql_connect() den optionalen Parameter [neue Verbindung]. Nachzulesen hier: http://de.php.net/manual/de/function.mysql-connect.php

Wer noch eine ältere PHP-Version nutzt, kann mit einem kleinen Trick, auch eine neue Verbindung aufbauen. Anstelle von localhost einfach 127.0.0.1 benutzen....

Aber warum einfach wenn es auch kompliziert geht....*fg*

Autor:  Alkatar91 [ Mo 07 Mai, 2007 11:40 ]
Betreff des Beitrags: 

Warum überhaupt sowas?
LoGD verbindet doch automatisch mit dem Mysqlserver und wählt dann die Datenbank vom Logd. das wird aber durch das $db_name. ausgeschaltet und er wählt die datenbank des Forums aus.

Autor:  Kamui [ Mo 07 Mai, 2007 12:48 ]
Betreff des Beitrags: 

@Dom: Eben ;D
Aber sorry ich hab mich nicht großartig mich damit beschäftigt und muss es nötig sein noch einmal neu zu connecten? o.o Ich halte das für nicht so resourceschonend wie mysql_db_query da dort nicht nochmal zum mysqlcilent verbunden wird sondern die aufgebaute Verbindung genutzt wird und der Query einfach in eine andere Datenbank auf dem Mysqlserver injeziert wird oder liebe ich da falsch? o.O

Autor:  Alkatar91 [ Mo 07 Mai, 2007 13:04 ]
Betreff des Beitrags: 

Der Meinung bin ich auch^^

Autor:  Bill Tür [ Di 08 Mai, 2007 08:47 ]
Betreff des Beitrags: 

Man möge mich korrigieren, wenn ich falsch liege, aber hat Doms Lösung nicht den Vorteil, dass es völlig wurscht ist, ob die Forums-DB auf dem selben Server liegt und der selbe Nutzer die Rechte hat?

In meinem Fall z.B. liegen das logD und das Forum auf 2 unterschiedlichen Subdomains, demnach ist der Pfad zur DB unterschiedlich und auch der DB-Nutzer, also ist das Script in seiner Ur-Form für mich nicht verwendbar.

Autor:  Kamui [ Di 08 Mai, 2007 14:08 ]
Betreff des Beitrags: 

Das schon aber in den meisten Fällen ist es so das beide Datenbanken auf dem selben Mysqlcilent liegen also von daher wäre dann meine Lösung die schnellere wenn die Daten aber nicht auf einem gemeinsamen Mysqlcilent liegen wirst du wohl nicht um Dom's Lösung herum kommen

Autor:  Harthas [ Di 08 Mai, 2007 16:02 ]
Betreff des Beitrags: 

Und wie wärs denn mit mysql_select_db?

[php]
<?php
require_once('dbconnect.php');

mysql_select_db($DB_NAME);
$sql = 'SELECT `name`,`acctid` FROM `accounts` WHERE acctid=1';
db_query($sql);
?>
[/php]

Autor:  -DoM [ Di 08 Mai, 2007 16:16 ]
Betreff des Beitrags: 

Kamui hat geschrieben:
Das schon aber in den meisten Fällen ist es so das beide Datenbanken auf dem selben Mysqlcilent liegen also von daher wäre dann meine Lösung die schnellere wenn die Daten aber nicht auf einem gemeinsamen Mysqlcilent liegen wirst du wohl nicht um Dom's Lösung herum kommen


Gehen wir mal von der Masse aus...
Alle grossen Hoster, haben seperate My-SQL Server. Sprich auch nicht den selben My-SQL Benutzer.
Auch werden sehr viele hingehen, die einen Root-Server betreiben, und für LotGD und Forum verschiedene Benutzer eingerichtet haben. Zwecks Sicherheit und Log auswertung.

Aber jedem wie es beliebt...

Seite 1 von 3 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/