скрипт за потребители на индекса

SandPrince

Registered
значи интегрирах форума и сайта с обща регистрация и вход.
трябва ми скрипт който на индекса на сайта да ми извежда

Потребители: (брой)
Последно регистриран: (еди кой си)
Онлайн: (брой)
 
Код:
<?php
$db_host = 'localhost'; // Хоста си остава така по подразбиране.
$db_user = 'root'; // User-а на Вашата база данни
$db_password = ''; // Паролата за Вашата база данни
$db_name = ''; // Име на базата данни


mysql_connect($db_host,$db_user,$db_password) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());


// Надолу не е нужно да променяте нищо.
// На мястото на http://yoursite.com напишете пътя до вашият форум
// не променяйте това след http://yoursite.com

$our = mysql_query("SELECT user_id, username FROM phpbb_users ORDER BY user_id DESC LIMIT 1");
while($r=mysql_fetch_array($our)){
echo "<font size=\"2\">Последен регистриран </font>:<b> <a href=\"http://yoursite.com/profile.php?mode=viewprofile&u=".$r['user_id']."\">".$r['username']."</a></b><br>";
}

$our = mysql_query("SELECT count(post_id) as post_total FROM phpbb_posts");

while($r=mysql_fetch_array($our)){
echo "<font size=\"2\">Нашите потребители са написали </font><b>".$r['post_total']."</b> <font size=\"2\">мнения </font><br>";
}


$our = mysql_query("SELECT count(user_id) as user_total FROM phpbb_users");
while($r=mysql_fetch_array($our)){
echo "<font size=\"2\">Имаме </font><b>" .$r['user_total']. "</b> <font size=\"2\">регистрирани потребители</font>";
} 
?>

Пробвай го тва :)
 
благодаря но вече го направих.
интересно но galli ми даде скрипта как става а после докато му благодаря и вече го нямаше мнението му... :shock:
 
SandPrince каза:
благодаря но вече го направих.
интересно но galli ми даде скрипта как става а после докато му благодаря и вече го нямаше мнението му... :shock:
Ммм интересно тук стават странии неща.Мистерий :lol: :D
 
М да изтрих го, защото се сетих, че така вади тези които са онлайн само от регистрираните, а гостите майче не ги брои.
Ти си бил много бръз, аз за 1 минута няма и го изтрих.
 
Така, ето нещо по-сериозно. Прегледах кодът на phpBB 2.х.х и го използвах, за да изкарам броя на потребителите на линия в отделна страница, извън форума.
Става въпрос за Регистрирани + Гости, с възможност да се показват калко са Регистрираните, колко са Скрити и колко са гости.
Ето го кода, записваш(ате) го в някакъв файл, примерно online.php.
Код:
<?php
define('IN_PHPBB', true);
$phpbb_root_path = 'forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
define('SHOW_ONLINE', true);
if (defined('SHOW_ONLINE'))
{
	$user_forum_sql = ( !empty($forum_id) ) ? "AND s.session_page = " . intval($forum_id) : '';
	$sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_ip
		FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s
		WHERE u.user_id = s.session_user_id
			AND s.session_time >= ".( time() - 300 ) . "
			$user_forum_sql
		ORDER BY u.username ASC, s.session_ip ASC";
	if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain user/online information', '', __LINE__, __FILE__, $sql);
	}
//	$userlist_ary = array();
	$userlist_visible = array();
	while( $row = $db->sql_fetchrow($result) )
	{
		if ( $row['session_logged_in'] )
		{
			if ( $row['user_id'] != $prev_user_id )
			{
				if ( $row['user_allow_viewonline'] )
				{
					$logged_visible_online++;
				}
				else
				{
					$logged_hidden_online++;
				}
			}		
		}
		else
		{
			if ( $row['session_ip'] != $prev_session_ip )
			{
				$guests_online++;
			}
		}
		$prev_session_ip = $row['session_ip'];
	}
	$db->sql_freeresult($result);
	if ( empty($online_userlist) )
	{
		$online_userlist = $lang['None'];
	}
	$total_online_users = $logged_visible_online + $logged_hidden_online + $guests_online;
