跳到主要內容

發表文章

目前顯示的是 2017的文章

xoops模組開發->吧陣列改成字串儲存資料庫及吧資料表讀取字串改成陣列的方法-教學撰寫:徐嘉裕Neil hsu

今天幫客戶開發模組時想嘗試看看能否吧PHP陣列數值直接存進資料表中,然後資料表欄位格式是設成varchar,結果還是GG,存進去的欄位數值只顯示一個Array如下圖: 按照老方法是要先吧陣列用foreach解出來在串成 , 變成字串後儲存,不過現在找到一個更方便的方法了,用php的serialize()函數就能直接吧陣列轉成字串然後存進資料表中,之後再用unserialize()吧資料表字串再轉成陣列,非常好用,實際測試看看!! 假設要儲存像這可以多選的checkbox欄位,取值為陣列$gifts[] 然後我們建一個phpconversion的function放在Xoops模組的function.php檔案裡面 //陣列轉字串or字串轉陣列 function phpconversion($conversion="",$type="") { if($type==' serialize '){ //陣列轉字串 $conversion=serialize($conversion); } if($type==' unserialize '){ //字串轉陣列 $conversion=unserialize($conversion); } return $conversion; } 再到要儲存資料表的地方呼叫函數吧$gifts陣列轉成字串 $gifts=phpconversion($conversion=$_POST['gifts'],$type=" serialize "); //紅字可以設為serialize為陣列轉字串 這樣$gifts存進資料表後就會是字串形式!!不會再顯示Array 接者如果要讀取資料表的gifts欄位值,然後轉成陣列的方法如下!! $giftsoid=phpconversion($conversion=$productlimt['gifts'],$type=" unserialize "); //紅字可以設為unserialize 為字串轉陣列 最後再用foreach的$val值就能取出$gi

xoops模組開發->使用遞回解階層資料表的方法-教學撰寫:徐嘉裕Neil hsu

最近在幫客戶開發模組需要寫一個分類功能,之前都是用while迴圈去解,每解一層分類資料就要加一個while迴圈,然後用陣列輸出,這方法雖然好用簡單,但如果分類層級到4級5級,那不就要while回圈4~5次,整個程式會很龐大而且不易維護,所以想說乾脆用遞回來解算了,寫了一個範例請大家參考看看,程式真的精簡很多了,看了也舒服。 假設要解這樣多階層的資料表 方法如下: 1、先在模組的function.php中增加$xoopsDB ->fetchArray($result)迴圈程式,這樣輸入值就能以陣列方式吧全部資料都打包出來。 //查詢資料表while全部數值 function databasetablewhile($dbneme="",$where=""){ global $xoopsDB; $sql = "select * from " . $xoopsDB->prefix($dbneme) . " ".$where.""; $result = $xoopsDB -> query($sql); $i=1; while($keyword= $xoopsDB ->fetchArray($result)){ $keywordArr[$i]=$keyword; $i++; }; return $keywordArr; } 2、在需要顯示內容的php檔案呼叫databasetablewhile函數並給予值參 $dbneme="neilshopsort";  //資料表名稱 $where="  where `of_sortid` = '0' order by  sortidsort  DESC";  //where數值 $sort=databasetablewhile($dbneme,$where); 3、以下為遞回程式,以遞回方法解出neilshopsort資料表中並按照階層排列 //遞回開始 function retorted($dbneme="",$sortid="&qu

xoops模組開發->用while迴圈解$xoopsDB ->fetchArray($result)中資料的方法-教學撰寫:徐嘉裕Neil hsu

