09/10/2018, 22:49
Ý tưởng nhỏ xíu về vấn đề fake leader group... (IBF)
Em có 1 ý tưởng như sau,khi ta muốn che dấu group Admin thực sự của diễn đàn ( IBF ),ta có thể để hiển thị trùng với member nhưng quyền root admin.
Sau đó tạo 1 group mới với "display" là Admin,từ màu mè,icon cho đến rank và ...trong hiển thị leader.
Hiện tại,em đang bí phần này.
Khi xem danh sách quản trị của 1 forum IBF,ta sẽ có act=leaders.
Đây là code của phần cần chỉnh sửa.
Về ý tưởng,khi 1 người muốn xem ban quản trị của diễn đàn gồm những ai,ai là Admin ==> thường vào act=leaders để tìm kiếm.
Hiện tại,nó đang show ra đúng group Admin thực sự chứ ko phải group Admin fake.
Theo như vốn hiểu biết ít ỏi của em thì nó nằm phần lớn ở đoạn này
Em muốn thay vì nó chuyền tham số để gọi đến ID của Group Admin Root,đoạn code này sẽ bị ép để gọi đến ID của Group Admin Fake ..
Tức là khi vào act=leaders,nó sẽ ko hiển thị ra Admin thực sự của site mà hiển thị ra Admin "ảo" ..Đây có thể là 1 member nào đó,nhưng bề ngoài sẽ là Admin ...dẫu có cố gắng để lấy được pass của member này thì cũng...bó tay,ko làm gì được.
Ngoài ra,em sẽ hidden group Admin thực sự đi,và nếu cần thiết có thể chuyển ID của group đó.
Vấn đề này có thực hiện được ko hả các bác ?
Thay vì kiểm tra ID Group Admin,tìm kiếm trong database rồi xuất ra các thành viên trong ID Group tương ứng,ta đưa thẳng đến 1 ID Group đã được định nghĩa sẵn và xuất ra các thông tin thành viên từ ID Group đó.
Các bác hiểu ý em chứ ?
Liệu bác nào có thể giúp em hiện thực hóa ý tưởng "dở hơi" này ko nhỉ ?
==> Biến ID này sẽ lấy ở đâu ra ??? Có thể sử dụng trực tiếp nó được ko ?
Và cái nì nữa
Sau đó tạo 1 group mới với "display" là Admin,từ màu mè,icon cho đến rank và ...trong hiển thị leader.
Hiện tại,em đang bí phần này.
Khi xem danh sách quản trị của 1 forum IBF,ta sẽ có act=leaders.
Đây là code của phần cần chỉnh sửa.
Code:
/*-------------------------------------------------------------------------*/ // SHOW FORUM LEADERS /*-------------------------------------------------------------------------*/ function show_leaders() { //----------------------------------------- // Work out where our super mods / admins/ mods // are..... //----------------------------------------- $group_ids = array(); $member_ids = array(); $used_ids = array(); $members = array(); $moderators = array(); foreach( $this->ipsclass->cache['group_cache'] as $d => $i ) { if ( $i['g_is_supmod'] ) { $group_ids[ $i['g_id'] ] = $i['g_id']; } if ( $i['g_access_cp'] ) { $group_ids[ $i['g_id'] ] = $i['g_id']; } } foreach( $this->ipsclass->cache['moderators'] as $d => $i ) { if ( $i['is_group'] ) { $group_ids[ $i['group_id'] ] = $i['group_id']; } else { $member_ids[ $i['member_id'] ] = $i['member_id']; } } //----------------------------------------- // Get all members.. (two is more eff. than 1) //----------------------------------------- if ( count( $member_ids ) ) { $this->ipsclass->DB->cache_add_query( 'stats_get_all_members', array( 'member_ids' => $member_ids ) ); $this->ipsclass->DB->cache_exec_query(); while( $r = $this->ipsclass->DB->fetch_row() ) { $members[ $r['id'] ] = $r; } } //----------------------------------------- // Get all groups.. (two is more eff. than 1) //----------------------------------------- $this->ipsclass->DB->cache_add_query( 'stats_get_all_members_groups', array( 'group_ids' => $group_ids ) ); $this->ipsclass->DB->cache_exec_query(); while( $r = $this->ipsclass->DB->fetch_row() ) { $members[ $r['id'] ] = $r; } //----------------------------------------- // PRINT: Admins //----------------------------------------- $this->output .= $this->ipsclass->compiled_templates['skin_stats']->group_strip( $this->ipsclass->lang['leader_admins'] ); foreach( $members as $id => $member ) { if ( $this->ipsclass->cache['group_cache'][ $member['mgroup'] ]['g_access_cp'] ) { $this->output .= $this->ipsclass->compiled_templates['skin_stats']->leader_row( $this->parse_member( $member ), $this->ipsclass->lang['leader_all_forums'] ); //----------------------------------------- // Used... //----------------------------------------- $used_ids[] = $id; } } $this->output .= $this->ipsclass->compiled_templates['skin_stats']->close_strip(); //----------------------------------------- // PRINT: Super Moderators //----------------------------------------- $tmp_html = ""; foreach( $members as $id => $member ) { if ( $this->ipsclass->cache['group_cache'][ $member['mgroup'] ]['g_is_supmod'] and ( ! in_array( $id, $used_ids) ) ) { $tmp_html .= $this->ipsclass->compiled_templates['skin_stats']->leader_row( $this->parse_member( $member ), $this->ipsclass->lang['leader_all_forums'] ); //----------------------------------------- // Used... //----------------------------------------- $used_ids[] = $id; } } if ( $tmp_html ) { $this->output .= $this->ipsclass->compiled_templates['skin_stats']->group_strip( $this->ipsclass->lang['leader_global'] ); $this->output .= $tmp_html; $this->output .= $this->ipsclass->compiled_templates['skin_stats']->close_strip(); } //----------------------------------------- // GET MODERATORS: Normal //----------------------------------------- $tmp_html = ""; foreach( $members as $id => $member ) { if ( ! in_array( $id, $used_ids) ) { foreach( $this->ipsclass->cache['moderators'] as $idx => $data ) { if ( $data['is_group'] and $data['group_id'] == $member['mgroup'] ) { if ( $this->ipsclass->check_perms( $this->ipsclass->forums->forum_by_id[ $data['forum_id'] ]['read_perms'] ) == TRUE ) { $moderators[] = array_merge( $member, array( 'forum_id' => $data['forum_id'] ) ); } $used_ids[] = $id; } else if ( $data['member_id'] == $member['id'] ) { if ( $this->ipsclass->check_perms( $this->ipsclass->forums->forum_by_id[ $data['forum_id'] ]['read_perms'] ) == TRUE ) { $moderators[] = array_merge( $member, array( 'forum_id' => $data['forum_id'] ) ); } $used_ids[] = $id; } } } } //----------------------------------------- // Parse moderators //----------------------------------------- if ( count($moderators) > 0 ) { $mod_array = array(); $this->output .= $this->ipsclass->compiled_templates['skin_stats']->group_strip( $this->ipsclass->lang['leader_mods'] ); foreach ( $moderators as $idx => $i ) { if ( ! isset( $mod_array['member'][ $i['id'] ][ 'name' ] ) ) { //----------------------------------------- // Member is not already set, lets add the member... //----------------------------------------- $mod_array['member'][ $i['id'] ] = array( 'members_display_name' => $i['members_display_name'], 'email' => $i['email'], 'hide_email' => $i['hide_email'], 'location' => $i['location'], 'aim_name' => $i['aim_name'], 'icq_number' => $i['icq_number'], 'id' => $i['id'] ); } //----------------------------------------- // Add forum.. //----------------------------------------- $mod_array['forums'][ $i['id'] ][] = array( $i['forum_id'] , $this->ipsclass->forums->forum_by_id[ $i['forum_id'] ]['name'] ); } foreach( $mod_array['member'] as $id => $data ) { $fhtml = ""; if ( count( $mod_array['forums'][ $id ] ) > 1 ) { $cnt = count( $mod_array['forums'][ $id ] ); $fhtml = $this->ipsclass->compiled_templates['skin_stats']->leader_row_forum_start($id, sprintf( $this->ipsclass->lang['no_forums'], $cnt ) ); foreach( $mod_array['forums'][ $id ] as $idx => $data ) { $fhtml .= $this->ipsclass->compiled_templates['skin_stats']->leader_row_forum_entry($data[0],$data[1]); } $fhtml .= $this->ipsclass->compiled_templates['skin_stats']->leader_row_forum_end(); } else { $fhtml = "<a href='{$this->ipsclass->base_url}showforum=".$mod_array['forums'][ $id ][0][0]."'>".$mod_array['forums'][ $id ][0][1]."</a>"; } $this->output .= $this->ipsclass->compiled_templates['skin_stats']->leader_row( $this->parse_member( $mod_array['member'][ $id ] ), $fhtml ); } $this->output .= $this->ipsclass->compiled_templates['skin_stats']->close_strip(); } $this->page_title = $this->ipsclass->lang['forum_leaders']; $this->nav = array( $this->ipsclass->lang['forum_leaders'] ); }
Hiện tại,nó đang show ra đúng group Admin thực sự chứ ko phải group Admin fake.
Theo như vốn hiểu biết ít ỏi của em thì nó nằm phần lớn ở đoạn này
Code:
//----------------------------------------- // PRINT: Admins //----------------------------------------- $this->output .= $this->ipsclass->compiled_templates['skin_stats']->group_strip( $this->ipsclass->lang['leader_admins'] ); foreach( $members as $id => $member ) { if ( $this->ipsclass->cache['group_cache'][ $member['mgroup'] ]['g_access_cp'] ) { $this->output .= $this->ipsclass->compiled_templates['skin_stats']->leader_row( $this->parse_member( $member ), $this->ipsclass->lang['leader_all_forums'] ); //----------------------------------------- // Used... //----------------------------------------- $used_ids[] = $id; } } $this->output .= $this->ipsclass->compiled_templates['skin_stats']->close_strip();
Tức là khi vào act=leaders,nó sẽ ko hiển thị ra Admin thực sự của site mà hiển thị ra Admin "ảo" ..Đây có thể là 1 member nào đó,nhưng bề ngoài sẽ là Admin ...dẫu có cố gắng để lấy được pass của member này thì cũng...bó tay,ko làm gì được.
Ngoài ra,em sẽ hidden group Admin thực sự đi,và nếu cần thiết có thể chuyển ID của group đó.
Vấn đề này có thực hiện được ko hả các bác ?
Thay vì kiểm tra ID Group Admin,tìm kiếm trong database rồi xuất ra các thành viên trong ID Group tương ứng,ta đưa thẳng đến 1 ID Group đã được định nghĩa sẵn và xuất ra các thông tin thành viên từ ID Group đó.
Các bác hiểu ý em chứ ?
Liệu bác nào có thể giúp em hiện thực hóa ý tưởng "dở hơi" này ko nhỉ ?
Code:
$used_ids[] = $id;
Và cái nì nữa
Code:
foreach( $members as $id => $member )
Bài liên quan
To lkn : Cảm ơn bác đã hướng dẫn,nhưng mà làm thế nào để gọi ra đúng ID của group fake hả bác ?
Ở trên bác chỉ nói nếu member_group khác id của admin thì sẽ chạy thằng ku "fake code" ...,nếu ko thì làm như bình thường...
Và bỏ đoạn này
Có thể thay luôn là "Nếu member group = ID của group fake" thì show ra thông số về member thuộc group đó ko ạ ?
Chờ tin bác...
( Em đã thử truyền trực tiếp vào nhưng ..đáng tiếc là ko được .. )