/*	if ( $total_online_users > $board_config['record_online_users'])
	{
		$sql = "UPDATE " . CONFIG_TABLE . "
			SET config_value = '$total_online_users'
			WHERE config_name = 'record_online_users'";
		if ( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not update online user record (nr of users)', '', __LINE__, __FILE__, $sql);
		}
	}*/
	if ( $total_online_users == 0 )
	{
		$l_t_user_s = $lang['Online_users_zero_total_'];
	}
	else if ( $total_online_users == 1 )
	{
		$l_t_user_s = $lang['Online_user_total_'];
	}
	else
	{
		$l_t_user_s = $lang['Online_users_total_'];
	}

/*	if ( $logged_visible_online == 0 )
	{
		$l_r_user_s = $lang['Reg_users_zero_total_'];
	}
	else if ( $logged_visible_online == 1 )
	{
		$l_r_user_s = $lang['Reg_user_total_'];
	}
	else
	{
		$l_r_user_s = $lang['Reg_users_total_'];
	}

	if ( $logged_hidden_online == 0 )
	{
		$l_h_user_s = $lang['Hidden_users_zero_total_'];
	}
	else if ( $logged_hidden_online == 1 )
	{
		$l_h_user_s = $lang['Hidden_user_total_'];
	}
	else
	{
		$l_h_user_s = $lang['Hidden_users_total_'];
	}

	if ( $guests_online == 0 )
	{
		$l_g_user_s = $lang['Guest_users_zero_total_'];
	}
	else if ( $guests_online == 1 )
	{
		$l_g_user_s = $lang['Guest_user_total_'];
	}
	else
	{
		$l_g_user_s = $lang['Guest_users_total_'];
	}*/
	$l_online_users = sprintf($l_t_user_s, $total_online_users);
/*	$l_online_users .= sprintf($l_r_user_s, $logged_visible_online);
	$l_online_users .= sprintf($l_h_user_s, $logged_hidden_online);
	$l_online_users .= sprintf($l_g_user_s, $guests_online);*/
}
$template->assign_vars(array(
	'TOTAL_USERS_ONLINE' => $l_online_users)
);
	$template->set_filenames(array(
		'body' => 'viewonline.tpl')
	);
$template->pparse('body');
?>
<?
$users_count = mysql_query("SELECT COUNT(user_id) FROM ".$table_prefix."users");
$users_count_result = mysql_fetch_array($users_count);
$count = $users_count_result['COUNT(user_id)']-1;
$last_user = mysql_query("SELECT username,user_id FROM ".$table_prefix."users WHERE user_id =(SELECT MAX(user_id) FROM ".$table_prefix."users) ");
$last_user_result = mysql_fetch_array($last_user);
echo "<br>
We have ".$count." registered user<br>
The newest registered user is <a href='$phpbb_root_path/profile.php?mode=viewprofile&u=".$last_user_result['user_id'].">".$last_user_result['username']."</a><br>";
?>
Трябва да промениш(ите) този ред:
Код:
$phpbb_root_path = 'forum/';
При мен форумът се намира в папка forum спрямо online.php.
След това си правиш(ите) един нов файл в папката \forum\templates\Името_на_темплейта с име viewonline.tpl и съдържание:
Код:
{TOTAL_USERS_ONLINE}
След това отваряш(яте) language\вашият_език\lang_main.php и преди този ред:
Код:
//
// That's all, Folks!
добавяш(яте) тези редове:
Код:
$lang['Online_users_zero_total_'] = 'In total there are <b>0</b> users online. ';
$lang['Online_users_total_'] = 'In total there are <b>%d</b> users online. ';
$lang['Online_user_total_'] = 'In total there is <b>%d</b> user online. ';
$lang['Reg_users_zero_total_'] = '0 Registered, ';
$lang['Reg_users_total_'] = '%d Registered, ';
$lang['Reg_user_total_'] = '%d Registered, ';
$lang['Hidden_users_zero_total_'] = '0 Hidden and ';
$lang['Hidden_user_total_'] = '%d Hidden and ';
$lang['Hidden_users_total_'] = '%d Hidden and ';
$lang['Guest_users_zero_total_'] = '0 Guests.';
$lang['Guest_users_total_'] = '%d Guests.';
$lang['Guest_user_total_'] = '%d Guest.';
Това е на английски, ако го слагаш(ате) за друг език, трябва да си преведеш(ете) изразите на съответния език.
Пример:
Код:
$lang['Online_user_total_'] = 'Общо <b>%d</b> потребителя на линия. ';


