跳到主要內容

發表文章

目前顯示的是 9月, 2022的文章

Xoops模組開發->區塊開發->區塊執行函式增加傳遞第二參數功能-教學撰寫:徐嘉裕Neil hsu

在開發Xoops區塊的時候,我們會吧區塊編輯函式(block_edit)的設定值放在options陣列裡面,送出後以字串形式儲存在newblocks資料表的options欄位中, 然後在區塊執行函式(block_show)使用$options陣列來取得設定值,但由於Xoops限制區塊執行函式只能取用options欄位的設定值,其他的像是bid,name,title欄位都是無法取得數值,若是我們需要取用bid來做前台js資料區隔就沒辦法,解決方案只有修改kernel/block.php->$show_func涵式,增加第二傳遞參數功能,吧整個$this都送入$show_func涵式,這樣在模組區塊中就能調用到newblocks資料表全部數值了,方法如下。 1、開啟kernel/block.php檔案,用文字編輯器找到481行       $block   = $show_func($options); 2、修改為 $block   = $show_func($options ,$this ); 3、模組區塊執行函式增加第二參數 function 模組ID_block_show($options ,$thisvar ){ 略.......... } 注意:模組區塊執行函式第二參數請勿用$this命名變數 4、如果要取用bid值輸出樣板,$block['bid']=$thisvar->getVar('bid'); 5、在模組樣板上使用<{$block.bid}>即可 6、>getVar(' 可輸入任何newblocks資料表的欄位名稱 ') 這樣就可以了,複製區塊一樣能抓到數值,有需要的朋友參考看看!! 工作心得分享: 徐嘉裕 Neil hsu

php多檔上傳檢測檔案類型MIME白名單的方法-教學撰寫:徐嘉裕Neil hsu

通常要檢測上傳檔案白名單可以用副檔名來檢測,不過副檔名是可以變造的,最常見的就是勒索病毒,比較安全的方法用上傳檔案的MIME來檢測,這樣就算變造過的副檔名一樣會被檢測出來,防止伺服器被駭,方法如下: foreach($_FILES['fileval']['tmp_name'] as $i=> $val){ //檢測文件的 MIME 內容類型 $mime_type = mime_content_type($val); //可上傳MIME類型JPG,PNG,GIF,Word,Excel,PowerPoint,pdf //可再增加MIME類型 $allowed_file_types = ['image/png', 'image/jpeg','image/gif','application/msword','application/vnd.ms-excel','application/vnd.ms-powerpoint','application/pdf','application/vnd.openxmlformats-officedocument.presentationml.presentation','application/vnd.openxmlformats-officedocument.wordprocessingml.document','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']; if (!in_array($mime_type, $allowed_file_types)) { $failed.=$_FILES['fileval']["name"][$i].','; } } if(!empty($failed)){ echo '您上傳的檔案'.$failed.'不符合上傳規定'; exit; } 只要不是在上傳白名單中的檔案都會終止程式,也可以做導向返回首頁,讓檔案