201612-07 PHP 魔術方法詳解 前言PHP中把以兩個下劃線__開頭的方法稱為魔術方法(Magic methods),這些方法在PHP中充當了舉足輕重的作用。魔術方法包括:__construct(),類的構造函數__destruct(),類的析構函數__call(),在對象中調用一個不可訪問方法時調用__callStatic(),用靜態方式中調用一個不可訪問方法時調用__get(),獲得一個類的成員變量時調用__set(),設置一個類的成員變量時調用__isset(),當對不可訪問屬性調... 繼續閱讀 >
201611-26 利用PHP 7中的OPcache來實現Webshell 在這篇文章中,我們將會對PHP7OPcache引擎中的安全問題進行講解,而且還會給大家介紹一種新型的漏洞利用技術。通過這種攻擊方法,我們可以繞過某些安全強化技術,例如禁止web目錄的文件讀寫等安全保障措施。除此之外,攻擊者還可以利用這種攻擊技術在目標主機中執行惡意代碼。OPcahceOPcache是PHP7.0中內嵌的新型緩存引擎。它可以對PHP腳本代碼進行編譯,并且將編譯結果以字節碼的形勢存入內存中。OPcache通過將P... 繼續閱讀 >
201611-26 [譯] 又一個升級到 PHP 7 后性能提升 50% 的案例:Tumblr 導讀:PHP7發布有一段時間了,業界有一些公司已經嘗試在線上大規模使用這個版本了。Tumblr也從PHP5升級到PHP7,他們碰到了什么問題,又是怎么處理的,PHP7這個版本又給Tumblr帶來了什么?相關的經歷對類似需求的團隊會有很多啟發。在Tumblr,我們一直在尋找新方法來提高網站的性能。這意味著在關鍵路徑大量使用緩存,測試新的CDN配置或升級底層軟件。最近,在團隊的努力下,我們將整個Web服務器從P... 繼續閱讀 >
201611-23 前端學PHP之錯誤處理 前面的話錯誤處理對于程序開發至關重要,不能提前預測到可能發生的錯誤,不能提前采取恢復策略,可能導致較差的用戶體驗。本文將詳細介紹PHP的錯誤處理[注意]關于javascript的錯誤處理機制移步至此錯誤報告PHP程序的錯誤發生一般歸屬于下列三個領域:1、語法錯誤語法錯誤最常見,并且也容易修復。如:代碼中遺漏一個分號。這類錯誤會阻止腳本的執行2、運行時錯誤這種錯誤一般不會阻止PHP腳本的... 繼續閱讀 >
201610-07 PHP 中九大緩存技術總結 1、全頁面靜態化緩存也就是將頁面全部生成html靜態頁面,用戶訪問時直接訪問的靜態頁面,而不會去走php服務器解析的流程。此種方式,在CMS系統中比較常見,比如dedecms;一種比較常用的實現方式是用輸出緩存:Ob_start()******要運行的代碼*******$content = Ob_get_contents();****將緩存內容寫入html文件*****Ob_end_clean();2、頁面部分緩存該種方式,是將一個頁面中不經常變的部分進行靜態緩存,而經常變化的塊... 繼續閱讀 >
201609-16 10 件在 PHP 7 中不要做的事情 10件在PHP7中不要做的事情1.不要使用mysql_函數這一天終于來了,從此你不僅僅“不應該”使用mysql_函數。PHP7已經把它們從核心中全部移除了,也就是說你需要遷移到好得多的mysqli_函數,或者更靈活的PDO實現。2.不要編寫垃圾代碼這一條可能易于理解,但是會變得越來越重要,因為PHP7的速度提升可能會隱藏你的一些問題。不要僅僅滿足于你的站點速度,因為遷移到PHP7才讓它變快。為了理解速度有多... 繼續閱讀 >
201608-24 php文件上傳小技巧與后端處理 引語:在上一篇文章中說到,在頁面中可以用隱藏的方式讓你的上傳頁面看起來漂亮。但是這對于性能來說,并沒有什么卵用,那么在后臺的處理中,難道就沒有一些處理技巧么?所謂后臺的技巧,應該要包括上傳得快一點,上傳的文件大一點!那么,本文就來說說,后端處理都有些什么技巧吧!業務場景一、我們只會選擇一個單個的文件上傳,而且不需要做一些即時的驗證工作。那么,也許并沒有什么優化可言了,因為,最后你要做的,只是將這... 繼續閱讀 >
201607-29 PHP轉換emoji表情的幾種處理方法 最近幾個月做微信開發比較多,存儲微信昵稱必不可少可這萬惡的微信支持emoji表情做昵稱,這就有點蛋疼了一般Mysql表設計時,都是用UTF8字符集的。把帶有emoji的昵稱字段往里面insert一下就沒了,整個字段變成了空字符串。這是怎么回事呢?原來是因為Mysql的utf8字符集是3字節的,而emoji是4字節,這樣整個昵稱就無法存儲了。這要怎么辦呢?我來介紹幾種方法 1、使用utf8mb4字符集如果你的mysql版本>=5.5.3,你大可直接將utf8... 繼續閱讀 >
201607-27 PHP緩存技術的多種方法小結 1、普遍緩存技術:數據緩存:這里所說的數據緩存是指數據庫查詢PHP緩存機制,每次訪問頁面的時候,都會先檢測相應的緩存數據是否存在,如果不存在,就連接數據庫,得到數據,并把查詢結果序列化后保存到文件中,以后同樣的查詢結果就直接從緩存表或文件中獲得。 用的最廣的例子看Discuz的搜索功能,把結果ID緩存到一個表中,下次搜索相同關鍵字時先搜索緩存表。 舉個常用的方法,多表關聯的時候,把附表中的... 繼續閱讀 >
201607-27 其實你距離PHP高級工程師只有一步之遙! 平靜的心態要寫一手好的程序,沒有好的心態是不行的。遇事不可急躁,不可輕言放棄。在程序開發過程中,尤其是初中級程序員,寫出的程序或架構會遇到很多問題,其中一些問題比較弱智,而有些問題根本沒有碰到過,于是不可太過急躁,應該逐個排查問題的最初源泉,將其干掉。急躁的心態去開發系統是對項目的一種不負責。急躁會讓人學會將就,讓人學會逃避。這樣的心態也會有助于你其他方面的處事能力。為什么將... 繼續閱讀 >
201607-27 PHP Array 函數 在php教程中數組是種強大的數據類型,他可以做的事情很多,可以存儲不同的數據類型在一個數組中,下面我們列出了數組常用的操作,排序,鍵名對數組排序等做法。/*數組的常用函數 * * 數組的排序函數 * sort() * rsort() * usort() * asort() * arsort() * uasort() * ksort() ... 繼續閱讀 >
201607-27 PHP 與 Perl 語言對比 相同之處編譯腳本語言:Perl和PHP二者都是腳本語言。這意味著他們不用提前獨立執行生產原生可執行文件。語法:PHP的基本語法非常接近Perl的,并且二者都與C代碼分享很多語法特性像空格、語句由分號終止和花括號將多條語句組織成代碼塊。函數調用開始于函數名,緊隨后面的是包圍在圓括號中并由逗號分隔的實際參數。$符號變量:所有變量在PHP中看起來像Perl標量變量:一個名稱在一個$符號($... 繼續閱讀 >
201607-27 PHP 與 C 語言對比 比如第一次發現函數里還可以定義函數的時候,我就慌了還有引用傳值的方式究竟是什么,變量的作用域,有的時候數組賦值還會給我驚喜.....這還不算把數據和程序混淆的真本領....很多人都說php和c語言語法很像,我怎么覺得差了那么多?用c語言寫程序的時候起碼我能想象,這個變量是在棧里,那塊數據在堆里,為什么現在看不見這個變量,指針究竟意味著什么,只要我愿意,起碼我是能看清楚的而我在用php寫程序的時候,一切都是那么的飄... 繼續閱讀 >
201607-26 PHP 常用函數匯總 一、寫入文件1.打開資源(文件)fopen($filename,$mode)2.寫文件fwrite($handle,$str)3.關閉文件fclose($handle)4.一步寫入file_put_contents($filename,$str,$mode)FILE_APPENDLOCK_EX}二、讀文件1.讀文件fread($handle,字節數) 2.讀一行fgets($handle);3.讀一個字符fgetc($handle)4.讀成一個數組中file($filename)5.一步讀取file_get_contents($filename)三、目錄操作1,建目錄mkdir($dirname)2,刪除目錄rmdir($dirname... 繼續閱讀 >
201607-26 PHP代碼注釋小細節 代碼注釋,可以說是比代碼本身更重要。告誡新人,一定要養成寫注釋的習慣,否則只能是損人不利己。這里有一些方法可以確保你寫在代碼中的注釋是友好的,總結起來就是"5要與3不要"一、不要重復閱讀者已經知道的內容(×)一些光看方法名,光看代碼就能看出來功能的就沒必要寫注釋,//Ifthecolorisred,turnitgreenif(color.is_red()){ color.turn_green();}二、要注釋說明推理和歷史(√)如果代碼中的業務邏輯... 繼續閱讀 >
201607-20 中級 PHP 知識點匯總 ——————————————————————————2.jQuery包括javascript框架和prototype.js框架選擇器:1.基本選擇器:①、$('#result')=jQuery('#result')=document.getElementById('result')<divid='result'><divclass='result'>②、class選擇器$('.result')③、元素選擇器$('div')2.子代選擇器:$('#myform<input')3.后代選擇器:$('#myforminput')4.組合... 繼續閱讀 >