Se connecter / S'enregistrer
Votre question

affichage des membres phpbb sur l'index de mon site

Tags :
  • Index
  • Programmation
Dernière réponse : dans Programmation
21 Mai 2005 21:24:19

Bonjour

je veux inclure sur la page d'accueil de mon site le nombre de membres connectés gr^ce à la base de données de Phpbb pas seulement sur l'index du forum un peu comme le cms nuked klan qui utilise un forum phpbb d'ailleurs

En fait je voulais surtout savoir si je peux utiliser la même base de donnée pour une section membre sur mon site => de ce fait les utilisateurs du site n'ont pas besoin de s'inscrire deux fois sur le site (une fois sur la section membre et une autre pour les parties protégées du site)

Le but est également de voir rapidement qui est présent sur le site

Quellles sont les tables à utiliser phpbb_users uniquement ou d'autres

D'avance merci

Autres pages sur : affichage membres phpbb index site

22 Mai 2005 07:49:39

bah pour ce qui est d'afficher les membres sur la première page :
S*ELECT username from phpbb_users
22 Mai 2005 11:31:51

J'ai modifié le fichier viewonline et renommé autrement pour pouvoir l'inclure dans la page d'accueil de mon site ce qui donne ca :

Citation :

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_VIEWONLINE);
init_userprefs($userdata);
//
// End session management
//

//
// Output page header and load viewonline template
//
$page_title = $lang['Who_is_Online'];

$template->set_filenames(array(
'body' => 'viewonline_body.tpl')
);

$template->assign_vars(array(
'L_WHOSONLINE' => $lang['Who_is_Online'],
'L_ONLINE_EXPLAIN' => $lang['Online_explain'],
'L_USERNAME' => $lang['Username'],
'L_LAST_UPDATE' => $lang['Last_updated'])
);

//
// Forum info
//
$sql = "SELECT forum_name, forum_id
FROM " . FORUMS_TABLE;
if ( $result = $db->sql_query($sql) )
{
while( $row = $db->sql_fetchrow($result) )
{
$forum_data[$row['forum_id']] = $row['forum_name'];
}
}
else
{
message_die(GENERAL_ERROR, 'Could not obtain user/online forums information', '', __LINE__, __FILE__, $sql);
}

//
// Get auth data
//
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata);

//
// 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);
}

$guest_users = 0;
$registered_users = 0;
$hidden_users = 0;

$reg_counter = 0;
$guest_counter = 0;
$prev_user = 0;
$prev_ip = '';

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;
$registered_users++;
}

$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;
$guest_users++;

$which_counter = 'guest_counter';
$which_row = 'guest_user_row';
}
}

$prev_ip = $row['session_ip'];

if ( $view_online )
{
if ( $row['session_page'] < 1 || !$is_auth_ary[$row['session_page']]['auth_view'] )
{
switch( $row['session_page'] )
{
case PAGE_INDEX:
$location = $lang['Forum_index'];
$location_url = "index.$phpEx";
break;
case PAGE_POSTING:
$location = $lang['Posting_message'];
$location_url = "index.$phpEx";
break;
case PAGE_LOGIN:
$location = $lang['Logging_on'];
$location_url = "index.$phpEx";
break;
case PAGE_SEARCH:
$location = $lang['Searching_forums'];
$location_url = "search.$phpEx";
break;
case PAGE_PROFILE:
$location = $lang['Viewing_profile'];
$location_url = "index.$phpEx";
break;
case PAGE_VIEWONLINE:
$location = $lang['Viewing_online'];
$location_url = "viewonline.$phpEx";
break;
case PAGE_VIEWMEMBERS:
$location = $lang['Viewing_member_list'];
$location_url = "memberlist.$phpEx";
break;
case PAGE_PRIVMSGS:
$location = $lang['Viewing_priv_msgs'];
$location_url = "privmsg.$phpEx";
break;
case PAGE_FAQ:
$location = $lang['Viewing_FAQ'];
$location_url = "faq.$phpEx";
break;
case PAGE_SITE:
$location = $lang['On_the_site'];
$location_url = $adresse_site;
break;
default:
$location = $lang['Forum_index'];
$location_url = "index.$phpEx";
}
}
else
{
$location_url = append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $row['session_page']);
$location = $forum_data[$row['session_page']];
}

$row_color = ( $$which_counter % 2 ) ? $theme['td_color1'] : $theme['td_color2'];
$row_class = ( $$which_counter % 2 ) ? $theme['td_class1'] : $theme['td_class2'];

$template->assign_block_vars("$which_row", array(
'ROW_COLOR' => '#' . $row_color,
'ROW_CLASS' => $row_class,
'USERNAME' => $username,

'U_USER_PROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '=' . $user_id),
'U_FORUM_LOCATION' => append_sid($location_url))
);

$$which_counter++;
}
}

