跳到主要內容

發表文章

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

超好用的JQuery圖片放大燈箱效果-FancyBox套件(沒用會後悔喔)-教學撰寫:徐嘉裕Neil hsu

FancyBox是一套非常好用也非常簡單套用的js放大燈箱效果套件,可以單獨使用也能跟其他的js圖片播放器整合,方法超簡單的。 例如像下面這個圖片播放器原本預設功能是滑動下方小縮圖切換播放器大圖 但少了燈箱放大效果,總覺得視覺上不夠吸引人,加上FancyBox套件後點擊小圖就會立刻開啟圖片放大的燈箱效果 然後圖片還能再放大跟上下拉動,並且能左右切換圖片,這樣撥放器就變的更美觀了,大推,以下為FancyBox燈箱套件使用方法! 1、先去FancyBox官網下載套件,或是直接用說明中連結也行! 網址: http://fancyapps.com/fancybox/3/ 2、於需要使用燈箱效果圖片下方加入js跟css引入連結 <script src="//code.jquery.com/jquery-3.3.1.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css" /> <script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script> 3、在圖片加上<a>標籤加上 data-fancybox="gallery"設定即可 <a data-fancybox="gallery" href="big_1.jpg"><img src="small_1.jpg"></a> <a data-fancybox="gallery" href="big_2.jpg"><img src="small_2.jpg"></a>

php使用each批次大量接收變數-教學撰寫:徐嘉裕Neil hsu

2021-11-12補充說明 注意:在PHP8.0中each()函數已被棄用,如您使用PHP8.0開發模組請參考以下工作心得 php8.0使用foreach批次大量接收變數的方法 https://neohsuxoops.blogspot.com/2021/11/phpforeach-neil-hsu.html 在php中如果要接收變數($_GET or $_POST)按照老師教的方法應該是要這樣寫! $var=isset($_REQUEST['var'])?$_REQUEST['var']:""; 然後$var就是接收變數值 因此檔頭通常會會寫一大串的接收變數COED 變數越多,擋頭接收變數區就越長,因為當初老師就是這樣教的所以我就這樣寫習慣了.... 最近發現可以用更簡單的方法來批次接收變數,不用寫落落長的變數接收CODE了!方法如下! 使用each來接收變數再用while解出變數key跟value值,再用$$var直接吧變數的key值變成變數名稱 //接收變數區 while (list($var, $value) = each($_REQUEST)) { $$var=trim(isset($value)?$value:""); } 這樣就能批次接收全部變數,上面那一排落落長的code可以清除了,精簡程式結構增加開發效能,有需要的朋友參考看看! 2019-9-27補充說明 上面的方法是可以吧任何post過來的值參都自動變成新變數,但這樣反而會有讓駭客有攻擊癱瘓系統的機會,因為不管傳什麼$$var都會形成一個新變數。 例如駭客故意在網址GET傳送 www.testweb.com/index.php ?test=123456789 那在PHP中就會自動產生一個$test的變數值為123456789 如果惡意插入512KB位元組的文字就會導致1MB 的記憶體被消耗,那像中國網軍群控系統一台電腦可以群控100多個作業系統,每個作業系統再開10個視窗用機器人腳本不斷送變數進網站,伺服器記憶體很快就會被消耗殆盡。 解決方法就是吧需要用的變數設為白名單,吧允許傳送的變數name預先用陣列建構起來,在於while迴圈中判斷這些變

jQuery在function中回傳$.ajax變數的方法-教學撰寫:徐嘉裕Neil hsu

正常來說,如果要在function中回傳變數只需要使用return即可! 例如 function test(){ var $result='12345'; return result; } alert(test()); //顯示12345 那如果在function中執行$.ajax不就是 function test(){ $.ajax({ url : 'test.php', type : "post", data : {}, async : false, success : function(data) { var result =data ; } }); return result; } 很抱歉這樣寫是什麼值都回傳不出去的,因為$.ajax的data變數是在test.php完成操作後接收回傳值產生的,所以$.ajax預設是不存在data變數,這樣會導致function在執行時 return result;並無變數而產生程式錯誤(js變數需要宣告),解決方法就是在function中宣告一個變數預設值即可! function test(){ var result =false ; //預設值 $.ajax({ url : 'test.php', type : "post", data : {}, async : false, success : function(data) { result =data ; //回傳值 } }); return result; } 這樣就沒問題了,可以吧function中$.ajax的data回傳變數使用return回傳出去! 有需要的朋友參考看看! 教學撰寫: 徐嘉裕 Neil hsu

