2016-11-27 119 views
0

這不是一個如何做某事,而是更多的最佳實踐問題。PHP表單驗證最佳實踐

我正在爲使用php-advanced-login框架的內部項目構建一個簡單的登錄應用程序。我通過使用用戶提交表單時初始化的類來驗證登錄表單,密碼重置和通過cookie登錄的方式。然後,該類將驗證所有內容,並將任何錯誤返回到數組中並顯示在窗體中。

<?php if(isset($_POST['submit_login'])){ 
//load class 
} 
<!doctype html> 
//form 

我的問題是,在這個階層擁有一切似乎是有點亂的(好像它是難以維持比我如何使用做進一步解釋),這一切都在那裏,因爲那裏是大量的代碼重用。我之前完成的方式只是將我的代碼分成幾個帶有函數的php文件,並在需要時包含它們。在我看來,每個php文件都更短,更容易維護。我不使用任何真正的優勢,只是使用類而不是方法。

如果你設法跟隨我的漫步,你對此有何看法?我應該使用一個類並將所有東西放在一起,只是使用函數,另一種更好的方法?

+1

如果它變得足夠複雜,你要問自己這些問題,你可以考慮使用框架。微型應用程序中有很多可以幫助您爲代碼提供結構並執行大多數人想要的基本功能的程序。 – mickadoo

+0

@mickadoo - 謝謝你,我已經考慮過了。我不想使用框架,因爲它給了我練習本機PHP的機會,我可能會重新討論。 – Nizmon

+0

「我正在爲使用php-advanced-login框架的內部項目構建一個簡單的登錄應用程序」和「我不想使用框架」您的帖子充滿了矛盾,真的不知道您的實際內容想。 – 2016-11-27 00:54:40

回答

1

既然你在評論中提到你不想使用框架,我認爲最簡單的方法是至少模仿大多數框架的一些功能。這包括:

  • 創建邏輯目錄結構。你可能有配置,驗證,實用程序,視圖,模型的目錄。它應該是顯而易見的地方。如果您的應用程序增長到您需要遷移到具有類似結構的框架將有幫助
  • 創建具有一個功能的類。你可以通過函數來​​做到這一點,但是在全球範圍內可以使用的所有功能都會讓你感到困惑。您可能有功能來檢查密碼是否有效。爲此,您可以散列輸入密碼,從數據庫加載用戶並將存儲的密碼與用戶的密碼進行比較。爲了讓你的功能更加完美,你可以將它分開。然而,如果沒有一個封裝了這個對象的對象,你現在可以在全局中使用x個函數。您可能還需要用於存儲哈希算法參數的變量。代碼的其他方面不需要使用它,所以將它們隱藏在一個對象中。
  • 保持共享功能的小型簡單的類,可以根據需要使用。有些地方可能會使用像讀取cookie一樣的東西。在這種情況下,我認爲對象並沒有比類更多的好處,但是如果你想編寫測試(我強烈建議你這樣做),你會發現使用測試框架(PHPUnit,PHPSpec)和對象更容易。你也永遠不會知道,當你「簡單的功能」將變得更爲複雜

BTW您鏈接到GitHub的回購是沒有維護