[RC] Topic Password 2.0.1 ระบบป้องกันเข้า กระทู้

แนะนำ Mod ต่างๆ ของ PHPBB3 แนะนำความสามารถ ของ mod การติดตั้ง การเข้ากันได้กับเวอร์ชั่น

Moderator: mindphp

ภาพประจำตัวสมาชิก
M004
PHP VIP Members
PHP VIP Members
โพสต์: 1323
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

[RC] Topic Password 2.0.1 ระบบป้องกันเข้า กระทู้

โพสต์โดย M004 » 14/06/2013 7:06 pm

รายละเอียดเกี่ยวกับ[RC] Topic Password 2.0.1 ระบบป้องกันเข้า กระทู้
พัฒนาโดย : Kamahl19
Version : 2.0.1
phpBB Version(s) : phpBB 3.0.1 - 3.0.11
ดาวน์โหลดได้ที่ : https://www.phpbb.com/community/viewtopic.php?f=70&t=2149535
1.jpg
1.jpg (29.77 KiB) เปิดดู 320 ครั้ง

2.jpg
2.jpg (13.32 KiB) เปิดดู 320 ครั้ง


เปิดไฟล์ posting.php
ค้นหา

โค้ด: เลือกทั้งหมด

// Need to login to passworded forum first?
if ($post_data['forum_password'])
{
    
login_forum_box(array(
        
'forum_id'            => $forum_id,
        
'forum_password'    => $post_data['forum_password'])
    );


เติมหลัง

โค้ด: เลือกทั้งหมด

// Need to login to passworded topic first?
if ($mode == 'edit' && $post_data['topic_password'] && (!$auth->acl_get('a_') && !$auth->acl_get('m_'$forum_id) && !$auth->acl_get('m_')))
{
    
login_topic_box(array(
        
'topic_id'        => $topic_id,
        
'topic_password'  => $post_data['topic_password']
    ));

ค้นหา

โค้ด: เลือกทั้งหมด

    $post_data['topic_time_limit']    = request_var('topic_time_limit', (($mode != 'post') ? (int) $post_data['topic_time_limit'] : 0)); 

เติมหลัง

โค้ด: เลือกทั้งหมด

    $post_data['topic_password']        = request_var('topic_password'''true); 

ค้นหา

โค้ด: เลือกทั้งหมด

                'post_approved'            => (isset($post_data['post_approved'])) ? $post_data['post_approved'] : false

เติมหลัง

โค้ด: เลือกทั้งหมด

                'topic_password'        => $post_data['topic_password'], 

ค้นหา

โค้ด: เลือกทั้งหมด

    'S_BBCODE_QUOTE'        => $quote_status

เติมหลัง

โค้ด: เลือกทั้งหมด

    'S_ALLOW_PASSWORD'  => ( ($mode == 'post' && $post_data['forum_allow_topic_password']) || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id'] && ($post_data['forum_allow_topic_password'] || $post_data['topic_password'])) ) ? true false,
    
'EDIT_TOPIC_PASSWORD' => (!empty($post_data['topic_password'])) ? $post_data['topic_password'] : ''


เปิดไฟล์ viewforum.php
ค้นหา

โค้ด: เลือกทั้งหมด

            'S_TOPIC_MOVED'            => ($row['topic_status'] == ITEM_MOVED) ? true false

เติมหลัง

โค้ด: เลือกทั้งหมด

            'S_PASSWORDED_TOPIC'   => (!empty($row['topic_password'])) ? true false

ค้นหา

โค้ด: เลือกทั้งหมด

    login_forum_box($topic_data);

เติมหลัง

โค้ด: เลือกทั้งหมด

if ($topic_data['topic_password'] && (!$auth->acl_get('a_') && !$auth->acl_get('m_'$forum_id) && !$auth->acl_get('m_')))
{
    
login_topic_box($topic_data);
}
 

ค้นหา adm/style/acp_forums.html

โค้ด: เลือกทั้งหมด

   <!-- IF S_FORUM_PASSWORD_SET -->
   <dl>
      <dt><label for="forum_password_unset">{L_FORUM_PASSWORD_UNSET}:</label><br /><span>{L_FORUM_PASSWORD_UNSET_EXPLAIN}</span></dt>
      <dd><input id="forum_password_unset" name="forum_password_unset" type="checkbox" /></dd>
   </dl>
   <!-- ENDIF -->

เติมหลัง

โค้ด: เลือกทั้งหมด

  <dl>             
    <dt><label for="forum_allow_topic_password">{L_FORUM_ALLOW_TOPIC_PASSWORD}:</label><br /><span>{L_FORUM_ALLOW_TOPIC_PASSWORD_EXPLAIN}</span></dt>
    <dd>
      <label><input type="radio" class="radio" name="forum_allow_topic_password" value="1"<!-- IF S_FORUM_ALLOW_TOPIC_PASSWORD --> id="forum_allow_topic_password" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
      <label><input type="radio" class="radio" name="forum_allow_topic_password" value="0"<!-- IF not S_FORUM_ALLOW_TOPIC_PASSWORD --> id="forum_allow_topic_password" checked="checked"<!-- ENDIF --> /> {L_NO}</label>
    </dd>
  </dl>


ค้นหา includes/constants.php

โค้ด: เลือกทั้งหมด

// Additional tables 

เติมหลัง

โค้ด: เลือกทั้งหมด

define('TOPICS_ACCESS_TABLE',            $table_prefix 'topics_access'); 


เปิดไฟล์ includes/functions.php
ค้นหา

โค้ด: เลือกทั้งหมด

// Little helpers

เติมก่อน

โค้ด: เลือกทั้งหมด

/**
* Generate topic login box
*/
function login_topic_box($topic_data)
{
    global 
$db$config$user$template$phpEx;
    
    
$user->add_lang('mods/topic_password');

    
$password request_var('password'''true);

    
$sql 'SELECT topic_id
        FROM ' 
TOPICS_ACCESS_TABLE '
        WHERE topic_id = ' 
$topic_data['topic_id'] . '
            AND user_id = ' 
$user->data['user_id'] . "
            AND session_id = '" 
$db->sql_escape($user->session_id) . "'";
    
$result $db->sql_query($sql);
    
$row $db->sql_fetchrow($result);
    
$db->sql_freeresult($result);

    if (
$row)
    {
        return 
true;
    }

    if (
$password)
    {
        
// Remove expired authorised sessions
        
$sql 'SELECT t.session_id
            FROM ' 
TOPICS_ACCESS_TABLE ' t
            LEFT JOIN ' 
SESSIONS_TABLE ' s ON (t.session_id = s.session_id)
            WHERE s.session_id IS NULL'
;
        
$result $db->sql_query($sql);

        if (
$row $db->sql_fetchrow($result))
        {
            
$sql_in = array();
            do
            {
                
$sql_in[] = (string) $row['session_id'];
            }
            while (
$row $db->sql_fetchrow($result));

            
// Remove expired sessions
            
$sql 'DELETE FROM ' TOPICS_ACCESS_TABLE '
                WHERE ' 
$db->sql_in_set('session_id'$sql_in);
            
$db->sql_query($sql);
        }
        
$db->sql_freeresult($result);
        
        if (
$password == $topic_data['topic_password'])
        {
            
$sql_ary = array(
                
'topic_id'    => (int) $topic_data['topic_id'],
                
'user_id'     => (int) $user->data['user_id'],
                
'session_id'  => (string) $user->session_id,
            );

            
$db->sql_query('INSERT INTO ' TOPICS_ACCESS_TABLE ' ' $db->sql_build_array('INSERT'$sql_ary));

            return 
true;
        }

        
$template->assign_var('LOGIN_ERROR'$user->lang['WRONG_PASSWORD']);
    }

    
page_header($user->lang['LOGIN']);

    
$template->assign_vars(array(
    
'FORUM_NAME'        => $topic_data['forum_name'],    
        
'TOPIC_TITLE'       => $topic_data['topic_title'],
        
'S_LOGIN_ACTION'        => build_url(array('t')),
        
'S_HIDDEN_FIELDS'        => build_hidden_fields(array('t' => $topic_data['topic_id']))
  ));

    
$template->set_filenames(array(
        
'body' => 'login_topic.html'
    
));
    
    
page_footer();
}

 

เปิดไฟล includes/functions_posting.php
ค้นหา

โค้ด: เลือกทั้งหมด

                'topic_attachment'            => (!empty($data['attachment_data'])) ? 0

เติมหลัง

โค้ด: เลือกทั้งหมด

                'topic_password'        => $data['topic_password'], 


ค้นหา

โค้ด: เลือกทั้งหมด

                'topic_attachment'            => (!empty($data['attachment_data'])) ? : (isset($data['topic_attachment']) ? $data['topic_attachment'] : 0), 

เติมหลัง

โค้ด: เลือกทั้งหมด

                'topic_password'        => $data['topic_password'], 


ค้นหา

โค้ด: เลือกทั้งหมด

includes/acp/acp_forums.php

เติมหลัง

โค้ด: เลือกทั้งหมด

        $user->add_lang('acp/forums'); 


ค้นหา

โค้ด: เลือกทั้งหมด

        $user->add_lang('mods/topic_password');
         

ค้นหา

โค้ด: เลือกทั้งหมด

                        'forum_password_confirm'=> request_var('forum_password_confirm'''true), 

เติมหลัง

โค้ด: เลือกทั้งหมด

                        'forum_allow_topic_password'    => request_var('forum_allow_topic_password'false), 


เปืดไฟล์ styles/prosilver/template/posting_editor.html
ค้นหา

โค้ด: เลือกทั้งหมด

   <dl style="clear: left;">
      <dt><label for="subject">{L_SUBJECT}:</label></dt>
      <dd><input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->60<!-- ELSE -->64<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>
   </dl>

เติมหลัง

โค้ด: เลือกทั้งหมด

   <!-- IF S_ALLOW_PASSWORD -->
     <dl style="clear: left;">
        <dt><label for="topic_password">{L_TOPIC} {L_PASSWORD}:</label></dt>
        <dd><input type="password" name="topic_password" id="topic_password" size="45" maxlength="40" value="{EDIT_TOPIC_PASSWORD}" class="inputbox autowidth" /></dd>
     </dl>
   <!-- ENDIF -->

เปิดไฟล์ styles/prosilver/template/viewforum_body.html
ค้นหา

โค้ด: เลือกทั้งหมด

            <dt<!-- IF topicrow.TOPIC_ICON_IMG and S_TOPIC_ICONS --> style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}); background-repeat: no-repeat;"<!-- ENDIF --> title="{topicrow.TOPIC_FOLDER_IMG_ALT}"><!-- IF topicrow.S_UNREAD_TOPIC --><a href="{topicrow.U_NEWEST_POST}">{NEWEST_POST_IMG}</a> <!-- ENDIF --><a href="{topicrow.U_VIEW_TOPIC}" class="topictitle">{topicrow.TOPIC_TITLE}</a>

ค้นหาในบรรทัด

โค้ด: เลือกทั้งหมด

<!-- IF topicrow.S_UNREAD_TOPIC -->

เติมแทน

โค้ด: เลือกทั้งหมด

<!-- IF topicrow.S_PASSWORDED_TOPIC --><img src="{T_THEME_PATH}/images/key.png" alt="{L_PASSWORD}"> <!-- ENDIF -->

ติดตั้งไฟล์

โค้ด: เลือกทั้งหมด

install_topic_password.php

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 3 และ บุคคลทั่วไป 0 ท่าน