[問題]關於付費瀏覽收費值預設為-1

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

主題已鎖定
拭銀布
星球公民
星球公民
文章: 66
註冊時間: 2003-11-18 19:44
來自: yakuza

[問題]關於付費瀏覽收費值預設為-1

文章 拭銀布 »

這問題以前曾問過伊夢兒前輩,但百般搜尋後卻苦尋不著,可能之前竹貓被攻擊流失掉了><~

還有像是按付費後按重新整理會重複付費的修正也不見了!

能否請伊夢兒前輩能在指導一次嗎?感激不盡^^
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

文章 依夢兒 »

拭銀布 寫:這問題以前曾問過伊夢兒前輩,但百般搜尋後卻苦尋不著,可能之前竹貓被攻擊流失掉了><~

代碼: 選擇全部

開啟 viewtopic.php 。

搜尋:

'U_HIDDEN_FORM_FIELDS' => ( ($userdata['user_attachsig']

同一行的後面繼續找到:

. $userdata['session_id'] . '">

在後面加上:

<input type="hidden" name="pay_money" value="-1" />
拭銀布 寫:還有像是按付費後按重新整理會重複付費的修正也不見了!
糟糕,這一篇我自己也不知道要怎麼改.... Orz

我也忘了之前是哪一位指導修正的.... Orz
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
天霜
竹貓忠實會員
竹貓忠實會員
文章: 882
註冊時間: 2003-04-15 19:40
來自: 星之鄉學園
聯繫:

文章 天霜 »

依夢兒 寫:我也忘了之前是哪一位指導修正的.... Orz
這一位前輩.shihchieh :mrgreen:
不回答來自 私人訊息, 電子郵件, 及時通 的相關 phpBB 問題
除非是個人疏失所造成的問題

這世界還有拼命守護的價值嗎...
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8510
註冊時間: 2004-04-30 01:54
來自: Taiwan

文章 心靈捕手 »

依夢兒 寫:
拭銀布 寫:這問題以前曾問過伊夢兒前輩,但百般搜尋後卻苦尋不著,可能之前竹貓被攻擊流失掉了><~

代碼: 選擇全部

開啟 viewtopic.php 。

搜尋:

'U_HIDDEN_FORM_FIELDS' => ( ($userdata['user_attachsig']

同一行的後面繼續找到:

. $userdata['session_id'] . '">

在後面加上:

<input type="hidden" name="pay_money" value="-1" />
拭銀布 寫:還有像是按付費後按重新整理會重複付費的修正也不見了!
糟糕,這一篇我自v也不知道要怎麼改.... Orz

我也忘了之前是哪一位指導修正的.... Orz
最近, 個人因為在忙"網界博覽會", 也就比較少參與討論...

昨天, 剛好也有會員到討論區問我有關 付費瀏覽 的相關問題,
所以, 回頭去看看自己整理的筆記...

以下的文章, 也許就是您和 拭銀布 所需要的, 請參考看看:
ps. 前半部是 KCTONY 大大的 付費瀏覽外掛, 後半部則有相關問題的討論.

代碼: 選擇全部

[原創][外掛] 付費瀏覽  -by- KCTONY 

小弟我第一次寫的MOD ^_^" 
弄了好幾天 有些地方感覺還是怪怪的... 
有錯誤的地方要回報給我喔 ~ 還有更好的建議的話 ~ 要跟我說喔 ^^ :-D 
demo : http://www.e-legend.com.tw/swdol/php/bb/ 

要改到的地方漫多 
有好幾個是為了防止沒付錢就偷看文章寫的 
大家也幫忙找看看哪些地方可以不用付錢就偷看~ 

有問題就回到另一個主題吧~ 這裡無法回應 ^^ 
http://phpbb-tw.net/phpbb/viewtopic.php?t=9886 

---------------------------------------------------------- 
2002/8/26 21:00 修改訪客付費問題 
http://phpbb-tw.net/phpbb/viewtopic.php?p=59927#59927 
---------------------------------------------------------- 
2002/8/26 23:00 有些碼亂掉了 關閉本文的語法 
裝過有問題的就重新安裝吧 
---------------------------------------------------------- 
2002/8/27 16:00 修正 serch.php問題 
http://phpbb-tw.net/phpbb/viewtopic.php?p=60179#60179 
---------------------------------------------------------- 
2002/8/27 16:00 如果有裝 友善列印 MOD要加裝 
http://phpbb-tw.net/phpbb/viewtopic.php?p=60176#60176 

---------------------------------------------------------- 
2002/8/28 19:00 viewtopic.php 再修改 
http://phpbb-tw.net/phpbb/viewtopic.php?p=60463#60463 

---------------------------------------------------------- 
2002/9/1 01:00 posting.php BUG 修改 
http://phpbb-tw.net/phpbb/viewtopic.php?p=61173#61173 

---------------------------------------------------------- 
2002/9/13 01:00 topic_review BUG修改 
http://phpbb-tw.net/phpbb/viewtopic.php?p=63305#63305 

---------------------------------------------------------- 
2002/9/15 07:25 整合attach file mod (有裝的人在裝 沒裝的就不用了) 
http://phpbb-tw.net/phpbb/viewtopic.php?p=63549#63549 

---------------------------------------------------------- 
有人提到使用者會漫天開價,那就改成選單式吧!(不包含在原始檔中) 
http://phpbb-tw.net/phpbb/viewtopic.php?p=64088#64088 

---------------------------------------------------------- 
增加可以設定使用者權限 (不包含在原始檔中) 
http://phpbb-tw.net/phpbb/viewtopic.php?t=11008 

---------------------------------------------------------- 
都沒裝過就從下面開始裝 

=開始= 

SQL 語法: 

ALTER TABLE phpbb_posts_text 
ADD pay_money MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL, 
ADD pay_user TEXT NOT NULL, 
ADD pay_see MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL, 
ADD pay_gotmoney MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL; 
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_paymoney', '1'); 



打開 language\lang_chinese_traditional_taiwan\lang_main.php 
// Pay_Money_MOD 
$lang['Paymoney_Nomoney'] = "現金不足, 無法付款."; 
$lang['Paymoney_is_ON'] = "文章收費 <u>開啟</u>"; 
$lang['Paymoney_is_OFF'] = "文章收費 <u>關閉</u>"; 
$lang['paymoney_set_money'] = "這篇文章是否需要收費"; 
$lang['Paymoney_Need'] = "本文需要付錢才能觀看, 需要:"; 
$lang['Paymoney_Paytoposter'] = "原發文者已收到您的匯款!<br>以下是本文:"; 
$lang['Paymoney_Poster'] = "有人付費看過您的文章, 您所獲得的收入:"; 
$lang['Paymoney_Payok'] = "您已付錢給此篇文章原發文者."; 
$lang['Paymoney_paysee'] = "有人已付費觀看過此文, 原發文者一共獲得:"; 
$lang['Paymoney_Cantquote'] = "原文需要付費才能觀看, 無法引用."; 
$lang['Paymoney_Cantrew'] = "原文需要付費才能觀看, 無法觀看."; 
$lang['Paymoney_Cantupda'] = "無法更新付費資料/無法更新付費人數!"; 
$lang['Paymoney_Cantupdate'] = "無法更新會員的貨幣!"; 


打開 language\lang_chinese_traditional_taiwan\lang_admin.php 
找地方加入 

// Pay_Money_Mod 
$lang['Allow_Paymoney'] = "允許使用者設定付費文章"; 



打開 Viewtopic.php 

尋找 

// Go ahead and pull all data for this topic 
// 
$sql = "SELECT 

在SELECT後面那一大串的最後面加上 
, pt.pay_money, pt.pay_user, pt.pay_see, pt.pay_gotmoney 

例如 (由於這部分常常會去改到 有加過其他MOD的請別直接COPY) 
$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_money, u.user_bank, u.user_level, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, u.user_allow_viewonline, u.user_session_time ,p.* ,pt.post_text, pt.post_subject, pt.bbcode_uid, u.user_robfail, pt.pay_money, pt.pay_user, pt.pay_see, pt.pay_gotmoney 


尋找 

$template->assign_block_vars('postrow', array( 


在前面加入 


// Pay_Money_MOD By KCTONY 
$pay_money = $postrow[$i]['pay_money']; 
$pay_user = $postrow[$i]['pay_user']; 
$pay_see = $postrow[$i]['pay_see']; 
$user_id = 'id' . $userdata['user_id'] . ','; 
$temp_url = append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $postrow[$i]['post_id'] . "#" . $postrow[$i]['post_id']); 
$returnurl = '<br><br><a href=' . $temp_url . '> << 返回 >> <a>'; 

if ( $mode == 'pay_money' && $p == $postrow[$i]['post_id'] && $userdata['user_id'] > 0 ) 
{ 
if ( $userdata['user_money'] < $pay_money) 
{ 
message_die(GENERAL_MESSAGE, $lang['Paymoney_Nomoney'] . $returnurl); 
} 
$sql = "UPDATE " . USERS_TABLE . " SET user_money = user_money + $pay_money WHERE user_id = " . $poster_id; 
if( !$db->sql_query($sql) ) 
{ 
message_die(GENERAL_ERROR, $lang['Paymoney_Cantupdate'], "", __LINE__, __FILE__, $sql); 
} 
$sql = "UPDATE " . USERS_TABLE . " SET user_money = user_money - $pay_money WHERE user_id = " . intval($userdata['user_id']); 
if( !$db->sql_query($sql) ) 
{ 
message_die(GENERAL_ERROR, $lang['Paymoney_Cantupdate'], "", __LINE__, __FILE__, $sql); 
} else { 
$sql = "UPDATE " . POSTS_TEXT_TABLE . " SET pay_user = '".$pay_user.$user_id."', pay_see = pay_see + 1, pay_gotmoney = pay_gotmoney + $pay_money WHERE post_id = ".$p; 
if( !$db->sql_query($sql) ) 
{ 
message_die(GENERAL_ERROR, $lang['Paymoney_Cantupda'], "", __LINE__, __FILE__, $sql); 
} else { 
$message = '<p><font color="#FF0000">' . $lang['Paymoney_Paytoposter'] . '</font><br>----------</p>'.$message; 
} 
} 
} else { 
if($pay_money > 0) 
{ 
If ($poster_id == $userdata['user_id']) 
{ 
$message = $message . '<p>----------<br><font color="#FF0000">' . $pay_see . $lang['Paymoney_Poster'] . $postrow[$i]['pay_gotmoney'] . $lang['Virtual_Money'] . '</font></p>'; 
} else { 
if (stristr($pay_user,$user_id)) { 
$message = $message . '<p>----------<br><font color="#FF0000">' . $lang['Paymoney_Payok'] . '</font><br>' . $pay_see . $lang['Paymoney_paysee'] . $postrow[$i]['pay_gotmoney'] . $lang['Virtual_Money'] . '</p>'; 
} else { 
$temp_url = append_sid("viewtopic.$phpEx?mode=pay_money&" . POST_POST_URL . "=" . $postrow[$i]['post_id'] . "#" . $postrow[$i]['post_id']); 
$message = '<font color="#FF0000">' . $lang['Paymoney_Need'] . $pay_money . $lang['Virtual_Money'] . '</font><br>' . $pay_see . $lang['Paymoney_paysee'] . $postrow[$i]['pay_gotmoney'] . $lang['Virtual_Money'] . ' <BR><form name="pay_money" action='.$temp_url.' method="post">          <input type="submit" name="pay_money" value=" 付錢 " class="mainoption" /></form>'; 
} 
} 
} else { 
$message = $message; 
} 
} 

// END Pay_Money_MOD 



打開 posting.php 

收尋 
$select_sql = ( !$submit ) ? ", t.topic_title, p.enable_bbcode, p.enable_html, p.enable_smilies, p.enable_sig, p.post_username, pt.post_subject, pt.post_text, pt.bbcode_uid, u.username, u.user_id, u.user_sig" : ''; 

在 u.user_sig 後面加入 
, pt.pay_money 

也就是改成 
$select_sql = ( !$submit ) ? ", t.topic_title, p.enable_bbcode, p.enable_html, p.enable_smilies, p.enable_sig, p.post_username, pt.post_subject, pt.post_text, pt.bbcode_uid, u.username, u.user_id, u.user_sig, pt.pay_money" : ''; 



收尋 
$message = $post_info['post_text']; 

後面加入 
$pay_money = $post_info['pay_money']; 


收尋 
submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length); 

在 $poll_length 後下加入 
, $pay_money 

也就是改成 
submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length, $pay_money); 


收尋 
$message = '[quote="' . $quote_username . '"]' . $message . '[/quote]'; 

後面加上 
// Pay_Money_MOD By KCTONY 
if ($pay_money != 0) $message = '[quote="' . $quote_username . '"]' . $lang['Paymoney_Cantquote']. '[/quote]'; 
// END Pay_Money_MOD 


尋找 
// 
// HTML toggle selection 
// 
if ( $board_config['allow_html'] ) 
{ 
$html_status = $lang['HTML_is_ON']; 
$template->assign_block_vars('switch_html_checkbox', array()); 
} 
else 
{ 
$html_status = $lang['HTML_is_OFF']; 
} 
在前面加入 

// 
// Pat_Money_Mod By KCTONY 
// 
if ( $board_config['allow_paymoney'] ) 
{ 
$paymoney_status = $lang['Paymoney_is_ON']; 
$template->assign_block_vars('switch_paymoney_text', array()); 
} 
else 
{ 
$paymoney_status = $lang['Paymoney_is_OFF']; 
} 



尋找 
'SMILIES_STATUS' => $smilies_status, 

在後面加入 
'PAYMONEY_STATUS' => $paymoney_status, // Pay_Money_MOD By KCTONY 
'L_SET_MONEY' => $lang['paymoney_set_money'], // Pay_Money_MOD 
'VALUE_PAY_MONEY' => $pay_money + 0, // Pay_Money_MOD 
'VIRTUAL_MONEY' => $lang['Virtual_Money'], // Pay_Money_MOD 



打開 templates/subSilver/posting_body.tpl 

尋找 
{HTML_STATUS}<br /> 
在前面加入 
{PAYMONEY_STATUS}<br /> 


尋找 
<!-- BEGIN switch_html_checkbox --> 
<tr> 
<td> 
<input type="checkbox" name="disable_html" {S_HTML_CHECKED} /> 
</td> 
<td><span class="gen">{L_DISABLE_HTML}</span></td> 
</tr> 
<!-- END switch_html_checkbox --> 

在前面加入 

<!-- BEGIN switch_paymoney_text --> 
<tr> 
<td></td> 
<td> 
<span class="gen">{L_SET_MONEY}</span><input type="text" name="pay_money" size="10" value="{VALUE_PAY_MONEY}" /><span class="gen">{VIRTUAL_MONEY}</span> 
</td> 
</tr> 
<!-- END switch_paymoney_text --> 



打開 includes/functions_post.php 

收尋 
function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, &$post_username, &$post_subject, &$post_message, &$poll_title, &$poll_options, &$poll_length) 

在 &$poll_length 後面加上 
, &$pay_money 

也就是改成 
function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, &$post_username, &$post_subject, &$post_message, &$poll_title, &$poll_options, &$poll_length, &$pay_money) 


收尋 (要改三個部分,要注意.) 

$sql = ( $mode != 'editpost' ) ? "INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, post_subject, bbcode_uid, post_text) VALUES ($post_id, '$post_subject', '$bbcode_uid', '$post_message')" : "UPDATE " . POSTS_TEXT_TABLE . " SET post_text = '$post_message', bbcode_uid = '$bbcode_uid', post_subject = '$post_subject' WHERE post_id = $post_id"; 

在 post_id, post_subject, bbcode_uid, post_text 後面加上 
, pay_money, pay_user 

在 $post_id, '$post_subject', '$bbcode_uid', '$post_message' 後面加上 
, '$pay_money' ,'id".$userdata['user_id'].",' 

在 , post_subject = '$post_subject' 後面加上 
, pay_money = '$pay_money' 

也就是改成 
$sql = ( $mode != 'editpost' ) ? "INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, post_subject, bbcode_uid, post_text, pay_money, pay_user) VALUES ($post_id, '$post_subject', '$bbcode_uid', '$post_message', '$pay_money' ,'id".$userdata['user_id'].",')" : "UPDATE " . POSTS_TEXT_TABLE . " SET post_text = '$post_message', bbcode_uid = '$bbcode_uid', post_subject = '$post_subject', pay_money = '$pay_money' WHERE post_id = $post_id"; 




打開 includes/topic_review.php 

收尋 
$sql = "SELECT u.username, u.user_id, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid 

後面加上 
, pt.pay_money, pt.pay_user 

也就是改成 
$sql = "SELECT u.username, u.user_id, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid, pt.pay_money, pt.pay_user 


收尋 
$template->assign_block_vars('postrow', array( 

在前面加入 
// Pay_Money_MOD By KCTONY 
$pay_user = $row['pay_user']; 
$user_id = 'id' . $userdata['user_id'] . ',';; 
$poster_id = $row['poster_id']; 

if ($row['pay_money'] > 0) 
{ 
If ($poster_id <> $userdata['user_id']) 
{ 
if (stristr($pay_user,$user_id)) { 
$message = $message . '<p>----------<br><font color="#FF0000">' . $lang['Paymoney_Payok'] . '</font></p>'; 
} else { 
$message = '<p><font color="#FF0000">' . $lang['Paymoney_Cantrew']. '</font></p>'; 
$showatt = 'no'; 
} 
} 
} 
// END Pay_Money_MOD 



打開 admin/admin_board.php 

收尋 
$html_yes = ( $new['allow_html'] ) ? "checked="checked"" : ""; 
$html_no = ( !$new['allow_html'] ) ? "checked="checked"" : ""; 

前面加入 
$paymoney_yes = ( $new['allow_paymoney'] ) ? "checked="checked"" : ""; 
$paymoney_no = ( !$new['allow_paymoney'] ) ? "checked="checked"" : ""; 


收尋 
"L_ALLOW_HTML" => $lang['Allow_HTML'], 

前面加入 
"L_ALLOW_PAYMONEY" => $lang['Allow_Paymoney'], // Pay_Money_MOD By KCTONY 
"PAYMONEY_YES" => $paymoney_yes, // Pay_Money_MOD 
"PAYMONEY_NO" => $paymoney_no, // Pay_Money_MOD 



打開 templates/subSilver/admin/board_config_body.tpl 

收尋 
<tr> 
<td class="row1">{L_ALLOW_HTML}</td> 
<td class="row2"><input type="radio" name="allow_html" value="1" {HTML_YES} /> {L_YES}  <input type="radio" name="allow_html" value="0" {HTML_NO} /> {L_NO}</td> 
</tr> 
前面加入 
<tr> 
<td class="row1">{L_ALLOW_PAYMONEY}</td> 
<td class="row2"><input type="radio" name="allow_paymoney" value="1" {PAYMONEY_YES} /> {L_YES}  <input type="radio" name="allow_paymoney" value="0" {PAYMONEY_NO} /> {L_NO}</td> 
</tr> 



打開 search.php 

收尋 
if ( $show_results == 'posts' ) 
{ 
$sql = "SELECT pt.post_text, pt.bbcode_uid, pt.post_subject, p.*, f.forum_id, f.forum_name, t.*, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid 

\n在 u.user_sig_bbcode_uid 後面加入 
, pt.pay_money, pt.pay_user 

也就是改成 
$sql = "SELECT pt.post_text, pt.bbcode_uid, pt.post_subject, p.*, f.forum_id, f.forum_name, t.*, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid, pt.pay_money, pt.pay_user 



尋找 
$message = $searchset[$i]['post_text']; 

替換成 
// Pay_Money_MOD By KCTONY 
$pay_user = $searchset[$i]['pay_user']; 
$user_id = 'id' . $userdata['user_id'] . ',';; 
$poster_id = $searchset[$i]['poster_id']; 

if ($searchset[$i]['pay_money'] > 0) 
{ 
If ($poster_id == $userdata['user_id']) 
{ 
$message = $searchset[$i]['post_text']; 
} else { 
if (stristr($pay_user,$user_id)) { 
$message = $message . '<p>----------<br><font color="#FF0000">' . $lang['Paymoney_Payok'] . '</font></p>'; 
} else { 
$message = '<p><font color="#FF0000">' . $lang['Paymoney_Cantrew']. '</font></p>'; 
} 
} 
} else { 
$message = $searchset[$i]['post_text']; 
} 
// END Pay_Money_MOD 


-------------------------------------------------------------------------------
如果有裝 "友善列印" 的外掛的話: 

打開 printview.php 

尋找 
$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid 

在 pt.bbcode_uid 後面加上 
, pt.pay_money ,pt.pay_user 

也就是變成 
$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid, pt.pay_money ,pt.pay_user 



尋找 
$message = $postrow[$i]['post_text']; 

替換成 


// Pay_Money_MOD By KCTONY 
$pay_user = $postrow[$i]['pay_user']; 
$user_id = 'id' . $userdata['user_id'] . ',';; 
$poster_id = $postrow[$i]['poster_id']; 

if ($postrow[$i]['pay_money'] > 0) 
{ 
If ($poster_id == $userdata['user_id']) 
{ 
$message = $postrow[$i]['post_text']; 
} else { 
if (stristr($pay_user,$user_id)) { 
$message = $postrow[$i]['post_text']; 
} else { 
$message = $lang['Paymoney_Cantrew']; 
} 
} 
} else { 
$message = $postrow[$i]['post_text']; 
} 
// END Pay_Money_MOD 
========
備註: -by- 心靈捕手 http://220.134.232.37

目前使用 printer_topic_1.0.8.zip 外掛,
似乎不必再做修正!

但是卻可以作為修正 Download_topics_and_posts 的參考, 如下:

尋找\r
$sql = "SELECT u.*, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid

替換成
$sql = "SELECT u.*, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid, pt.pay_money ,pt.pay_user

尋找\r
$message = $row['post_text'];

替換成
// Pay_Money_MOD By KCTONY 
$pay_user = $row['pay_user']; 
$user_id = 'id' . $userdata['user_id'] . ',';
$poster_id = $row['poster_id']; 

if ($row['pay_money'] > 0) 
{ 
If ($poster_id == $userdata['user_id']) 
{ 
$message = $row['post_text']; 
} else { 
if (stristr($pay_user,$user_id)) { 
$message = $row['post_text']; 
} else { 
$message = $lang['Paymoney_Cantrew']; 
} 
} 
} else { 
$message = $row['post_text']; 
} 
// END Pay_Money_MOD 

-------------------------------------------------------------------------------
如果有裝 attach file mod 的使用者,做下面的修改, 
就可以把 attach file mod 的部分也隱藏起來了. 

本來打算從 attach file mod 的程式去修改, 
可是版本不同,差異不小,所以做個最簡單的方法. 

打開 viewtopic.php 
尋找 



if (stristr($pay_user,$user_id)) { 
$message = $message . '<p>----------<br><font color="#FF0000">' . $lang['Paymoney_Payok'] . '</font><br>' . $pay_see . $lang['Paymoney_paysee'] . $postrow[$i]['pay_gotmoney'] . $lang['Virtual_Money'] . '</p>'; 
} else { 



在後面加入 

$showatt = 'no'; 


尋找 (這部分因版本不同也會有差異,就是在裝attach file mod時,viewtopic.php最後修改的部分.) 


display_post_attachments($postrow[$i]['post_id'], $postrow[$i]['post_attachment']); 


改成 
if ($showatt <> 'no') 
{ 
display_post_attachments($postrow[$i]['post_id'], $postrow[$i]['post_attachment']); 
} 


打開 includes\topic_review.php 

尋找 

$message = '<p><font color="#FF0000">' . $lang['Paymoney_Cantrew']. '</font></p>'; 


後面加入 

$showatt = 'no'; 



尋找 (這部分因版本不同也會有差異,就是在裝attach file mod時,topic_review.php最後修改的部分.) 

display_review_attachments($row['post_id'], $row['post_attachment'], $is_auth); 


修改成 


if ($showatt <> 'no') 
{ 
display_review_attachments($row['post_id'], $row['post_attachment'], $is_auth); 
} 


這樣就可以了 


-------------------------------------------------------------------------------
有人提到有使用者會"漫天開價"的問題, 
將他改成選單式,應該就不會有這個問題了. ^^ 
看看要用哪種方式,裝完後再做下列修改: 

打開posting.php 
尋找 
[code]// 
// Output the data to the template 
// 
$template->assign_vars(array(
\r

在前面加入

代碼: 選擇全部

 for ($i=0;$i<=300;$i+=50) 
{ 
if ($pay_money == $i ) 
{ 
$checked = 'selected'; 
} else { 
$checked = ''; 
} 

$select_pay_money .= '<option ' . $checked . ' value="'.$i.'">'.$i.'</option>'; 
}


for ($i=0;$i<=300;$i+=50)
這段的意思是指 起始是0 每次加50 加到300為止
可以自行更改



尋找

代碼: 選擇全部

 'VALUE_PAY_MONEY' => $pay_money + 0, // Pay_Money_MOD


改成

代碼: 選擇全部

 'VALUE_PAY_MONEY' => $select_pay_money, // Pay_Money_MOD




打開 templates/subSilver/posting_body.tpl

尋找

代碼: 選擇全部

<input type="text" name="pay_money" size="10" value="{VALUE_PAY_MONEY}" />


改成

代碼: 選擇全部

<select size="1" name="pay_money">{VALUE_PAY_MONEY}</select>


-------------------------------------------------------------------------------
文章主題: [修正]訪客付費

已經裝過的人就改一下吧
還沒裝的就照著原始的裝...
這樣訪客就無法付費了...
現在正在改更詳細的權限設定...
弄好在PO上來...

打開 viewtopic.php

尋找

程式碼:
if ( $mode == 'pay_money' && $p == $postrow[$i]['post_id'])

改成

程式碼:
if ( $mode == 'pay_money' && $p == $postrow[$i]['post_id'] && $userdata['user_id'] > 0 )

=結束囉=


###############################################################################
問題: -by- 依夢兒

就是在按下付費按鈕,完成付費後,先跳轉至一個宣告畫面(例如顯示你已經完成付費),再跳回原來賣帖的頁面。
或是在按下付費按鈕,完成付費後,讓它跳回原來賣帖的頁面,但是不要讓瀏覽器的網址列出現 mode=pay_points& 字串。

因為目前的付費瀏覽在按下付費按鈕,完成付費後,瀏覽器的網址列會出現類似這樣的網址:
http://網址/phpbb/viewtopic.php?mode=pay_ ... 2345#12345

如果會員把這樣的網址張貼出來,其他不知情的會員去點擊,就會被系統視為買帖的動作,錢也就會莫名其妙的捐給賣帖的會員了。

我的想法是,如果能夠更改一下設計,就是假設賣帖的 Post ID 是 12345 ,會員在按下付費按鈕,完成付費後,瀏覽器的網址列出現的不是:

http://網址/phpbb/viewtopic.php?mode=pay_ ... 2345#12345

而是:

http://網址/phpbb/viewtopic.php?p=12345#12345
-------------------------------------------------------------------------------
回答: -by- 依夢兒

謝謝 yuan 兄的指導,問題已經解決了,我整理一下修改方法。


我使用的付費瀏覽是 pay_points 的版本,如果你安裝的是 pay_money 的版本,請自行將以下的 pay_points 更換為 pay_money 。

開啟 viewtopic.php ,搜尋:

$returnurl = '

<a href=' . $temp_url . '> << 返回 >> <a>';

下面加上:

$paymode = ( isset($HTTP_GET_VARS['paymode']) ) ? $HTTP_GET_VARS['paymode'] : $HTTP_POST_VARS['paymode'];

搜尋:

$mode == 'pay_points

覆蓋為:

$paymode == 'pay_points

搜尋:

<input type="submit" name="pay_points" value=" 付錢 " class="mainoption" />

後面加上:

<input type="hidden" name="paymode" value="pay_points" />

搜尋:

mode=pay_points&

將該字串刪除。

最後存檔,完工。


###############################################################################
問題: -by- 拭銀布

可惜按重新整理仍會重複付費的BUG還是不能解決!
這問題可困擾很久了!><

就算是公告提醒會員請勿於付費後按重新整理,但就是有些不長眼的會員還是笨笨的按下去.........唉
-------------------------------------------------------------------------------
回答: -by- 拭銀布

剛試了一下!沒問題了!
在付費後按重新整理不再有二次付費的現象發生!
非常感激yuan前輩!

順道一提:
若有作過依夢兒前輩所整理的修正者,要作yuan前輩所提供的修正請參考以下

搜尋

程式碼:if ( $paymode == 'pay_money' && $p == $postrow[$i]['post_id'] && $userdata['user_id'] > 0 )


替換成:

程式碼:if ( ( $paymode == 'pay_money' && $p == $postrow[$i]['post_id'] && $userdata['user_id'] > 0 ) && !stristr($pay_user,$user_id) )


(使用積分系統者請將 'pay_money' 改為 'pay_points'

###############################################################################
問題: -by- 依夢兒

請問一下,升級至 2.0.10 後,因為我的付費瀏覽修改為 0 元版本。
每一次發表文章的時候,即使已設定 -1 元,發表後仍然會被系統改成 0 元。=.=
目前的解決方法是將心靈捕手所說的 common.php 中的那一段刪除,就恢復正常了。
照您的說法,加上那一段會有問題,是因為外掛使用了全域變數的原故。
那麼付費瀏覽 0 元版本是不是也有類似的問題呢?要如何修正?
-------------------------------------------------------------------------------
回答: -by- 倉木麻衣\r

oh...搞好久終於在自己的 TEST用論壇 上頭搞定了@_@"
底下的修改是給依夢兒大大的(或是那些有修改付費成0元版本的)

#
#-----[ Open ]-----
#

程式碼:
posting.php

#
#-----[ Find ]-----
#

程式碼:
submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length, $pay_money);

#
#-----[ Replace With ]-----
#

程式碼:
submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length, $_POST['pay_money']);

#
#-----[ Find ]-----
#

程式碼:
$pay_money = $post_info['pay_money'];

#
#-----[ Replace With ]-----
#

程式碼:
$pay_money = $_POST['pay_money'];

#
#-----[ Find ]----- \r
#

程式碼:
if ($pay_money != -1) $message = ' ' . $quote_username . ' 寫到:
' . $lang['Paymoney_Cantquote']. '
';

#
#-----[ Replace With ]-----
#

程式碼:
if ($_POST['pay_money'] != -1) $message = ' ' . $quote_username . ' 寫到:
' . $lang['Paymoney_Cantquote']. '
';

#
#-----[ Find ]-----
#

程式碼:
for ($i=-1;$i<=20;$i+=1)
{
if (!isset($pay_money))
{
$pay_money = -1;
}
if ($pay_money == $i )

#
#-----[ Replace With ]-----
#

程式碼:
for ($i=-1;$i<=20;$i+=1)
{
if (!isset($post_info['pay_money']))
{
$post_info['pay_money'] = -1;
}
if ($post_info['pay_money'] == $i )

=============================================
#
#-----[ Open ]-----
#

程式碼:
viewtopic.php

#
#-----[ Find ]-----
#

程式碼:
if ( $mode == 'pay_money' && $p == $postrow[$i]['post_id'] && $userdata['user_id'] > 0 )

#
#-----[ Replace With ]-----
#

程式碼:
if ( $_GET['mode'] == 'pay_money' && $_GET['p'] == $postrow[$i]['post_id'] && $userdata['user_id'] > 0 )

#
#-----[ Find ]-----
#

程式碼:
$sql = "UPDATE " . POSTS_TEXT_TABLE . " SET pay_user = '".$pay_user.$user_id."', pay_see = pay_see + 1, pay_gotmoney = pay_gotmoney + $pay_money WHERE post_id = ".$p;

#
#-----[ Replace With ]-----
#

程式碼:
$sql = "UPDATE " . POSTS_TEXT_TABLE . " SET pay_user = '".$pay_user.$user_id."', pay_see = pay_see + 1, pay_gotmoney = pay_gotmoney + $pay_money WHERE post_id = ".$_GET['p'];

#
#-----[Close/Save All]-----
#
#EoM

###############################################################################
To: 依夢兒

為了安全的考量,
建議您保留 common.php 升級後的那一段.
誠如~倉木麻依~所言:
外掛出問題,
是外掛程式本身撰寫不夠嚴謹,
只要加以補強即可.

如果, 您按照上頭的程式修正"付費瀏覽"時,
應該只要留意將 money 系統換成 point 系統;
還有, 將 viewtopic.php 其中一段:

程式碼:
if ( $mode == 'pay_money' && $p == $postrow[$i]['post_id'] && $userdata['user_id'] > 0 )


換成您之前修正過的

程式碼:
if ( $paymode == 'pay_money' && $p == $postrow[$i]['post_id'] && $userdata['user_id'] > 0 )


其餘只要複製 / 貼上即可, 應該難不倒您的!

-------------------------------------------------------------------------------
To: 依夢兒

我原本以為"付費瀏覽"已經沒問題了,原來還是有一點小毛病.
(其實, 這可能是之前有按照~依夢兒~提問 / 修改後才會發生)

上頭的修正, 只是解決了發文時"設定金額跑掉"的問題,
如今, 我在測試後, 發現按下"付錢", 竟然沒有反應?

後來, 經過研究, 只要再做下面修正, 就可以了:

程式碼:
打開 viewtopic.php

#
#-----[ Find ]-----
#

$paymode = ( isset($HTTP_GET_VARS['paymode']) ) ? $HTTP_GET_VARS['paymode'] : $HTTP_POST_VARS['paymode'];

#
#-----[ Replace With ]-----
#

$_GET['paymode'] = ( isset($HTTP_GET_VARS['paymode']) ) ? $HTTP_GET_VARS['paymode'] : $HTTP_POST_VARS['paymode'];

###############################################################################
修正: -by- 倉木麻依

上回的付費外掛 posting.php 有一個地方有問題
原文章中提到
#
#----------[ Find ]----------
#
if ($pay_money != -1) $message = '

#
#----------[ Replace With ]----------
#
if ($_POST['pay_money'] != -1) $message = '

請修正為
#
#----------[ Replace With ]----------
#
if ($post_info['pay_money'] != -1) $message = '

否則, 直接按下「引言」的話(非改良型引言鈕)
不論所引用的文章是否需要付費?
都會出現「原文需要付費才能觀看, 無法引用」的訊息.

另外, 同樣是在 posting.php
建議再做底下的小修改,
這樣, 在按下"引言"後, 回覆的文章, 將預設為付費 -1 元,
而不是依照被引言的文章, 所設定的付費金額.

程式碼:
#
#----------[ Open ]----------
#
posting.php

#
#----------[ Find ]----------
#
if ($post_info['pay_money'] == $i)

#
#----------[ Replace With ]----------
#
if ($post_info['pay_money'] == $i && $_GET['mode'] != 'quote')

#
#----------[ Save/Close All ]----------
#

###############################################################################
補充說明: -by- 心靈捕手 http://220.134.232.37

問題:
現金不足時, 按[返回], 沒有反應.

解答:
修改
viewtopic.php

如下:

#
#-----[ OPEN ]---------------------------------------------
#
viewtopic.php

#
#-----[ FIND ]---------------------------------------------
#
$temp_url = append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $postrow[$i]['post_id'] . "#" . $postrow[$i]['post_id']);
$returnurl = '<br><br><a href=' . $temp_url . '> << 返回 >> <a>';

#
#-----[ REPLACE WITH ]---------------------------------------------
#
$temp_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=" . $postrow[$i]['topic_id'] . "#" . $postrow[$i]['topic_id']);
$returnurl = '<br><br><a href=' . $temp_url . '> << 返回 >> <a>';

###############################################################################
資料來源: http://phpbb-tw.net/phpbb/viewtopic.php?t=20002
發表人: KCTONY

文章主題: [外掛]付費瀏覽:顯示已付費會員名單

--------------------------------------------------------------------------------

抱歉...一直沒時間改>_<"
趁今晚有空趕快加上 QQ"
試試看吧

原程式 http://phpbb-tw.net/phpbb/viewtopic.php?t=9973

2003/10/09 修正回覆會消失的BUG:
http://phpbb-tw.net/phpbb/viewtopic.php?p=115163#115163

尋找

程式碼:
$message = '<font color="#FF0000">' . $lang['Paymoney_Need'] . $pay_money . $lang['Virtual_Money'] . '</font><br>' . $pay_see . $lang['Paymoney_paysee'] . $postrow[$i]['pay_gotmoney'] . $lang['Virtual_Money'] . ' <BR><form name="pay_money" action='.$temp_url.' method="post">          <input type="submit" name="pay_money" value=" 付錢 " class="mainoption" /></form>';
}
}
在下方
*在 } else { 上方加入喔 別加錯地方

程式碼:
if ($userdata['user_level']==ADMIN||$userdata['user_level']==MOD)
{
$pay_users = split(',id',','.$pay_user.'id');
$see_pay_userselect = "<br />已付費使用者:<select>";
for ($ii=2; $ii<count($pay_users)-1; $ii++){
$see_pay_user = $db->sql_fetchrow($db->sql_query('SELECT username FROM ' . USERS_TABLE . ' WHERE user_id = '.$pay_users[$ii]));
$see_pay_userselect .= "<option>".($ii-1).".".$see_pay_user['username']."</option>";
}
$see_pay_userselect .= "</select>";
$message .= $see_pay_userselect;
}


應該就可以了!!


舉例
本來是

程式碼:
$message = '<font color="#FF0000">' . $lang['Paymoney_Need'] . $pay_money . $lang['Virtual_Money'] . '</font><br>' . $pay_see . $lang['Paymoney_paysee'] . $postrow[$i]['pay_gotmoney'] . $lang['Virtual_Money'] . ' <BR><form name="pay_money" action='.$temp_url.' method="post">          <input type="submit" name="pay_money" value=" 付錢 " class="mainoption" /></form>';
}
}
} else {
$message = $message;
}
}
的話就變成

程式碼:
$message = '<font color="#FF0000">' . $lang['Paymoney_Need'] . $pay_money . $lang['Virtual_Money'] . '</font><br>' . $pay_see . $lang['Paymoney_paysee'] . $postrow[$i]['pay_gotmoney'] . $lang['Virtual_Money'] . ' <BR><form name="pay_money" action='.$temp_url.' method="post">          <input type="submit" name="pay_money" value=" 付錢 " class="mainoption" /></form>';
}
}
if ($userdata['user_level']==ADMIN||$userdata['user_level']==MOD)
{
$pay_users = split(',id',','.$pay_user.'id');
$see_pay_userselect = "<br />已付費使用者:<select>";
for ($ii=2; $ii<count($pay_users)-1; $ii++){
$see_pay_user = $db->sql_fetchrow($db->sql_query('SELECT username FROM ' . USERS_TABLE . ' WHERE user_id = '.$pay_users[$ii]));
$see_pay_userselect .= "<option>".($ii-1).".".$see_pay_user['username']."</option>";
}
$see_pay_userselect .= "</select>";
$message .= $see_pay_userselect;
}
} else {
$message = $message;
}
}