解決AJAX中使用session重複引用積存阻塞問題-教學撰寫:徐嘉裕Neil hsu

基本上發明session的時候還沒AJAX技術,所以session設計上根本沒考慮到AJAX非同步切換時儲存積存阻塞的問題,換句話說如果用AJAX重複切換某個項目,而該項目會觸發session寫入資料,就會產生積存阻塞,後面的值完全存不進去session,所以解決方法可以使用PHP7的session_start函數來變更session的php.ini初始值設定,但還是必須要透過刪除session切換才能防止session積存阻塞。 舉例來說,像這樣的ajax多層選單切換觸發內容的session寫入! 如果每切換一層就觸發一次session寫入那用什麼方法都沒用,一定會積存阻塞,所以做一個送出按鈕來取選單最後的值,這樣就不會在開啟選單時觸發session寫入!如果變動選單則吧選單的var清空,重新用按鈕來取值! 然後ajax.php結構就能這樣寫! if(empty($of_sortid)){      //選單空值時 unset($_SESSION['xoops_mod_name']);    //刪除session //CODE內容略.......................... }else{      //選單有值時 session_start([     //初始化session_start設定 'cache_limiter' => 'private', 'cache_expire' => 0, 'cookie_lifetime'=>0, 'read_and_close' => true, ]); $_SESSION['xoops_mod_name'] = $var;    //存入session //CODE內容略.......................... } 經測試這樣用AJAX連動選單重複存入session已無積存阻塞問題,數值都能寫入session中,目前能用的方法只能這樣了!其他都試過了不可行!!有需要的朋友參考看看! 教學撰寫: 徐嘉裕 Neil hsu

使用AJAX+PHP+JS取得facebook影片縮圖的方法(非常麻煩)-教學撰寫:徐嘉裕Neil hsu

最近在開發影片模組需要能夠崁入facebook影片,這部分技術上倒不是很困難,但遇到一個非常棘手的問題,就是facebook影片沒有提供縮圖網址服務,不像youtube那麼善心有專門的影片縮圖網址輸入帶入影片ID就能取用,如果首頁同時也多個FB影片要展示然後直接用影片播放器那網站就會整個死當在那裡,需要大量讀取頻寬會被消耗殆盡,所以必須去取得facebook影片縮圖才行。 首先facebook影片並不是沒有縮圖,如果吧影片崁入播放還沒play之前預設其實就是代表圖,像是下圖紅框的就是代表圖。 但縮圖是包在整個html5播放器裡面的(在iframe的src裡面),沒有參數可以拿,網址也是獨立的,要拿縮圖真的非常的困難,但天下沒有解決不了的事情,花了些時間還是找到取得縮圖的方法。 試過無效的方法 1、如果想用js直接解析iframe的src提取圖檔連結是不可能的,因為js不允許跨域取得子框架參數。 2、如果用php的file_get_contents開啟iframe中頁面也是不可能的,FB禁止檔案被外部讀取。 唯一能用的只有curl_init讀取FB檔案,而且還必須偽裝成是Google Bot爬蟲才行! 整個取得facebook影片縮圖的方法如下,因為非常的麻煩,如果沒耐心的建議可以跳過了。 1、HTML結構 需要有一個文字框可以輸入FB影片網址 <form  id='preventDefault'  class="form-horizontal" role="form" action='<{$xoops_url}>/modules/模組ID/videocenter.php' method='post' > <input type='text' id='url' class=' form-control' name='url'  value='' placeholder='輸入影片連結'> <input type='hidden' name='tmburl'