跳到主要內容

發表文章

目前顯示的是 11月, 2021的文章

Xoops->logcounterx流量統計模組系統分析增加Windows10設定-教學撰寫:徐嘉裕Neil hsu

logcounterx是日本人開發專門分析網站流量的Xoops模組,不過近幾年似乎沒有更新版本發佈,所以模組系統分析還停留在Windows7,好像是時光暫停了一樣!! 這樣就失去系統分析的意義了,既然沒人要維護只好自己加上Windows10的分析設定,分法如下: 1,找到以下檔案,用筆記本打開 ../../modules/logcounterx/include/functions.php 2、搜尋 Windows7 找到以下程式  if (preg_match('/Windows NT 6\.1/i', $agent) || preg_match('/WinNT 6\.1/i', $agent)) { return 'Windows7'; } 3.在搜尋Windows7程式下面再加上Windows10的程式碼 (紅字部分)  if (preg_match('/Windows NT 6\.1/i', $agent) || preg_match('/WinNT 6\.1/i', $agent)) { return ' Windows7 '; } if (preg_match('/Windows NT 10\.0/i', $agent) || preg_match('/Win64\.0/i', $agent)) { return 'Windows10'; } 存檔後,前往模組首頁系統分析就會顯示Windows10的數據了 這樣就完成logcounterx流量統計模組系統分析增加Windows10設定,有需要的朋友參考看看! 備註說明:logcounterx模組的log是紀錄user瀏覽器當日IP不做重複紀錄,所以如果修改好程式需要測試請用今日內尚未開啟網站的瀏覽器測試才會有數據(例如Edge已被紀錄就用Chrome測試) 工作心的撰寫: 徐嘉裕 Neil hsu

PHP8.0->TypeError: count(): Argument 的解決方法-教學撰寫:徐嘉裕Neil hsu

在PHP8.0中count()函數增加了必須要有 傳遞參數 不能為無效值,否則就會出現 TypeError: count(): Argument 的錯誤訊息 只需要調整一下架構即可 PHP8.0範例count() //正常  count()有 傳遞 參數 $a[0] = 1; $a[1] = 3; $a[2] = 5; echo count($a); //錯誤 count()沒有 傳遞 參數 /*$a[0] = 1; $a[1] = 3; $a[2] = 5;*/ echo count($a); //解決方法A  用is_array()判斷 傳遞 參數是否有值且為陣列 $a = is_array($a) ? count($a) : 0 ; echo $a; //解決方法B  在if中使用is_array()判斷 傳遞 參數是否有值且為陣列 if(is_array($a) && count($a)!=0){ echo count($a); } echo count($a); 這兩個方法都能解決TypeError: count(): Argument 的問題,有需要的朋友參考看看 工作心得撰寫: 徐嘉裕 Neil hsu

Xoops做一個php8.0下載多檔打包壓縮成ZIP格式方法

之前寫過一篇【 Xoops做一個php下載多檔打包壓縮成ZIP格式方法 】工作心得,不過那方法在PHP8.0中無法使用,原因是new ZipArchive必須要先有實體的zip檔才能實體化,否則會出現 ValueError: ZipArchive::open(): Argument #1 ($filename) cannot be empty 錯誤訊息,必須修改new ZipArchive寫法在$zip->open之前就先建立一個暫存的zip檔,這樣後面的程式就沒問題了,修改方法如下 ※原本的new ZipArchive code function zipArchivefunction($url="",$zipname="",$temp="){ //$url 檔案原始路徑+檔名(陣列格式) //$zipname zip檔案名稱 //$temp 檔案暫存路徑+檔名 $zip = new ZipArchive; $zip->open($temp, ZipArchive::CREATE); //$url檔案路徑迴圈加入zip中 foreach ($url as $file) { $new_filename = substr($file, strrpos($file, '/') + 1); //重新定義壓縮檔路徑 $zip->addFile($file, $new_filename); } $zip->close(); /********使用header命令php下載zip檔************/ header('Content-Type: application/zip'); //指定類型 header("Content-type: ".filetype("$temp")); //指定下載時的檔名 header("Content-Disposition: attachment; filename=".$zipname.""); //輸出下載的內容。 readfile($temp); unlink($temp); //刪除暫存檔 } ※ php8.0修改過後的new Z

Xoops做一個php8.0下載檔案自動壓縮成ZIP格式方法-教學撰寫:徐嘉裕Neil hsu