fetchArray($result)是個很好用的解迴圈Xoops內建函數,可以直接吧資料表的欄位名稱變成陣列的name值,例如像下面這樣的資料表,要抓紅框中數值。 如果用fetchArray($result)來解只需要 $Array= $xoopsDB ->fetchArray($result) ." where ` nsn  ` = '26'"; echo  $Array[' keywordid ']; 輸出結果就是紅框中的欄位資料數值tad_discuss 但這樣一次只能解一筆資料,如果要吧全部的資料都打包成一個陣列呢,基本上也是可以的,方法如下: //查詢資料表while全部數值 function databasetablewhile($dbneme="",$where=""){ global $xoopsDB; $sql = "select * from " . $xoopsDB->prefix($dbneme) . " ".$where.""; $result = $xoopsDB -> query($sql); $i=1; while($keyword= $xoopsDB ->fetchArray($result)){ $keywordArr[$i]=$keyword; $i++; }; return $keywordArr; } 使用while吧$xoopsDB ->fetchArray($result)包起來跑回圈撈出資料,再用$i值來區分陣列,這樣就能吧整個資料表都打包成一個$keywordArr陣列。 接下來就是解出陣列資料,方法也很簡單,只要用foreach即可 //引入 databasetablewhile函數 $dbneme="neothemeskeyword"; //資料表名稱 $where=" order by nsn DESC"; //where內容 $keyword=databasetablewhile($dbn

jquery.datepicker下拉月曆完整格式(年/月/日/時/分/秒)->Xoops模組開發-教學撰寫:徐嘉裕Neil hsu

客戶要做一個可以選擇時間的選項功能,要能輸入完整的(年/月/日/時/分/秒)格式,本來想用html5原生的 type='datetime-local' 來做,誰知道偏偏IE不支援type='datetime-local' 的input,只能在 Chrome瀏覽器中運作,這樣一定會被客戶打槍......想說之前有用了一個jquery.datepicker下拉月曆還滿好用的,也寫了一個建置jquery.datepicker下拉月曆的教學,有興趣的朋友可以參考看看。 http://neohsuxoops.blogspot.tw/2017/02/jquerydatepicker.html 但是問題來了,這個datepicker下拉月曆只有年月日阿,沒有時分秒,這樣還是沒辦法達成客戶的需求,只好又來求助估狗大神,看有沒有解決方法,後來找到有人在網路上分享一個jQuery UI 日期選擇的套件JS檔,經過測試的確是能顯示完整的 (年/月/日/時/分/秒)格式如下圖: 下面還有捲軸能拉動時/分/秒的數值,真的分常好用,如需要在Xoops模組中使用的方法如下說明!! 1、先於模組根目錄中建立一個js資料夾,然後下載datepicker下拉月曆套件 (已中文化) ,吧檔案解壓縮後放到js資料夾中! https://drive.google.com/file/d/1z7Bqfxd3v4_hQEFTtb8R2GNwkX8MjZyi/view?usp=sharing 2、於模組php檔案中增加以下的檔頭js及css引入設定 //檔頭輸出 global $xoopsModule; $xoopsTpl->assign('xoops_module_header', " <script src='http://code.jquery.com/jquery-1.10.2.js'></script> <script src='http://code.jquery.com/ui/1.11.4/jquery-ui.js'></script> <script src='" . XOOPS

使用empty判斷$_FILES['value']是否為空值的方法-教學撰寫:徐嘉裕Neil hsu

