それで、あなたはここで多くの異なる質問をしました。それらを1つずつ見ていきます。
PHP は、html ファイル、フォーム action = "" が送信される別の 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.
}
ソルト、ハッシュ、または暗号化関数をインクルード ファイルに含める必要がある場合、セキュリティに関するベスト プラクティスは何ですか?
はい、暗号化機能を使用します。セキュリティを確保するために別のファイルにする必要はありません。ユーザーがファイルを見ることができないという事実ではなく、暗号化機能がセキュリティを提供するものです (読み取り: 実際のセキュリティであり、難読化によるセキュリティではありません)。ただし、値をハッシュするために使用するソルトは、Web 経由でアクセスできない別のファイルにある必要があります。ユーザーがハッシュ アルゴリズムとソルトを見ることができる場合、ユーザーはデータの総当たり攻撃を開始できます。
jQuery の検証は時間の無駄ですか? PHP で行う方がよいでしょうか?
jQuery の検証は、実際の検証よりも UI/UX の改善と見なす必要があります。既に述べた理由により、クライアント側 (読み取り: JavaScript) の検証がサーバー側 (読み取り: PHP) の検証に取って代わるべきではありません。しかし、ユーザー エクスペリエンスの向上に貢献できると思うので、両方を行う価値がある場合もあります。
私が行うことの 1 つは、サーバー側とクライアント側の検証に同じ方法を使用することです。これにより、検証コードを 2 回記述する必要がなくなります。たとえば、検証関数を別のファイルに配置すると、AJAX を使用してフォーム データを送信し、フォーム エラーを受け取ることができます。
お役に立てれば!
更新: また、ユーザーのログインを行っている場合はpassword_compat
、PHP 5.5 で PHP 標準ライブラリの一部となる を確認してください。そのライブラリは、アップグレード可能な方法で、多くのセキュリティ上の問題を処理する必要があります。