###############################################################################
[/code]
施比受有福,祝福您好運! ^_^
歡迎光臨★★心靈捕手★★ :: 討論區
https://wang5555.dnsfor.me/phpBB3/
拭銀布
星球公民
星球公民
文章: 66
註冊時間: 2003-11-18 19:44
來自: yakuza

文章 拭銀布 »

依夢兒 寫:

代碼: 選擇全部

開啟 viewtopic.php 。

搜尋:

'U_HIDDEN_FORM_FIELDS' => ( ($userdata['user_attachsig']

同一行的後面繼續找到:

. $userdata['session_id'] . '">

在後面加上:

<input type="hidden" name="pay_money" value="-1" />
奇怪了!我這次怎樣找都找不到底下這段耶? 

代碼: 選擇全部

'U_HIDDEN_FORM_FIELDS' => ( ($userdata['user_attachsig']
記得以前改時很成功啊!><

心靈捕手 寫:以下的文章, 也許就是您和 拭銀布 所需要的, 請參考看看:
感激心靈捕手前輩的支援,找到重新整理重複付費修正了!^^
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

文章 依夢兒 »

拭銀布 寫:奇怪了!我這次怎樣找都找不到底下這段耶? 

代碼: 選擇全部

'U_HIDDEN_FORM_FIELDS' => ( ($userdata['user_attachsig']
記得以前改時很成功啊!><
是我搞錯了,我樓上發表的那一篇是 0 元付費瀏覽關於 Quick Reply 快速回覆的修正。
如果你有安裝快速回覆,就要進行上面那一篇的修改,不然每一次使用快速回覆回文都會變成收錢的文章。

下面這一段應該就是 0 元付費瀏覽的主外掛沒錯。(請視自己的情況將 money 改成 points )

代碼: 選擇全部

SQL 語法:
ALTER TABLE `phpbb_posts_text` CHANGE `pay_money` `pay_money` MEDIUMINT( 8 ) DEFAULT '-1' NOT NULL
(更改 pay_money 的型別以存放 -1 的值)

update phpbb_posts_text SET pay_money = -1 WHERE pay_money = 0
(把已經存在的文章的 pay_money 的值從 0 改為 -1)


打開 posting.php
搜尋
if ($pay_money != 0) $message = '[quote="' . $quote_username . '"]' . $lang['Paymoney_Cantquote']. '[/quote]';
改成
if ($pay_money != -1) $message = '[quote="' . $quote_username . '"]' . $lang['Paymoney_Cantquote']. '[/quote]';

搜尋
for ($i=0;$i<=20;$i+=1)
{

改成
for ($i=-1;$i<=20;$i+=1)
{
if (!isset($pay_money))
{
$pay_money = -1;
}


打開 search.php
搜尋
if ($searchset[$i]['pay_money'] > 0)
改成
if ($searchset[$i]['pay_money'] != -1)


打開 viewtopic.php
搜尋
if($pay_money > 0)
改成
if($pay_money != -1)

--------------------

如果有裝友善列印\r
打開 printview.php
搜尋
if ($postrow[$i]['pay_money'] > 0)
改成
if ($postrow[$i]['pay_money'] != -1)


打開 includes/topic_review.php
搜尋
if ($row['pay_money'] > 0)
改成
if ($row['pay_money'] != -1)
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
主題已鎖定

回到「外掛問題討論」