Така както е в момента, се показва така:
In total there is 1 user online.
We have 1 registered user
The newest registered user is admin
Ако махнеш(ете) /* и */ от скрипта ще се показва така:
In total there is 1 user online. 0 Registered, 0 Hidden and 1 Guest.
We have 1 registered user
The newest registered user is admin

Ако има някакъв пропуск, моля кажете за да го поправя, защото до сега не съм се занимавал с кода на phpBB форум.
След като го тествам може да го пусна като урок, ако вече няма такъв.
 
Galli каза:
М да изтрих го, защото се сетих, че така вади тези които са онлайн само от регистрираните, а гостите майче не ги брои.
Ти си бил много бръз, аз за 1 минута няма и го изтрих.

те гостите не ми трябват :)
 
@Galli

Ако сайта ти ползва "интегрирането ми" твоя код (ако работи)
ще покаже всички които са online и в сайта и във форума.

Имаше една такава тема и bafi беше дал един код май в нея дето работи
но не мога да я намеря.
 
admin изобщо не потърсих за тема, защото мислих че ако има веднага ще му я покаже някой.
Та сега потърсих. Сигурно е това :arrow: http://web-tourist.net/project/bafitu/online.txt
но и при него брои така.
Ето така няма да брои тези, които са извън форума, защото ползва само config.php.

Код:
<?
include "forum/config.php";

mysql_connect("$dbhost","$dbuser","$dbpasswd");
mysql_select_db("$dbname");

$time = time() - 300;
$count = mysql_query("SELECT count(session_id) FROM ".$table_prefix."sessions  WHERE session_time > '".$time."'");
$count_result = mysql_fetch_array($count);

echo "In total there are ".$count_result['count(session_id)']." users online";
?>
Поправих е една грешка (неточност) и сега работи точно. Променя се 300 (за 5 минути назад) на колкото искаш.

SandPrince аз влизам само като пиша мнение, е не само но... в такъв случай съм Гост.

Не нямам такъв интегриран сайт.
 
Galli каза:
admin изобщо не потърсих за тема, защото мислих че ако има веднага ще му я покаже някой.
Та сега потърсих. Сигурно е това :arrow: http://web-tourist.net/project/bafitu/online.txt
но и при него брои така.
Ето така няма да брои тези, които са извън форума, защото ползва само config.php.

Код:
<?
include "forum/config.php";

mysql_connect("$dbhost","$dbuser","$dbpasswd");
mysql_select_db("$dbname");

$count = mysql_query("SELECT count(session_id) FROM ".$table_prefix."sessions");
$count_result = mysql_fetch_array($count);

echo "In total there are ".$count_result['count(session_id)']." users online";
?>

SandPrince аз влизам само като пиша мнение, е не само но... в такъв случай съм Гост.

Не нямам такъв интегриран сайт.

мерси Galli и този скрипт ще го пробвам и ще кажа резултата. иначе и оня от най-първото ти мнение също работеше. демото за сега няма да го показвам (то ми е на сайта за photoshop уроците).........
 

Back
Горе