if( $registered_users == 0 )
{
$l_r_user_s = $lang['Reg_users_zero_online'];
}
else if( $registered_users == 1 )
{
$l_r_user_s = $lang['Reg_user_online'];
}
else
{
$l_r_user_s = $lang['Reg_users_online'];
}

if( $hidden_users == 0 )
{
$l_h_user_s = $lang['Hidden_users_zero_online'];
}
else if( $hidden_users == 1 )
{
$l_h_user_s = $lang['Hidden_user_online'];
}
else
{
$l_h_user_s = $lang['Hidden_users_online'];
}

if( $guest_users == 0 )
{
$l_g_user_s = $lang['Guest_users_zero_online'];
}
else if( $guest_users == 1 )
{
$l_g_user_s = $lang['Guest_user_online'];
}
else
{
$l_g_user_s = $lang['Guest_users_online'];
}

$template->assign_vars(array(
'TOTAL_REGISTERED_USERS_ONLINE' => sprintf($l_r_user_s, $registered_users) . sprintf($l_h_user_s, $hidden_users),
'TOTAL_GUEST_USERS_ONLINE' => sprintf($l_g_user_s, $guest_users))
);

if ( $registered_users + $hidden_users == 0 )
{
$template->assign_vars(array(
'L_NO_REGISTERED_USERS_BROWSING' => $lang['No_users_browsing'])
);
}

if ( $guest_users == 0 )
{
$template->assign_vars(array(
'L_NO_GUESTS_BROWSING' => $lang['No_users_browsing'])
);
}

$template->pparse('body');


?>


donc voilà ca fonctionne (je précise que j'ai essayé en local sous easy php) mais j'aimerai virer le texte "Ces données sont basées sur les utilisateurs actifs des cinq dernières minutes" et également les textes "nom d'utilisateur" et "derniere mise à jour". Comment faire??
Pour ceux qui ne voient pas ce que je veux dire voici une copie d'ecran : http://kikiesttoujoursla.free.fr/whosonline.jpg

de plus lorsque je réalise un include sur la page d'accueil j'ai ce message :
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\phpbb\1.php:10) in c:\program files\easyphp1-8\www\phpbb\includes\sessions.php on line 329
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\phpbb\1.php:10) in c:\program files\easyphp1-8\www\phpbb\includes\sessions.php on line 330

J'ai réussi à ne plus faire apparaître ce message en mettant le include dans un tableau.

Mais il ya également un autre problème : J'ai l'impression que les valeurs de "qui est en ligne" s'affiche dans un tableau qui est plus grand que le mien et j'aimerais modifier ce tableau : est-ce possible??

J'espère ne pas être trop exigent et je serais agréablement ravi que quelqu'un puisse m'aider. Vous avez pu vous rendre compte que je suis débutant en php et j'en suis désolé.

Je vous remercie d'avance pour vos réponses
Contenus similaires
22 Mai 2005 11:36:41

je pense que tu te compliques la vie !!
22 Mai 2005 11:40:30

ah oui !!!!!??:-o
comment faire alors??

Merci de m'aider stp ;-)
22 Mai 2005 14:29:41

phpdebutant.org
10 ligne de code sufise
7 Novembre 2005 20:41:50

Si quelqu'un a ce code... Je l'ai pas trouvé.
7 Juillet 2006 15:52:18

Au passage j'ai réussi pour ceux que ça intéresse. Et il ne faut pas du tout 10 lignes de code.
a voir ici : http://touskigliss.free.fr/toutterrain

Ta méthode peut être bonne. Mais tu as une grosses erreur. Dans ceraines lignes de ton code tu as une référence à "viewonline_body.tpl" il faut que tu édites ce fichier dans la racine de ton forum c'est dans les templates. C'est là que tu pourra donné les dimensions et la structure que tu veux à ton tableau. Une fois modifié comme tu le sens tu l'enregistre par exemple sous "viewonline_body2.tpl". Ensuite dans ton code à chaque fois que tu vois "viewonline_body.tpl" tu remplace par "viewonline_body2.tpl" et le tour est joué.
a c 145 L Programmation
7 Juillet 2006 18:05:05

A tout hazard, je vous donne une requète que j'ai faite et qui est sympa:
récupération de tous les membres du forum qui sont dans un certain groupe:
  1. <?
  2. $sql_members = "SELECT u.username FROM users u, user_group ug, groups g WHERE u.user_id = ug.user_id AND ug.group_id = g.group_id AND g.group_name='$group' ORDER BY u.username ASC";
  3. $req_members = mysql_query($sql_members);
  4. while (list($user) = mysql_fetch_row($req_members)) {
  5. $gmember[] = $user;
  6. }
  7. echo "<pre>\n";
  8. print_r($gmember);
  9. echo "</pre>\n";
  10. ?>
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS