所以你在這裏問了很多不同的問題。我會一一瀏覽它們。
的PHP應該去哪裏,在HTML文件中嵌入,在一個單獨的PHP文件,該文件的形式行動=「」提交到,或者在一個包含文件?
PHP是從來沒有在HTML文檔中直接嵌入。相反,將PHP視爲動態HTML生成器。它創建了 HTML(或JSON,或其他)發送到瀏覽器,但從未實際發送到瀏覽器本身。這就是爲什麼它被稱爲服務器端語言,而不是像JavaScript(也可以是服務器端,但這不相關)的東西。所以你應該在你想要的任何地方進行驗證。這將需要發生在action
表格被調用時,所以它需要在任何地方發生。像下面這樣的東西應該工作:
<?php
function validate($data) {
// Do your validation here, and return an array of errors.
return $errors;
}
// Run the validation on the data posted from the form.
$errors = validate($_POST);
if (empty($errors)) {
// The data was valid, save it to the database
// (be sure to sanitize the data first).
} else {
// The data was not valid, redirect the user or whatever.
}
在一個包含文件的安全性方面,如果我使用的鹽或散或encrytion功能應該說是什麼是最好的做法?
是的,使用加密功能。它不需要放在單獨的文件中以確保安全:加密功能是提供安全性的,而不是用戶無法看到文件的事實(讀取:實際安全性,而不是通過混淆)。 但是無論你用什麼鹽來散列值應該在一個單獨的文件,不能通過網絡訪問。如果用戶可以看到你的哈希算法和你的鹽,他們可以開始暴力破解你的數據。
是jQuery驗證浪費時間,它會更好只是用PHP來做?
jQuery驗證應該被視爲比實際驗證更多的UI/UX改進。客戶端(讀取:JavaScript)驗證不應該替代服務器端(讀取:PHP)驗證,因爲您已經提到過。但我認爲它可以爲更好的用戶體驗做出貢獻,所以有時候兩者都值得。
我會做的一件事是使用相同的方法來驗證服務器端和客戶端,以便您不必兩次寫入驗證代碼。例如,如果您將驗證功能置於另一個文件中,則可以使用AJAX將表單數據發送給它,然後接收表單錯誤。
希望這會有所幫助!
更新: 另外,如果你正在做的是在用戶登錄時,檢查出password_compat
,這將成爲PHP標準庫的一部分,在PHP 5.5。該庫應該以可升級的方式爲您處理很多安全問題。
這似乎是一個不錯的指導http://www.phptherightway.com/ – wgcrouch