發表文章

目前顯示的是 10月, 2015的文章

[JavaScript][好文] Cross Domain Ajax 跨網域抓取資料(JSONP) - Javascript篇

Cross Domain Ajax 跨網域抓取資料(JSONP) W3 JSONP (含範例程式) 原理: 因為同源政策並不限制<script>,所以可以利用這一點,先在本地端JS定義好函式,再透過<script src="{別網域程式的網址}"></script> 來執行本地端的函式,以 W3 的範例程式來說,先在本地端的 2.php 定義好 myFunc 這個 JS 函式,然後引入不同網域的 1.php,echo 出的內容就是一段寫好的 JS 碼,其中即包含 myFunc({"name":"John"....}) 【函式名稱(參數){}】,就可以來執行本地端的 myFunc 函式。 範例程式: Server端 PHP 程式碼 (網址: https://www.myweb1.com/1.php) $myJSON = '{"name":"John", "age":30, "city":"New York"}'; echo "myFunc(".$myJSON.");"; Client端 JS 程式碼 (網址: https://www.myweb2.com/2.php) function myFunc(myObj) {   console.log(myObj.name); } <script src="https://www.myweb1.com/1.php"></script> 備註: 請注意 JSON 需使用"雙引號"

[好文][git] Git - Book (正體中文)

Git - Book

[JavaScript] 好用的線上編輯器 CKEditor

目前最新版 CKEditor 已經統一使用 javascript ,不再區分 PHP 或 ASP 版,使用方式也簡單許多,簡單說明如下: Step 1: 至 官網 下載套件檔案,有分 基本、標準、完整 三個版本,可以直接 下載 完整版。 Step 2: 下載後解壓縮,放到網站目錄。 Step 3: 網頁中加入下面的程式碼 <textarea id="mytextarea"></textarea> <script src=" ck editor /ck editor .js"></script> <script> CKEDITOR.replace('mytextarea', {         language: 'us',          enterMode: CKEDITOR.ENTER_BR,         pasteFromWordRemoveFontStyles: false,         pasteFromWordRemoveStyles: false,          toolbar: [                 { name: 'clipboard', groups: [ 'clipboard', 'undo' ], items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] },                 { name: 'basicstyles', items: [ 'Bold', 'Italic' ] },                ...

[JavaScript] 超簡單!放寬同源準則 (在相同網域下 兩個不同子網域的網頁 彼此互動)

A網頁的url: http://a.myweb.com B網頁的url: https://b.myweb.com 因為安全性的因素,JavaScript 會禁止 A、B 兩個網頁彼此互動,這是所謂的"同源準則"(same-origin policy),有一個簡單的方法可以解開這個限制,如下:

[PHP] 超簡單 網址參數的抓法 (使用 http_build_query)

假設網址是 http://www.myweb.com/index.php?a=1&b=2&c=3 我們知道要抓參數的方式為 $_GET['a']、 $_GET['b']...,如果需要串成query string,有個很簡單的方式,如下: $ url_querystring = http_build_query ( $ _GET ) ; //印出a=1&b=2&c=3 補充: 如果在實作 "分頁" 功能時,每一個分頁按鈕都會帶一個 &page=1(or 2 or ... 99)參數,這時候我們用 http_build_query 抓網址時,會抓到之前的 $_GET['page'],造成參數重複,所以需要 unset,如下: $arr_get = $_GET; unset ( $ arr_get [ ' page ' ]) ; $ url_querystring = http_build_query ( $ arr_get ) ; //分頁按鈕 $html_page = '<a href="?page=5&'.$url_querystring.'">第五頁</a>';

[MAC] 更新 OS X El Capitan (10.11) 使用 FortiClient 連上 VPN 後 無法上網的問題

官網討論串 目前官網尚未釋出解決方案,使用舊版的 FortiClient 可暫時應急 FortiClient 4.0.2082 載點

[CSS] CSS Attribute Selectors 屬性指標 (篩選器)

W3 官網 寫得很清楚又有範例,請直接參考。 W3 官網

[MAC] [架站] OSX 10.10 升級 10.11 後 PHP 開不起來的問題

step 1. 打開 httpd.conf $sudo vim /etc/apache2/httpd.conf step 2. 將下列項目前的#字號拿掉 LoadModule ssl_module libexec/apache2/mod_ssl.so LoadModule rewrite_module libexec/apache2/mod_rewrite.so LoadModule php5_module libexec/apache2/libphp5.so Include /private/etc/apache2/extra/httpd-vhosts.conf step 3. 重啟 apache $sudo apachectl restart

[PHP] 兩個日期相差多少天 (使用 DateTime::diff)

PHP官網 $datetime1 = new DateTime('2009-10-11'); $datetime2 = new DateTime('2009-10-13'); $interval = $datetime1->diff($datetime2); echo $interval->format('%R%a days');

[好文] 如何減低垃圾Request對主資料庫的影響

如何減低垃圾Request對主資料庫的影響 內文備份: 在今天國殤日,來淺談一下如何減低垃圾Request對主資料庫的影響吧~ 首先,我們思考一下像BOT(誤)魔獸世界的點數卡系統: 用戶在便利店買到點卡得到密碼後,便在系統輸入密碼換取商品。 只要有利益的地方,便總會有cracker來random try去試試看會不會成功換取到商品的。 1。 首先,正常用戶應該不會長期+大量輸入點卡密碼錯誤的。所以,系統可以記錄一下用戶在24小時內錯誤輸入了多少次密碼,比如說如果錯掉10次以上便鎖掉戶口,明天請早。這樣便可以極大幅地增加cracker的操作成本。 不過,這些「輸入錯誤資訊」其實商業價值接近零,丟失了也沒有太大所謂;而且,生存期極短(只有24小時)。所以,其實這些資訊沒有必要存放到RDBMS的,使用Redis去存便好~ 2。 「BOT世界」有大量用戶是每天有大量時間沒事幹的白目;即使限制每24小時只能錯10次;10萬個白目一天便能產生100萬個垃圾request的。如果點卡密碼只是單純的隨機亂碼,系統每個request都需要查詢RDBMS才知道其密碼真偽,RDBMS便要每天接受100萬個沒有任何商業價值的查詢。 所以,這些點卡密碼的產生方法一般都是:     1 隨機亂碼     2 使用某加密方法加密 當application server收到用戶的點卡密碼時,他只需要對這個密碼試試看解密。解密失敗的,便立即知道這個點卡密碼一定是錯誤的;解密正確的話,才查詢RDBMS看看密碼是否相符。 這樣,絕大部份白目的亂猜的Request也不會產生對RDBMS的流量~ --------------------------------- 到正題: (耐心看完文章的人有糖吃~) 其實如果把以上的東西延伸到Http Session上,會產生極奇妙的效果耶~ HttpSession傳統(老一代)作法: 1。 用戶把username / password傳到web server 2。 webserver隨機生產一個足夠長的隨機string token給回用戶,並且把這個(token, userId, expirationTime)存放於Redis / 任何能被所有webserver讀取的檔案空間 3。 用戶之後所有Request都在H...

[PHP] 如何產生跨年度的月份表 (使用 DateTime )

$ dateStart = new \DateTime () ;  //開始日期 $ dateInterval   = \DateInterval :: createFromDateString ( ' +1 month ' ) ;  //間隔設定 例如 +1 day 或 -1 month $ date Period   = new \DatePeriod ( $ dateStart , $ dateInterval , 24 ) ;  //要作幾次 foreach ( $ datePeriod   as $ v ) {         echo $ v -> format ( ' Y-m-d ' ) ;         echo ' <br> '; } 顯示結果如下: 2015-10-01 2015-11-01 2015-12-01 2016-01-01 2016-02-01 2016-03-01 2016-04-01 2016-05-01 2016-06-01 2016-07-01 2016-08-01 2016-09-01 2016-10-01 2016-11-01 2016-12-01 2017-01-01 2017-02-01 2017-03-01 2017-04-01 2017-05-01 2017-06-01 2017-07-01 2017-08-01 2017-09-01 2017-10-01