樓主
|
發表於 2016-1-4 18:21:02
|
顯示全部樓層
本文章最後由 moripi 於 2016-1-4 06:59 PM 編輯
自方案發表後, 由wish大移至正式主機後, 一直發生在魔的機器上無法重現的問題...
由於魔是在 Windows 下使用 PHP 5.5 測試開發的, 但正式主機是使用 CentOS 6.5 PHP 5.3.3,
其測試結果和魔在本機上完全不盡相同...真是搞得魔一個頭兩個大...
這問題是 PHP 5.3.3 的BUG造成的, 還好最後發現了解決方式...{:14_1489:}
也順便把相關代碼再次重新整理一遍, 好讓 Wish大要添加新版區時不用動到太多檔案,
(只要更動下列 JavaScript & PHP版版區 設定就可) ,
這次的跟帖, 就把所有相關的相關代碼再做一次整理貼出來, 也算是對這個階段做一個總結.
最新的方案己由原本 5支更動到7支代碼
.\static\js\common.js (JavaScript 版版區設定) .\static\js\forum.js .\static\js\forum_post.js .\config\config_global.php (PHP 版版區設定) .\source\language\lang_message.php .\source\class\model\model_forum_thread.php .\source\class\model\model_forum_post.php
檢查附圖的規則
上傳附圖檔...[attachimg][/attachimg] 從論壇引用已存在的圖片...[img(=w,h) ][/img](己包含Ultraman大回報的己上傳圖片的拖曳方法) Youtube 影片... 未來如果網站啟用 TLS 的支援
各檔案的修改如下
.\static\js\common.js 打開此檔案後, 直接拉到最下面 2052行左右
if(BROWSER.ie) {
document.documentElement.addBehavior("#default#userdata");
}
複製代碼 在上述這段代碼前加入 BEGIN~END 的檢查函數, 加好後會看到如下的樣子
/* BEGIN */
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var fai = [117, 134, 211, 212, 218, 159, 219, 220, 136, 24,
194, 195, 196, 225, 135, 148, 149, 150, 151, 152,
170, 197, 217, 118, 140, 141, 142, 229, 230, 231,
137, 112, 201, 226, 232, 169];
function validateAttachedImage(text) {
if(in_array(getParameterByName('fid'), fai)) {
var pattern = /\[attachimg\]\d+\[\/attachimg\]|\[(img|img=\d+,\d+)\](http|https)\:\/\/bbs\.pigoo\.com\/(.+)\.(jpe?g|png|gif)\[\/img\]|\[youtube\](.+)\[\/youtube]/img;
var matched = text.match(pattern);
return matched ? matched.length > 0 : false;
}
return true;
}
/* END */
if(BROWSER.ie) {
document.documentElement.addBehavior("#default#userdata");
}
複製代碼
.\static\js\forum.js 打開此檔案後, 大概在 212行會看到如下代碼
if(theform.message.value == '' || theform.subject.value == '') {
s = '抱歉,您尚未輸入標題或內容';
theform.message.focus();
} else if(mb_strlen(theform.subject.value) > 80) {
s = '您的標題超過 80 個字符的限制';
theform.subject.focus();
}
複製代碼 在上述代碼之後加入 BEGIN~END 的代碼如下
if(theform.message.value == '' || theform.subject.value == '') {
s = '抱歉,您尚未輸入標題或內容';
theform.message.focus();
} else if(mb_strlen(theform.subject.value) > 80) {
s = '您的標題超過 80 個字符的限制';
theform.subject.focus();
} /* BEGIN */ else if(!validateAttachedImage(theform.message.value)) {
s = '在本版區發帖,至少需附一張使用本論壇空間,且與內容相關的圖片.';
theform.message.focus();
} /* END */
複製代碼
.\static\js\forum_post.js 打開此檔案後, 大概在 75行會看到如下代碼
if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
showError('抱歉,您尚未輸入標題或內容');
return false;
} else if(mb_strlen(theform.subject.value) > 80) {
showError('您的標題超過 80 個字符的限制');
return false;
}
複製代碼 在上述代碼之後加入 BEGIN~END 的代碼如下
if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {
showError('抱歉,您尚未輸入標題或內容');
return false;
} else if(mb_strlen(theform.subject.value) > 80) {
showError('您的標題超過 80 個字符的限制');
return false;
} /* BEGIN */ else if(!validateAttachedImage(message)) {
showError('在本版區發帖,至少需附一張使用本論壇空間,且與內容相關的圖片.');
return false;
} /* END */
複製代碼
.\source\language\lang_message.php 打開此檔案後, 直接拉到最下面 1076行左右
'noreply_voted_error' => '您已經對此回帖投過票了', 複製代碼 在上述代碼後加入新的 BEGIN~END 訊息 'post_img_isnull'
'noreply_voted_error' => '您已經對此回帖投過票了',
/* BEGIN */
'post_img_isnull' => '在本版區發帖,至少需附一張使用本論壇空間,且與內容相關的圖片',
/* END */
複製代碼
.\source\config\config_global.php 打開此檔案後, 直接拉到最下面, 大概在 91行左右會看到如下代碼
// -------------------------- CONFIG REMOTE --------------------------- //
$_config['remote']['on'] = '0';
$_config['remote']['dir'] = 'remote';
$_config['remote']['appkey'] = '62cf0b3c3e6a4c9468e7216839721d8e';
$_config['remote']['cron'] = '0'; 複製代碼 在上述代碼後插入 BEGIN~END 代碼如下
// -------------------------- CONFIG REMOTE --------------------------- //
$_config['remote']['on'] = '0';
$_config['remote']['dir'] = 'remote';
$_config['remote']['appkey'] = '62cf0b3c3e6a4c9468e7216839721d8e';
$_config['remote']['cron'] = '0';
/* BEGIN */
// --------------------------- PIGOO RULES --------------------------- //
$_config['pigoo']['pattern'] = '/\[attachimg\](\d+)\[\/attachimg\]|\[(img|img=\d+,\d+)\](http|https)\:\/\/bbs\.pigoo\.com\/(.+)\.(jpe?g|png|gif)\[\/img\]|\[youtube\](.+)\[\/youtube\]/im';
$_config['pigoo']['forums'] = array(117, 134, 211, 212, 218, 159, 219, 220, 136, 24,
194, 195, 196, 225, 135, 148, 149, 150, 151, 152,
170, 197, 217, 118, 140, 141, 142, 229, 230, 231,
137, 112, 201, 226, 232, 169);
/* END */
複製代碼
.\source\class\model\model_forum_thread.php 打開此檔案後, 大概在 45行左右會看到如下代碼
if(trim($this->param['subject']) == '') {
return $this->showmessage('post_sm_isnull');
}
if(!$this->param['sortid'] && !$this->param['special'] && trim($this->param['message']) == '') {
return $this->showmessage('post_sm_isnull');
}
複製代碼 在上述代碼兩個 if 區段中間插入 BEGIN~END 代碼如下
if(trim($this->param['subject']) == '') {
return $this->showmessage('post_sm_isnull');
}
if(!$this->param['sortid'] && !$this->param['special'] && trim($this->param['message']) == '') {
return $this->showmessage('post_sm_isnull');
}
/* BEGIN */
if(in_array($this->forum['fid'], getglobal('config/pigoo/forums')) && preg_match(getglobal('config/pigoo/pattern'), $this->param['message']) == 0) {
return $this->showmessage('post_img_isnull');
}
/* END */
複製代碼
.\source\class\model\model_forum_post.php 打開此檔案後, 大概在 367行左右會看到如下代碼
if(!$this->param['sortid'] && !$this->thread['special'] && trim($this->param['message']) == '') {
showmessage('post_sm_isnull');
}
$publishdate = null; 複製代碼 在上述代碼兩個 if 區段中間插入 BEGIN~END 代碼如下
if(!$this->param['sortid'] && !$this->thread['special'] && trim($this->param['message']) == '') {
showmessage('post_sm_isnull');
}
/* PIGOO BEGIN */
if(in_array($this->forum['fid'], getglobal('config/pigoo/forums')) && preg_match(getglobal('config/pigoo/pattern'), $this->param['message']) == 0) {
return $this->showmessage('post_img_isnull');
}
/* PIGOO END */
$publishdate = null; 複製代碼
最後感謝 wish大大半夜的協助魔測試及支持魔的各位痞友先進們~
評分
6
查看全部評分