[löst] Extrahera användarnamn med hjälp av PHP

Frågor kring MODdar (modifikationer) för phpBB 2.0.x.

Moderatorer: Moderatorgrupp, Supportgrupp

Användarens profilbild
Rixn
Medlem
Medlem
Inlägg: 24
Blev medlem: 2005-06-27 23:08
Svar: 0

[löst] Extrahera användarnamn med hjälp av PHP

Inlägg av Rixn »

Jag är nybörjare i PHP och jag klarar av att hantera enkla MySQL-satser som tex:

Kod: Markera allt

mysql_query("SELECT * FROM Xxxx ORDER BY Zzzz DESC LIMIT 0, 100")
där jag sedan lätt kan hämta uppgifter om användarnamn etc.

Nu vill jag hämta det inloggade användarnamnet från databasen i phpBB och skriva ut det på en sida, men det är lättare sagt än gjort. Det är inte lätt att se uppbyggnaden av phpBBs kod, men jag hoppas att jag ska kunna lära mig. Är det här något jag överhuvudtaget ska försöka mig på?

Vad är det minsta koden jag behöver?

Vilka delar måste vara med - connect to DB förstås och sessioner på något sätt men vad mer?
Senast redigerad av Rixn den 2005-08-07 20:09, redigerad totalt 2 gånger.
-----------------------------------
Lars Eriksson
Informationsdesigner
http://www.DaGame.nu
lars@rixn.nu
-----------------------------------
Användarens profilbild
PazZze
Support
Support
Inlägg: 1028
Blev medlem: 2004-05-10 11:19
Svar: 0

Inlägg av PazZze »

om du tittar i viewonline så hittar du all databaskod till det som gör den lilla rutan längst ner på första sidan med namnet "Vem är Online"

jag försökte hitta de delar som du behöver

denna del letar efter vilka som är online "just nu" (de senaste 5 min) av alla användare:

Kod: Markera allt

//
// Get user list
//
$sql = "SELECT u.user_id, u.username, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_time, s.session_page, s.session_ip
	FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s
	WHERE u.user_id = s.session_user_id
		AND s.session_time >= ".( time() - 300 ) . "
	ORDER BY u.username ASC, s.session_ip ASC";
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not obtain regd user/online information', '', __LINE__, __FILE__, $sql);
}
mer än så lyckades jag inte lista ut för tillfället...

men kan nog rekomendera dig att leta lite i följande filer (fast jag vet inte vilka som används riktigt :P):

