Hi,
wnn man Ahnung von PHP hat, lässt sich soetwas schaffen, es hängt vor allem davon ab, wie ds Forum und der Chat jeweils aufgebaut sind. In diesem Fall greifen beide auf eine MySQL-Datenbank zu, daher lies sich die Verknüpfung einrichten.
Wenn Du keine Ahnung von PHP hast, dann - ich muss es leider so offen sagen - kannst Du das Thema leider vergessen. Weil man muss dafür sehr tief in den Programmiercode eingreifen. Wobei es theoretisch relativ einfach ist:
Nur User des Forums können sich im Chat anmelden und es dürfen noch keine User im Chat registriert sein. Dann bin ich folgendermassen vorgegangen:
1. Wenn sich ein User im Chat registrieren will, wird abgefragt, ob der
Username überhaupt vorhanden ist.
- Wenn ja: Schritt 2
- Wenn nein: Abbruch
2. Ist die Registrierung des Users im Forum schon abgeschlossen
- Wenn ja: Schritt 3
- Wenn nein: Abbruch
3. Wurde der User im Forum verbannt
- Wenn ja: Abbruch
- Wenn nein: Schritt 4
4. Stimmt das Passwort mit dem hinterlegten Passwort des Users im Forum überein
- Wenn ja: Anmeldung in Ordnung
- Wenn nein: Abbruch
Das ganze wird in der
register.php3 realisiert. Nach
Code: Alles auswählen
$DbLink->query("SELECT count(*) FROM ".C_REG_TBL." WHERE username='$U'");
list($rows) = $DbLink->next_record();
$DbLink->clean_results();
if ($rows != 0)
{
$Error = L_ERR_USR_9;
}
else
{
$Latin1 = ($Charset == "iso-8859-1");
if (!isset($GENDER)) $GENDER = "";
$showemail = (isset($SHOWEMAIL) && $SHOWEMAIL)? 1:0;
include("./lib/get_IP.lib.php3"); // Set the $IP var
if (C_EMAIL_PASWD) // Define the password
{
include("./lib/mail_validation.lib.php3");
$PASSWORD = gen_password(C_EMAIL_PASWD);
};
$PWD_Hash = md5(stripslashes($PASSWORD));
habe ich folgenden Part ergänzt:
Code: Alles auswählen
// Thies Modifikation
$DbLink->query("SELECT user_id, user_password FROM phpbb_users WHERE (username='$U' AND user_active ='1') LIMIT 1");
$User_found = ($DbLink->num_rows() != 0);
if ($User_found)
{ list($board_user_id, $board_pw ) = $DbLink->next_record(); }
else
{ $Error = L_ERR_USR_24; }
$DbLink->clean_results();
if ($User_found)
{
$DbLink->query("SELECT ban_id FROM phpbb_banlist WHERE ban_userid='$board_user_id' LIMIT 1");
$User_board_banned = ($DbLink->num_rows() != 0);
if ($User_board_banned)
{ $Error = L_ERR_USR_23; }
else
{
if ($PWD_Hash != $board_pw)
{ $Error = L_ERR_USR_22; }
}
$DbLink->clean_results();
}
// Thies Modifikation
Ausserdem musst Du in der folgende
localized.chat.php3 die Zeilen ergänzen:
Code: Alles auswählen
define("L_ERR_USR_21", "Unter diesem Usernamen wurde kein Eintrag in der Datenbank des Forums gefunden!");
define("L_ERR_USR_22", "Das Passwort stimmt nicht mit dem Passwort im Forum überein!");
define("L_ERR_USR_23", "Du wurdest im Forum gebannt und kannst Dich somit auch nicht im Chat registrieren oder einmelden.");
define("L_ERR_USR_24", "Unter dem Usernamen wurde in Forum kein aktiver Eintrag gefunden!");
bzw. in der englischen Version
Code: Alles auswählen
define("L_ERR_USR_21", "Your username is not registrated in the board!");
define("L_ERR_USR_22", "Your password is not the same as in the board!");
define("L_ERR_USR_23", "You have been banished from the board. You can not register or login into the chat!");
define("L_ERR_USR_24", "There is no active useraccount in the board!");
Ich bin mir aber nicht sicher, ob ich noch weitere Änerungen am Code machen musste, da ich noch einiges mehr geändert habe und ich mir nicht überall Hinweise eingetragen habe.
Frank-Andre
Webmaster | Admin