PHP開發人員常見的另外7個錯誤
>我鼓勵您對其進行徹底的閱讀 - 它具有您應該意識到的一些真正有價值的信息 - 尤其是前八個。幾天前,安娜·菲利娜(Anna Filina)用七個新條目擴展了名單。雖然較不具體和普遍,但她的觀點仍然具有重量,並且在開發時應考慮。
鑰匙要點
>避免在SQL數據庫中使用已棄用的MySQL擴展名,因為它是不安全的,不可靠的,並且缺乏對SSL和現代MySQL功能的支持。相反,選擇諸如Mysqli或PDO之類的替代方案,這些替代方案提供更好的安全性和更多功能。
>避免使用 @ Operator抑制代碼中的錯誤。而是允許記錄錯誤並通過修復代碼來解決這些錯誤。這有助於保持應用程序的完整性,並防止問題被忽略或忽視。- >要謹慎透露有關後端設置的太多信息,尤其是在使用已知框架的情況下。如果發現該框架中的安全漏洞,則可以將您的應用程序暴露於潛在的攻擊中。另外,請記住要在推動生產以防止未經授權的訪問時刪除開發配置。
- 7個錯誤PHP開發人員通常會造成
- >我被Toptal的某人要求我查看他們的清單並有可能做出貢獻,我們在社交網絡上的一些追隨者也對看到清單的興趣也繼續,所以我想藉此機會來在此列表中添加一些我自己的條目,我需要一再警告我的團隊成員或追隨者。
- 1。使用mysql擴展
而不是使用mysql,而是選擇一種替代方法:mysqli或pdo。例如,使用mysqli幾乎與將字母“ i”添加到API呼叫的末端一樣簡單:
<span>$c = mysql_connect("host", "user", "pass"); </span><span>mysql_select_db("database"); </span><span>$result = mysql_query("SELECT * FROM posts LIMIT 1"); </span><span>$row = mysql_fetch_assoc($result);</span>
<span>$mysqli = new mysqli("host", "user", "pass", "database"); </span><span>$result = $mysqli->query("SELECT * FROM posts LIMIT 1"); </span><span>$row = $result->fetch_assoc();</span>
> 不過,您應該選擇PDO。在第2點。
2。不使用PDO不要誤會我的意思,Mysqli(從字面上看)幾代人都領先於古代MySQL擴展。它保持最新,安全,可靠和快速。但是,這是特定於MySQL的。相反,使用PDO將使您使用一些非常實用的面向對象的語法,並將與其他SQL數據庫(如PostgreSQL,MS SQL等)一起為探戈做準備。此外,PDO將讓您使用名為參數,這是一項非常有用的功能,很少有人能想像在適當地利用它後會去其他任何東西。最後但並非最不重要的一點是:您可以將獲取的數據直接注入新對象,這在大型項目中是一個令人愉快的時間。
3。不重寫URL
>另一個通常被忽略且易於解決的問題。像myapp.com/index.php? p = 34&g = 24之類的URL在當今時代不可接受。由於很難編寫一個良好的URL重寫指南,該指南將涵蓋每個服務器和框架,因此幾乎每個框架都有一個指南,有關如何設置乾淨的URL(Laravel,Phalcon,Symfony,Symfony,Zend)和任何不'只是不值得使用- 他們顯然不在乎現代實踐。
4。抑制錯誤
>我在上一篇文章中寫了這一點,但值得一提。每當您發現自己使用 @操作員時,重新考慮並從其他角度仔細解決問題。當我說圍繞應用程序功能周圍的20條樣板捲曲代碼比單線 @ operator在其前面的一行時,請說出我的話。
>>我通過個人實驗發現,一個好的方法是我在原始帖子中提倡的方法 - 將所有通知變成致命錯誤。確保
沒有
登錄到錯誤日誌中,因為從字面上看> log> 比假裝大便更好地通過在您的眼前握住@ the the the the the the the the the the the。
>我們最近介紹了一些Heroku附加組件,用於生產Ready PHP應用程序,其中之一是出色的紙質編寫片- 一種附加組件,可讓您將所有應用程序的錯誤推向其後端,以便於稍後搜索,分組和淘汰在;因此,即使確實發生了一些錯誤,最好讓它們記錄並通過修復代碼來擺脫它們,而不是沉默它們並在用戶面前玩愚蠢。 >即使是經驗豐富的開發人員有時會有一條手指滑動,然後寫($ condition ='value'){而不是if($ condition =='value'){。我們的手會滑倒,鍵盤不會註冊按鍵,我們最終會從分配實際發生的代碼的另一部分粘貼 - 發生了 - 通常只有在運行應用程序時才發現。
>
在這推文中,對嚴重的代碼注入問題的了解正在廣播到公共領域。如果您在工作,並且可以在沒有DevOps問題的情況下立即升級並讓團隊首先縮減,但是對於大多數使用Symfony的公司和公司而言,情況並非如此。即使可以通過作曲家升級Symfony(正如Ryan在下面的評論中提到的那樣),但通常需要一段時間才能在具有多層環境的大型團隊中獲得批准。所有使用此翻譯器方法聲明為Symfony用戶的網站是(曾經?)。 在上面的示例中使用Symfony只是一個示例。多年來,無數其他軟件也出現了類似的情況。回到我仍然商業上使用Zend Framework時,我們也發生了這種情況,因此遭受了攻擊。 WordPress擁有其安全性的一部分,我們知道那裡的網站有多高。這些事情發生了,有時,開源和透明度並不是處理公司大部分收入來源的應用程序時的最佳方法。
- Marco pivetta(@ocromius)2014年7月15日 >
結論5。在條件下分配
使用一個體面的IDE。任何好的IDE(例如PhpStorm)都會在檢測到它們時警告您。
如果您使用Symfony2 Translator,並且具有{_locale}參數升級的路由! http://t.co/jihxhb8mzt - JérémyDerussé(@jderusse)2014年7月15日
7。不刪除開發配置
最後但並非最不重要的一點是,應提及開發配置刪除。最近(這是一個誠實的巧合,我再次在這裡提到Symfony),CNET由於沒有消除其開發配置而遭受了攻擊。 > uhmmm no:http://t.co/raqis1ycwq #security #symfony
> CNET是基於Symfony的。眾所周知,Symfony為您的應用程序提供了兩個入口點:app.php和app_dev.php。通過將瀏覽器指向一個,您可以獲得生產環境。通過指向_dev後綴的一個,您顯然會獲得開發版本,該版本具有調試器,敏感數據等。無論是好還是壞,都是許多討論的主題(再次感謝Ryan指出了這一點),但是不可否認,它使一些更笨拙的開發人員對諸如CNET遭受的錯誤打開了錯誤。此外,當在app_dev上訪問的任何其他URL都將重定向到其他app_dev URL。換句話說,不僅是在開發模式下啟動的索引頁面,而且是整個網站 - 在CNET的情況下,這是很多訪問權限。
您對此列表有何看法?它涵蓋了共同方面還是太深奧?您是否有一些更常見的陷阱,總共沒有提及?在下面的評論中讓我知道,如果您的建議是正確的,我們將更新帖子!
>
以上是PHP開發人員常見的另外7個錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

RESTAPI設計原則包括資源定義、URI設計、HTTP方法使用、狀態碼使用、版本控制和HATEOAS。 1.資源應使用名詞表示並保持層次結構。 2.HTTP方法應符合其語義,如GET用於獲取資源。 3.狀態碼應正確使用,如404表示資源不存在。 4.版本控制可通過URI或頭部實現。 5.HATEOAS通過響應中的鏈接引導客戶端操作。

在PHP中,異常處理通過try,catch,finally,和throw關鍵字實現。 1)try塊包圍可能拋出異常的代碼;2)catch塊處理異常;3)finally塊確保代碼始終執行;4)throw用於手動拋出異常。這些機制幫助提升代碼的健壯性和可維護性。

匿名類在PHP中的主要作用是創建一次性使用的對象。 1.匿名類允許在代碼中直接定義沒有名字的類,適用於臨時需求。 2.它們可以繼承類或實現接口,增加靈活性。 3.使用時需注意性能和代碼可讀性,避免重複定義相同的匿名類。