/viewonline.php
/templates/*/index_body.tpl

ÄNDRING:

mer letande gav följande...

tror jag hittade något som jag tror skriver ut detta, men är dock mycket osäker på det... (kommer från phpbb_root/viewonline.php)

Kod: Markera allt

while ( $row = $db->sql_fetchrow($result) )
{
	$view_online = false;

	if ( $row['session_logged_in'] ) 
	{
		$user_id = $row['user_id'];

		if ( $user_id != $prev_user )
		{
			$username = $row['username'];

			$style_color = '';
			if ( $row['user_level'] == ADMIN )
			{
				$username = '<b style="color:#' . $theme['fontcolor3'] . '">' . $username . '</b>';
			}
			else if ( $row['user_level'] == MOD )
			{
				$username = '<b style="color:#' . $theme['fontcolor2'] . '">' . $username . '</b>';
			}

			if ( !$row['user_allow_viewonline'] )
			{
				$view_online = ( $userdata['user_level'] == ADMIN ) ? true : false;
				$hidden_users++;

				$username = '<i>' . $username . '</i>';
			}
			else
			{
				$view_online = true;
			}

			$which_counter = 'reg_counter';
			$which_row = 'reg_user_row';
			$prev_user = $user_id;
		}
	}
	else
	{
		if ( $row['session_ip'] != $prev_ip )
		{
			$username = $lang['Guest'];
			$view_online = true;
	
			$which_counter = 'guest_counter';
			$which_row = 'guest_user_row';
		}
	}

	$prev_ip = $row['session_ip'];
hinner inte leta mera måste stänga av, det åskar här :cry:
Joel PazZze Martinsson - phpBB Sverige Support
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6571
Blev medlem: 2004-06-09 09:32
Svar: 1

Inlägg av Holger »

Jag använder mig av AJ Quicks tutorial för att visa användarnamnet eller Gäst på portalsidan:
http://www.gremminger.se/service
Holger Gremminger
Ingen support via PM!
Användarens profilbild
Rixn
Medlem
Medlem
Inlägg: 24
Blev medlem: 2005-06-27 23:08
Svar: 0

Inlägg av Rixn »

Typiskt. Jag hade stött på den sidan tidigare och lagt ett bokmärke för att jag skulle ha den nu, men glömde bort att det var nu jag skulle använda den sidan. Tack för påminnelsen.

Tyvärr så lyckas jag inte få till det ändå. Det strular till sig redan under Userdata Accessing. Jag får följande svar:
Hacking attempt
Fatal error: Call to undefined function: session_pagestart() in h:\home\users\FA03-06-02-06_68qd7vp9mxtkzrguju4x\mypage.com\public_html\forum\_media\header_define.php on line 9
där header_define innehåller det här (endast det, då jag inkluderar den i en annan fil sen):

Kod: Markera allt

<?php
  define('IN_PHPBB', true);

  $site_root_path = 'http://www.mypage.com/';
  $phpbb_root_path2 = '/forum/';
  $phpbb_root_path = $site_root_path . $phpbb_root_path2;
  include($phpbb_root_path . 'extension.inc');
  include($phpbb_root_path . 'common.php');

  $userdata = session_pagestart($user_ip, PAGE_INDEX);
  init_userprefs($userdata);
?>
Det är alltså session_pagestart som strular på något sätt. Vad är det jag missat? Är det något som AJ Quick förutsätter att man ska ha koll på - något självklart som jag missat? Vad kan gå fel egentligen? Jag har ju bara klippt & klistrat samt satt in mina "paths". De är väl korrekt skrivna - annars skulle jag väl inte få det svar jag får?

Hur gjorde du Holger?
Snälla hjälp mig om du kan!

/Rixn
-----------------------------------
Lars Eriksson
Informationsdesigner
http://www.DaGame.nu
lars@rixn.nu
-----------------------------------
Användarens profilbild
Kail
Administratör
Administratör
Inlägg: 2937
Blev medlem: 2003-06-03 14:53
Svar: 0

Inlägg av Kail »

Du har uppenbarligen ändrat ngt du inte borde ändrat. Gör om från början och se om det hjälper.
Att göra det du vill är mkt enkelt men jag är inte hemma nu så jag kan inte ge dig ett svar med kodändringar/tillägg.
Jakob Persson - Grundare av phpBB Sverige - IT-konsult - http://www.jakob-persson.com
The Complete phpBB Template Design Guide (phpBB 2.x): http://archive.jakob-persson.com/articl ... index.html
Användarens profilbild
Rixn
Medlem
Medlem
Inlägg: 24
Blev medlem: 2005-06-27 23:08
Svar: 0

Inlägg av Rixn »

Fick ett tips på IntegraMOD-forumet som löste problemet (men som skapade ett annat).

Jag ändrade i sökvägen till "$phpbb_root_path = '../';" så här:

Kod: Markera allt

<?php
  define('IN_PHPBB', true);

  $phpbb_root_path = '../';
  include($phpbb_root_path . 'extension.inc');
  include($phpbb_root_path . 'common.php');

  $userdata = session_pagestart($user_ip, PAGE_INDEX);
  init_userprefs($userdata);
?>
Då fungerade det med att visa username som var meningen fast när jag loggade ut så fick jag ett "headers already sent"-problem:
Warning: Cannot modify header information - headers already sent by (output started at h:\home\users\FA03-06-02-06_68qd7vp9mxtkzrguju4x\dagame-web.com\public_html\forum\_media\Test01_HelloWorld.php:8 ) in h:\home\users\FA03-06-02-06_68qd7vp9mxtkzrguju4x\dagame-web.com\public_html\forum\includes\functions.php on line 184
Överst i Test01_HelloWorld.php har jag:

Kod: Markera allt

<?php include 'DGW_define.php'; ?>
och den filen innehåller koden enligt ovan.

Då körs väl sessionen först av allt eller störs det hela av att jag IFRAMEar Test01_HelloWorld.php in på en annan sida?

Kod: Markera allt

<IFRAME NAME="TestIframe04" SRC="http://www.mysite.com/forum/_media/Test01_HelloWorld.php" WIDTH="644" HEIGHT="480" TITLE="TestIframe04" BORDER="0" FRAMEBORDER="no">Upgrade your web browser!</IFRAME>
-----------------------------------
Lars Eriksson
Informationsdesigner
http://www.DaGame.nu
lars@rixn.nu
-----------------------------------
Skriv svar

Vilka är online

Användare som besöker denna kategori: 1 och 0 gäst