Seite 1 von 1

PhpBB Board und Php Mychat verbinden?!

Verfasst: Di 30 Sep, 2003 1:27 pm
von Shady
Hi! ich habe mal ne Frage:

Wie kann man das machen, dass man PhpBB und PhpMychat verbindet, also, dass auch die User in beiden Sachen bei nur einer registrierung den gleichen Account haben, wie auf http://www.mm-world.com ?!

Ps: mein erster beitrag *g*


[shadow=red][stream][highlight=red]Test[/highlight][/stream][/shadow]


Hmm.. ach ja, wofür ist in dem Board der Button "stream" ?!

Verfasst: Di 30 Sep, 2003 2:20 pm
von Thies
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