這問題以前曾問過伊夢兒前輩,但百般搜尋後卻苦尋不著,可能之前竹貓被攻擊流失掉了><~
還有像是按付費後按重新整理會重複付費的修正也不見了!
能否請伊夢兒前輩能在指導一次嗎?感激不盡^^
[問題]關於付費瀏覽收費值預設為-1
版主: 版主管理群
拭銀布 寫:這問題以前曾問過伊夢兒前輩,但百般搜尋後卻苦尋不著,可能之前竹貓被攻擊流失掉了><~
代碼: 選擇全部
開啟 viewtopic.php 。
搜尋:
'U_HIDDEN_FORM_FIELDS' => ( ($userdata['user_attachsig']
同一行的後面繼續找到:
. $userdata['session_id'] . '">
在後面加上:
<input type="hidden" name="pay_money" value="-1" />
糟糕,這一篇我自己也不知道要怎麼改.... Orz拭銀布 寫:還有像是按付費後按重新整理會重複付費的修正也不見了!
我也忘了之前是哪一位指導修正的.... Orz
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。
搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。
搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
最近, 個人因為在忙"網界博覽會", 也就比較少參與討論...依夢兒 寫:拭銀布 寫:這問題以前曾問過伊夢兒前輩,但百般搜尋後卻苦尋不著,可能之前竹貓被攻擊流失掉了><~代碼: 選擇全部
開啟 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(
在前面加入
代碼: 選擇全部
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]
奇怪了!我這次怎樣找都找不到底下這段耶?依夢兒 寫:代碼: 選擇全部
開啟 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']
感激心靈捕手前輩的支援,找到重新整理重複付費修正了!^^心靈捕手 寫:以下的文章, 也許就是您和 拭銀布 所需要的, 請參考看看:
是我搞錯了,我樓上發表的那一篇是 0 元付費瀏覽關於 Quick Reply 快速回覆的修正。拭銀布 寫:奇怪了!我這次怎樣找都找不到底下這段耶?記得以前改時很成功啊!><代碼: 選擇全部
'U_HIDDEN_FORM_FIELDS' => ( ($userdata['user_attachsig']
如果你有安裝快速回覆,就要進行上面那一篇的修改,不然每一次使用快速回覆回文都會變成收錢的文章。
下面這一段應該就是 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 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。
搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。
搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。