最近幫客戶寫了一個檔案上傳的功能,想要做個empty判斷確認是否有上傳檔案,有值才要進行後續的程式運作,像這樣的功能!! 結構  <input type='file' class='form-control' name='class_excelname' id='class_excelname' accept='xls'>  寫了一個判斷語法 if(!empty($_FILES['class_excelname'])){ //判斷是否有傳入值 echo '有檔案上傳;; } 但怎麼測試即使沒有上傳檔案empty還是判斷有值,真是非常的奇怪,$_FILES['class_excelname']明明就是空的阿!!那是哪出問題了,後來用var_dump();看了一下$_FILES['class_excelname']裡面到底有什麼東東,顯示下面的內容! array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } 原來在$_FILES裡面還包含了name,type,tmp_name,error,size五個欄位數值,所以是二維陣列形式,難怪判斷$_FILES['class_excelname']會顯示有值,因為裡面還有個空陣列! 修改一下,改成 if(!empty($_FILES['class_excelname']['name'])){ //判斷是否有傳入值 echo '有檔案上傳;; } 抓第二層陣列裡面的name來判斷是否有數值,這樣就沒問題了!!可以正確的判斷出是否有檔案被上傳。 如果是多檔上傳name是陣列格式,則判斷空陣

Xoops模組開發->用PHPExcel套件匯出Mysql資料表內容存成Excel檔的方法-教學撰寫:徐嘉裕Neil hsu

所謂有近就有出,PHPExcel套件既然能讀取Excel檔寫入Mysql資料表中,那當然也能吧Mysql資料表中的內容匯出成Excel檔,這部分還是要感謝 tad吳弘凱 老師在出版的 【 實戰PHP7 】 一書所提到的PHPExcel套件匯出Mysql資料表使用方法,我只是吧他應用在Xoops模組開發上,寫了一個工作心得紀錄以方便日後查詢,有需要的朋友可以參考看看或是可以去買那本書有更詳盡的匯出格式排版教學。 1、於模組根目錄建立一個excel.php檔, (很重要) 這支檔必須為獨立運作檔,不能由後台ui介面程式include引入,這樣會連同模組後台的佈景的檔頭表頭一起執行,導致匯出的.xls檔編碼格式全部出錯(如下圖),所以excel.php檔一定要用連結方式開啟,不能作成function然後同頁面呼叫這樣會出錯的。 2、於excel.php檔中引入以下檔案 /*-----------引入檔案區--------------*/ include_once "header.php"; require_once TADTOOLS_PATH . '/PHPExcel.php'; //引入 PHPExcel 物件庫 require_once TADTOOLS_PATH . '/PHPExcel/IOFactory.php'; //引入 PHPExcel_IOFactory 物件庫 備註說明: header.php 中必須要有引入 mainfile.php 及 tad_function.php 這兩支檔才行,這樣資料庫語法及語言檔跟TADTOOLS變數才能使用,如果您的header.php中沒有引入這兩支檔,請加上以下的引入語法。 include_once "../../mainfile.php";  //一定要引入的XOOPS網站設定檔 include_once XOOPS_ROOT_PATH."/modules/tadtools/tad_function.php";  //引入TadTools的函式庫 3、於excel.php檔中貼上以下的PHPExcel套件匯出Mysql資料表為Excel檔的程式CO

Xoops模組開發->用PHPExcel套件讀取Excel內容後存入資料表的方法-教學撰寫:徐嘉裕Neil hsu

最近客戶要寫一個能匯入Excel檔案並存入資料表功能的模組,幾年前有寫過但還是用.csv格式的,沒辦法用.xlsx格式讀取,php程式也很老舊了,想說砍掉重練好了,這裡立馬想到 tad 老師在【 實戰PHP7 】一書中有提到可以用PHPExcel套件匯出資料表中的內容存成.xlsx檔,但沒提到讀取的部分,不過已經有好的開始是成功的一半,至少不用走冤枉路,這裡要向 TAD吳弘凱 老師致上十二萬分的敬意,太感謝您了。 經過上網查詢PHPExcel套件的使用方法,寫了一用PHPExcel套件讀取Excel內容後存入資料表的方法,大家參考看看喔!! 這裡還是要感謝 tad 老師,因為老師開發的tadtools模組裡面就已經有PHPExcel套件了,而且還是最新版,只要引入檔案就能使用了。 1、先引入PHPExcel.php,在模組上方中貼上以下引入路徑 require_once TADTOOLS_PATH . '/PHPExcel.php'; //引入 PHPExcel 物件庫 備註說明 TADTOOLS_PATH 是直接指向tadtools的常數,如果有再function.php中引入 include_once XOOPS_ROOT_PATH."/modules/tadtools/tad_function.php"; 就能使用 TADTOOLS_PATH常數 2、加上編碼指定 header("Content-Type:text/html; charset=utf-8"); 3、要讀取Excel的欄位共有三欄,分別是學生姓名,學號,座號 表頭不要儲存 ,然後存入資料表的student_name,student_number,student_seatnumber三個欄位中。 4、code如下說明: function buildPHPExcel($excelname=""){ global $xoopsDB,$xoopsModule; //需要global物件 //$excelname為檔名由buildPHPExcel()外部傳入 //讀取Excel檔案位置 $file = XOOPS_ROOT_PATH.'/uploa

Xoops布景開發->用js做一個判斷某區塊最大寬度並均分其他區塊寬度的方法!!-教學撰寫:徐嘉裕Neil hsu

最近幫客戶開發xoops佈景遇到一個功能需求,就是假設上方有4個區塊,當其中一個區塊的寬度大於預設值時,該區塊寬度將大於其他三個區塊,其他三個區塊均分剩下的寬度,反之如果四個區塊預設大小都沒超過預設寬度,則四個區塊都套用均分寬度,這樣講大家可能會搞不清楚我要說什麼碗糕,直接截圖給大家看比較快!!。 當四個區塊中有一個區塊寬度大於預設值時 (紅框) ,該區塊寬度會大於其他三個區塊!! 如果四個區塊預設寬度都沒大於預設值時,則套用均分寬度! 本來想說用css的min-width或是max-width因該就能做出這效果了,但事情往往不是像所想的那樣簡單,經過反覆測試最後還是要用js來做計算判斷才行,所以寫了一個js程式包括佈景結構跟css部分,有需要的朋友參考看看。 js程式部分 可以先建立一個.js檔然後在佈景上head引入,之後是程式部分 (藍字可改) $(document).ready(function(){ var $i=0; var $blockdivlength=$("#leftbox .blockdiv").length; var $leftbox=$("#leftbox").height(); $(".leftwidth").each(function(index) { var index=index+1; $leftwidth =$(".left"+index+"").width(); //高度設定 $(".left"+index+"").css("min-height", $leftbox+"px"); //寬度判斷--480為寬度的預設值,小於480寬度區塊套用min-width:256px設定 if($leftwidth<' 480 '){ $i=$i+1; $(".left"+index+"").css("min-width", " 256px "); }else

在CentOS7上安裝XAMPP並設定允許外部連線phpmyadmin的方法-教學撰寫:徐嘉裕Neil hsu

XAMPP有也是可以在CentOS7上安裝的,裝好之後預設是只有本機(localhost)才能進入phpmyadmin,如果使用外部IP或網址則會顯示以下畫面 要請你去修改 httpd-xampp.conf 這支檔,之前是有寫過在windows上安裝Xampp修改httpd-xampp.conf的教學,如果您是在windows上安裝Xampp請參考這篇教學 http://neodw.com/neil/modules/tadnews/index.php?nsn=114#A 如果是在CentOS7上安裝則修改方式略有不同,方法如下: 1、找到以下路徑檔案,用筆記本打開編輯 /opt/lampp/etc/extra/httpd-xampp.conf 2、找到以下檔案 # since XAMPP 1.4.3 <Directory "/opt/lampp/phpmyadmin"> AllowOverride AuthConfig Limit Require local ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var </Directory> 替換成以下的設定 <Directory "/opt/lampp/phpmyadmin"> AllowOverride AuthConfig Limit Order allow,deny Allow from all Require all granted ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var </Directory> 存檔後,需要重啟伺服器,請用ssh遠端連線或直接在CentOS輸入以下指令 /opt/lampp/xampp restart 如重啟伺服器成功,會出現以下畫面 之後再進入phpmyadmin就會顯示內容了。 如需設定root的密碼請參考這篇教學 http://neohsuxoops.blogspot.tw/2017/10/xamppmysqlphpmyadmin.html 教學撰寫: 徐嘉裕

CentOS 6X升級PHP5.6版本的方法(包含GD圖形庫)-教學撰寫:徐嘉裕Neil hsu

今天客戶回報說tadgallery相簿的上傳功能有問題,出現HTTP500錯誤,奇怪我在本地端測都是正常的,哪有什麼HTTP500錯誤,又不是七月半見鬼了,結果去客戶網站測還真的上傳圖片出現HTTP500錯誤,開PHP除錯也沒問題啊,客戶的PHP版本是5.63因該也OK的阿,檢查了一下phpinfo.php結果發現客戶居然沒裝 GD圖形庫 ,難怪圖片上傳會出錯,後來才知道客戶是用CentOS 6X預設的PHP版本PHP5.3去升級的,但沒用到包含GD圖形庫的升級包,所以才會出現這樣的問題,好人做到底只好幫客戶升級PHP版本包含GD圖形庫的,完成升級後在測試圖片上傳功能就都正常了,沒出現HTTP500錯誤,升級CentOS 6X PHP方法如下: 1、先用SSH連線進入客戶端主機 2、輸入以下指令下載PHP升級檔 wget http://rpms.famillecollet.com/enterprise/6/remi/x86_64/php56-php-mcrypt-5.6.31-1.el6.remi.x86_64.rpm 分開輸入 wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 分開輸入 rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm 3、如果以上操作都成功,進到FTP中找到以下檔案,用筆記本打開編輯 remi.repo這隻檔案 搜尋[remi]檔案,enabled預設是0,改為1啟用 [remi] name=Remi's RPM repository for Enterprise Linux 6 - $basearch #baseurl=http://rpms.remirepo.net/enterprise/6/remi/$basearch/ #mirrorlist=https://rpms.remirepo.net/enterprise/6/remi/httpsmirror mirrorlist=http://rpms.remirepo.net/enterprise/6/remi/mirror enabled=1 gpgcheck=1 gpgkey=file:///et

解決CentOS 6X安裝PHP升級檔出現Error: xz compression not available的方法-教學撰寫:徐嘉裕Neil hsu

今天在幫客戶升級PHP版本時一直失敗,被卡在Error: xz compression not available,因為CentOS 6X本來就不支援xz 解壓縮方法,所以下載回來的更新檔自然無法解壓縮及安裝,上網查了很多方法嘗試都無效,最後終於找到以下的方法,安裝epel6套件後問題就能解決了,方法如下: 1、先用SSH連線進入遠端主機。 2、輸入以下指令下載epel6套件: wget http://ftp.riken.jp/Linux/fedora/epel/epel-release-latest-6.noarch.rpm 3、卸载epel-release-latest-7.noarch.rpm輸入以下指令: yum remove epel-release 4、清空epel目錄輸入以下指令: rm -rf /var/cache/yum/x86_64/6/epel/ 5、安装epel6輸入以下指令: rpm -ivh epel-release-latest-6.noarch.rpm 之後再下載rpm包回來就都能夠跑的起來了,有需要的朋友參考看看!! 參考資料來源: http://blog.csdn.net/u014028392/article/details/70830998 教學撰寫: 徐嘉裕 Neil hsu

Xoops免費佈景:neilambilight2.5正式版釋出-佈景設計開發:徐嘉裕Neil hsu

neilambilight2.5正式版發佈了,本次更新主要以修正結構樣式上及功能上的一些問題,以及更換跑馬燈套件避免與TAD模組的JQUERY衝突,另外增加了註冊頁面防機器人設置,以及網站自動放大功能,詳細更新項目如下條列: neilambilight2.5 更新內容 ============================== 1、於電腦介面跟手機瀏覽介面的網站選單中增加一個連到Xoops維護的按鈕(管理員才會看到),便於管理者清除網站暫存檔跟維護資料表操作。 2、修正手機板主選單按鈕如果是帶連結按鈕位置會往下顯示的css問題。 3、修改手機介面跟電腦介面主選單字體,由原本預設微軟正黑體改為Google網路字體cwTeXHei,增加視覺美感。 4、自訂多層選單增加tadnews模組標籤分類的焦點功能$tag_sn 5、更換佈景跑馬燈JS套件(電腦版 and 手機板),解決與tadnews新聞區塊跑馬燈js衝突問題。 6、使用媒體查詢技術RWD(zoom,-moz-transform)針對1440->1920解析度自動放大網站到滿版,左右不留白邊,元件跟字體圖片也自動放大。 7、於佈景中引入profile模組的會員註冊頁面樣板(profile_form.tpl),並加上防止機器人註冊js+php+ajax驗證程式(隨機瑪認證模式),就算吧瀏覽器的js功能關閉只要是機器人一樣無法註冊成功,可以有效防止垃圾帳號的建立問題(需安裝profile會員管理模組才行使用此項功能)。 8、調整手機板profile模組的CSS樣式。 9、捨棄RWD放大網站的方法,改用另外撰寫JS+AJAX+PHP程式針對1440以上的所有解析度包括筆電或自訂解析度計算後做網站自動無上限放大效果(解析度有多大網站就放多大)。 10、佈景前台增加因未按照安裝流程吧neilambilight加入tadtools的程序,導致出現空白畫面的,增加前往後台加入tadtools的文字與連結說明。 11、修正電腦介面跟手機介面FB簡訊title提示內容錯誤問題(顯示到LINE提示內容) 12、修正手機介面主選單按鈕如果有帶連結,則無法開啟子選單的問題,修正第一層跟第二層選單問題,並增加開啟底層選單圖示(如果底層選單有子選單才會顯示)。 13、圖片播放器及按鈕圖片增加刪除資料時,資

使用google文件吧圖檔中文字變成文字格式的方法-教學撰寫:徐嘉裕Neil hsu

最近在幫客戶編輯簡介頁面時遇到一個問題,就是客戶提供的簡介資料是一張圖檔,裡面有很多文字內容,像這樣的格式: http://163.30.68.129/xoops2/principal.php 如果要重新打字以我用微軟新注音至少要打1個多小時才打得完,真是昏倒,如果能有什麼魔法能吧圖檔中文字變成文字這樣就不用重新再key一次了,上網Google一下發現一個不錯的方法,利用google文件功能就能吧圖檔中的文字分離出來了,真的是不錯分享給大家: 1、先吧檔案上傳到Google雲端硬碟中 2、然後點選檔案,點選滑鼠右鍵選擇->開啟工具->選擇Google文件 3、開啟檔案後,圖片中文字就會被抽離出來變成文字格式(可複製貼上) 雖然格式是亂掉的,但總比還要再key一次來的快阿,排一排改一下錯字就好了,真的是 感恩估狗大神,讚嘆估狗大神啊 ,等我哪天發了一定送台勞斯萊斯給您的!! 參考資料來源: http://leafto.tw/2014-12-12-14/ 教學撰寫: 徐嘉裕 Neil hsu

xampp隨電腦開機後自動啟動的設定方法-教學撰寫:徐嘉裕Neil hsu

xampp如果沒有做這項設定,那每次啟用電腦就必須點選XAMPP Control Panel然後啟用Apache跟Mysql,如果是工作室用來測試網站的Xampp倒是沒差,但是安裝在客戶端實際上線中的如果沒設定開機自動啟用,萬一客戶電腦windows自動更新後重啟,或是突然停電後重啟,那xampp還要再手動啟用一次,不然網站就是一片空白讀不到資料,所以寫了一個xmapp隨電腦開機後自動啟動的設定方法教學,有需要的朋友參考看看。 1、先關閉XAMPP的Apache跟Mysql功能(點選stop按鈕)。 2、滑鼠滑到XAMPP Control Panel->點選滑鼠右鍵->以系統管理員身分執行->啟用xampp 3、點選Apache前面的x,出現【Click Yes to install the Apache service】視窗,點選yes 4、點選Mysql前面的x,出現【Click Yes to install the MySQL service】視窗,點選yes 5、這樣Apache跟Mysql如果都變成綠色勾勾,表示設定成功,如果有重啟電腦時xampp就會自動啟用Apache跟Mysql功能了。 參考資料: http://www.only1.tw/%E6%9E%B6%E7%AB%99%E6%B5%81%E7%A8%8B/%E8%AE%93%E9%9B%BB%E8%85%A6%E9%96%8B%E6%A9%9F%E5%B0%B1%E8%87%AA%E8%A1%8C%E5%95%9F%E5%8B%95xampp/ 教學撰寫: 徐嘉裕 Neil hsu

利用.htaccess定義一些網站常用的php.ini數值彙整-教學撰寫:徐嘉裕Neil hsu

一般來說虛擬主機都有啟用 mod_rewrite模組功能,所以不需要設定就能使用 .htaccess來定義php.ini的參數內容, 使用 .htaccess的好處是如果網站搬家就不用再改一次php.ini,只要 .htaccess搬過去所有參數都能套用, 如果是自己架的主機,像是xampp套件,或是 apache套件,就要先檢查 mod_rewrite模組是否有被啟用 , 請找到以下檔案,用筆記本打開: apache/ conf/httpd.conf 如果是lampp位置是在 /opt/lampp/etc/httpd.conf 搜尋LoadModule rewrite_module modules/mod_rewrite.so,檢查看看前面是否有#號,如果有#將其去除後重啟 apache伺服器。 這樣表示 mod_rewrite模塊被啟用了,但不代表就能使用 .htaccess,還需要吧 httpd.conf中所有的 AllowOverride設定通通改為 All,預設是 None。 AllowOverride None  ->改為   AllowOverride All  然後重啟 apache伺服器 這樣就能使用 .htaccess來定義php.ini的參數內容,可以在網站根目錄中先建立一個 .htaccess檔,然後用筆記本打開,貼上以下常用的各項參數設定 RewriteEngine On php_value date.timezone 'Asia/Taipei' php_value post_max_size 1000M php_value upload_max_filesize 1000M php_value max_execution_time 6000000 php_value max_input_vars 5000 php_value max_input_time 600 php_value memory_limit -1 php_value default_socket_timeout 600 php_value max_file_uploads 300 DirectoryIndex index.php index.html index.cgi 參數說明

xoops模組區塊開發->判斷資料表中分類欄位user可讀取權限顯示資料內容的方法-教學撰寫:徐嘉裕Neil hsu

最近在幫客戶設計開發網站需要做一個tadnews模組區塊的二次開發,遇到一個問題,就是客戶有針對tadnews的分類設定可讀取的權限,例如->校內公告,只有管理員跟註冊會員才能觀看,訪客是看不到的,所以在區塊開發的時候就要判斷哪些分類是瀏覽者所在權限可以觀看的,哪些是不能看的,例如下面的資料表內容: 校內公告的enable_group欄位有一個(1,2)的字串,其他為空值,按照tadnews模組的設計空值為全部都能觀看不設瀏覽條件,有設條件的必須與Xoops的user所屬群組相符才能觀看,所以校內公告只有管理員跟註冊會員才能觀看,接下來就是要寫段code來判斷user具有瀏覽哪些分類的權限。 模組區塊後台建立分類變數假設為$options[1],共選擇要顯示8個分類 所以區塊主函式接收到的 $options[1]變數值會是 1,2,3,4,5,6,7,8 (資料表的ncsn值) 接下來就是要來判斷user所在的群組跟比對enable_group欄位數值的code(判斷瀏覽權限) global $xoopsDB, $xoTheme,$xoopsUser,$xoopsConfig;  //需要global的全域變數 $mydirname = $options[1] ; /*=======區塊分類瀏覽權限設置============*/ //吧後端傳送過來分類字串接割成陣列,在寫成sql語法的where格式 $optionsval=preg_split('/,/',$mydirname); $optionscount=count($optionsval)-1; foreach($optionsval as $key=> $val){ if($optionscount==$key){ $y=''; }else{ $y='||'; } $Searchfield.="`ncsn`=$val {$y}"; } //查詢tad_news_cate資料表中enable_group數值 $sql = "select ncsn,enable_group from " . $xoopsDB-&

xampp修改phpMyAdmin的MySQL密碼方法-教學撰寫:徐嘉裕Neil hsu

新版的xampp基於安全性考量,已經取消了原本控台修改MySQL密碼的功能,所以安裝好xampp後http://localhost/不用設密碼是可以直接進入phpMyAdmin,但基於網站安全性考量,建議還是修改一下設定root加個密碼會比較安心,至少晚上好睡覺不用擔心網站被駭,設定方法如下: 1、啟用xampp Control Panel,點選My SQL->admin按鈕,開啟phpMyAdmin 2、點選使用者帳號 3、吧兩個紅色的任意帳號選取,勾選下方刪除使用者選項,點選送出! 4、點選最下面的root帳號,點選編輯權限 5、選擇修改密碼,然後輸入2次密碼,再點選執行 6、之後再點選XAMPP的MYSQL進入,會發現無法進入phpMyAdmin中,表示剛剛設定的密碼是有生效了, 但還需要修改config.inc.php檔案填入剛剛改的密碼才行,請找到以下檔案,用筆記本打開。  C:\xampp\phpMyAdmin\config.inc.php /* Authentication type and info */ $cfg['Servers'][$i]['auth_type'] = 'http'; <-改成http $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = ' ●●●●●● ';   <-填入剛剛輸入的密碼 $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['AllowNoPassword'] = true; $cfg['Lang'] = ''; 儲存檔案後,再次進入http://localhost/phpmyadmin/ 就不會被阻擋了,如果是本地端是不需要輸入密碼就能進入的,不過網站是需要填寫

於Xoops佈景中製作一個profile模組註冊頁面的防機器人機制(js+php+ajax)-教學撰寫:徐嘉裕Neil hsu

相信用過Xoops架站的朋友最怕就是遇到機器人了,每天都來註冊產生一大推的垃圾帳號,刪到手都酸了還刪不完,所想以說在佈景中寫一個js+php+ajax的防機器人驗證機制來阻擋垃圾帳號的建立,解決註冊機器人出亂的問題。 範例網站: http://demoweb.neodw.com/themesdemo/modules/profile/register.php 防機器運作方式是這樣,先由js建立10位數的隨機碼,然後透過js建構一個name='verification'欄位取得隨機碼值,另外再透過ajax吧隨機碼值存入$_SESSION['profile_post']中,當user送出表單時所建構的欄位name='verification'會吧數值post到註冊表單的第二頁,然後php會讀取ajax的$_SESSION['profile_post']數值與post過來的$verification核對,如果數值相符則進行後續的註冊流程,若不相符或是$_SESSION['profile_post']為空值則返回首頁顯示【本站不歡迎機器人註冊】的文字,所以就算機器人使用的瀏覽器沒啟用javascript也一樣無法送出註冊會員表單,在第二頁就會被阻擋,資料不會被寫入資料庫中。 製作註冊表單防機器人方法如下 (請先安裝profile會員管理模組) : 1、於Xoops佈景根目錄中建立一個js資料夾(佈景最頂層目錄),然後建立一個anti-robot.js檔,並貼入以下的code /*==========註冊頁面防機器人設置==============*/ /*================產生亂數==================*/ var chars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','