PhpBB Board und Php Mychat verbinden?!

Alles rund um PHP und die Datenbanksprache MySQL.

Moderatoren: Thies, Soltano

Antworten
Shady

PhpBB Board und Php Mychat verbinden?!

Beitrag 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" ?!
Benutzeravatar
Thies
Webmaster
Webmaster
Beiträge: 1482
Registriert: Mo 04 Aug, 2003 8:45 pm
Kontaktdaten:

Beitrag 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
if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
Antworten