之前寫過一篇【 Xoops做一個php下載檔案自動壓縮成ZIP格式方法 】工作心得,不過那方法在PHP8.0中無法使用,原因是new ZipArchive必須要先有實體的zip檔才能實體化,否則會出現 ValueError: ZipArchive::open(): Argument #1 ($filename) cannot be empty  錯誤訊息,必須修改new ZipArchive寫法在$zip->open之前就先建立一個暫存的zip檔,這樣後面的程式就沒問題了,修改方法如下 ※原本的new ZipArchive code function zipArchivefunction($url="",$zipname="",$temp=""){ //$url 檔案原始路徑+檔名 //$zipname 檔案名稱 //$temp 檔案暫存路徑+檔名 /********利用ZipArchive產生壓縮檔************/ $zip = new ZipArchive; $zip->open($temp, ZipArchive::CREATE); //$zip->addFile($dir); //添加檔案 (若有大量檔案可使用迴圈) $new_filename = substr($url, strrpos($url, '/') + 1); //重新定義壓縮檔路徑 $zip->addFile($url, $new_filename); $zip->close(); /********使用header命令php下載zip檔************/ header('Content-Type: application/zip'); //指定類型 header("Content-type: ".filetype("$temp")); //指定下載時的檔名 header("Content-Disposition: attachment; filename=".$zipname.""); //輸出下載的內容。 readfile($temp); unlink($temp);

XAMPP8.0 須於php.ini啟用gd圖形庫-教學撰寫:徐嘉裕Neil hsu

PHP8.0之後GD圖形庫被更名為extension=gd,預設是被註解掉的需要手動啟用,不過還好XAMPP8.0本身有GD圖形庫不須另外安裝,因此只需要修改php.ini啟用GD,方法如下: 找到php.ini用筆記本打開 c:\xampp\php\php.ini 搜尋 extension=gd 會找到 #extension=gd 吧前面的 # 號拿掉,然後重新啟用Xampp的Apache即可啟用GD圖形庫,可以用phpinfo();檢查GD圖形庫是否有正常運行 若顯示GD資訊就表示GD圖形庫有正常運作,網站上傳圖片也不會發生異常了,有需要的朋友可以參考看看。 工作心得撰寫: 徐嘉裕 Neil hsu

php8.0使用foreach批次大量接收變數的方法-教學撰寫:徐嘉裕Neil hsu

之前寫過一篇【 php使用each批次大量接收變數 】的工作心得,但PHP8.0之後each()被棄用,原本使用each都會出現以下錯誤 Error: Call to undefined function each()  解決方法就是用foreach替換each,且foreach效能比each快10倍以上,是個不錯的替換方案 替換方法如下說明: //允許傳送變數 $allowvar =array("of_sortid","centerid","enable","arrange","search","type","useruid","post"); 原本的each code //接收變數區 while (list( $var , $value ) = each( $_REQUEST )) { if(in_array($var,$allowvar)){ $$var=trim(isset($value)?$value:""); } } 修改為foreach code //接收變數區 foreach( $_REQUEST as $var => $value ){ if(in_array($var,$allowvar)){  $$var=trim(isset($value)?$value:"");  }  } 只需要吧原本each 紅字 跟 藍字 的變數替換到foreach 紅字 跟 藍字 ,其他程式都不需要更動,這樣就完成替換作業,在php8.0中也能正常運作,有需要的朋友參考看看。 教學撰寫: 徐嘉裕 Neil hsu

寫一個jQuery點擊當前按鈕操作對應區塊並隱藏其他非點擊按鈕對應區塊(類似滑動選單收合效果)-教學撰寫:徐嘉裕Neil hsu

簡單來說,就是作用中的按鈕觸發對應的區塊開啟或關閉,其他非作用中按鈕對應的區塊自動隱藏,類似滑動選單的原理如下圖這樣: 當點擊按鈕1時開啟區塊1,若再次點擊按鈕1則區塊1隱藏(收合) 當點擊按鈕2時開啟區塊2,並吧按鈕1的區塊隱藏,這樣就會一值保持只有一個被點擊的按鈕在操作區塊開啟或隱藏 code如下 //html結構 <a type='button' class=' openbtn1 btn btn-md btn-info active openadmin'>按鈕1</a> <div class= 'openbox1 openboxArr'>區塊1區塊1區塊1</div> <a type='button' class=' openbtn2 btn btn-md btn-info active openadmin'>按鈕2</a> <div class=' openbox2 openboxArr'>區塊2區塊2區塊2</div> <script>nopenadminfunction();</script> //js code function nopenadminfunction() { $('.openboxArr').hide(); $(".openadmin").each(function(index) { var $topindex = index; var $openbtn = '.openbtn' + (index + 1); var $openbox = '.openbox' + (index + 1); $("body").on("click", $openbtn, function(e) { //非點擊區隱藏內容 $(".openboxArr").each(function(index) { if ($topinde