私はuser_login.phpに保存されているこのコードを改善できるか、間違っているのかどうか疑問に思っています。アプリケーションのスクリプトはすべて30-40行程度しかないので混乱しています。何かが欠落しているかどうか疑問に思っていました。このスクリプトを改善できますか?
このスクリプトは、テンプレートファイルを除き、アプリケーション内の他のすべての人と同様に、ajax呼び出しで呼び出されます。
<?php
# Ignore
if (!defined('APP_ON')) { die('Silence...'); }
# Gets the variables sent
$user_name = post('user_name');
$user_password = extra_crypt(post('user_password'));
# Check if the user exists
if (!user::check($user_name, $user_password)) { template::bad($lang['incorrect_login']); }
# Logging in
$id = user::get_id($user_name, $user_password);
$u = new user($id);
$u->login();
template::good($lang['correct_login']);
?>
私はそれを説明するつもりです:
# Ignore
if (!defined('APP_ON')) { die('Silence...'); }
は、これは基本的にファイルが直接呼び出されていないことを確認してください。各URLはURL(es:www.mysite.com/user/view/id/1)を管理するindex.phpファイルにリダイレクトされ、適切なファイルが含まれます。このindex.phpファイルの最初の行には、define('APP_ON', true);
があります。また、インデックスファイルは、一部の関数セットといくつかのクラスを呼び出すアプリケーションを初期化します。
# Gets the variables sent
$user_name = post('user_name');
$user_password = extra_crypt(post('user_password'));
機能post()
は$ _POST [ 'USER_NAME']いくつかのチェックを行うの回収管理します。 機能extra_crypt()
は、sha1とカスタムalghoritmを使用してパスワードを暗号化するだけです。 私はSQLクエリの準備文を使用していますので、post変数のエスケープについて心配しないでください。
# Check if the user exists
if (!user::check($user_name, $user_password)) { template::bad($lang['incorrect_login']);
user
クラスは、静的メソッドと通常メソッドの両方を持ちます。静的なものは、idの開始を要求しません。通常のメソッドは開始します。たとえば、user::check();
は、ユーザ名とパスワードがデータベースに存在するかどうかをチェックします。 template
クラスには、ヘッダーまたはフッターなしでユーザーに送信するための高速なダイアログボックスを管理する2つの静的メソッド(template::bad()
およびtemplate::good()
)があります。代わりに、あなたはクラス$t = new template('user_view')
をインスタンス化した場合、テンプレートuser_view_body.php
が呼び出され、テンプレートに静的VARSを割り当てる$t->assign()
と、そのページを管理することができ、または$t->loop()
でループを開始することなど 最後に$lang
はでいくつかの共通の文字列を有するアレイでありますユーザーが設定した言語。
# Logging in
$id = user::get_id($user_name, $user_password);
$u = new user($id);
$u->login();
template::good($lang['correct_login']);
最後に実際のログインがあります。 user
クラスがインスタンス化され、IDが復元されます。そのIDを持つユーザーがログインしていて、ユーザーにメッセージボックスを返します。 説明を明確にするために、上記のコメントを書いてください。
sha1 alghoritmのアドバイスをありがとう。そして、私はこのコードがうまく設計されているかどうか尋ねていました。何かエラーがある場合はありません。ここで見ているすべてのクラスと関数が完璧だとしましょう...論理的に言うとこのコードはうまく書かれていますか? – Shoe
それは論理的な流れに沿っているようです。しかし、あなたのコメントに応じて、私は実際にエラーを見つけることができないと言っているわけではありません。サブファンクションを見ることなく、うまく設計されているかどうかは分かりません。 – eykanal
-1 md5はsha1よりはるかに悪いです。少なくともsha1はNISTでも推奨されています。 – rook