ホームページ  >  記事  >  PHPフレームワーク  >  yiiへの登録方法

yiiへの登録方法

尚
オリジナル
2019-12-16 10:22:161975ブラウズ

yiiへの登録方法

登録

詳細テンプレートで、frontend/index.php?r=site/signup ページに入ると、フレームワークの登録ページが表示されます

yiiへの登録方法

ユーザー名、電子メール、パスワードを入力して [サインアップ] をクリックした後、形式が間違っている場合は、frontend/models/SignuForm の rules() 関数によって予備検証が実行されます。すべての形式が正しいです。データは、frontend/controllers/SiteController の actionSignup() 関数に転送されます。この関数は、ユーザーが入力した登録情報を読み込みます。frontend/models/SignupForm のsignup() 関数です。

以下の引用文は説明機能です 本文中の具体的な内容は読まなくても全体に影響しません 折り込みテキスト機能がないため引用方法を使用しています 以下同様です

if (!$this->validate()) {
  return null;
}

signup() 関数は、最初に yii2/base/Model の validate() 関数を呼び出します。検証
最初のステップは、frontend/models/SignuForm で rules() 関数を使用するときに、ユーザー入力

if ($clearErrors) {
  $this->clearErrors();
}

2 番目のステップでは、beforeValidate() 関数が beforeValidate イベントをトリガーし、true を返します

3 番目のステップでは、シナリオを設定します。デフォルトはデフォルトです

## 4 番目のステップでは、$attributeNames が null であるため、実行後に

$attributeNames = $this->activeAttributes();

が返されます

array (3) { [0]=> string(8) "username" [1]= > string(5) "email" [2]=> string(8) >"password" }


5 番目のステップ $this->getActiveValidators() は 11 を取得します。フロントエンド/モデル/SignuForm の rules() 内の検証ルールを検証のために validateAttributes() に設定します。


6 つのステップ。afterValidate() 関数を実行して afterValidate イベントをトリガーします。


最後に、すべての検証に合格すると、$this->hasErrors() は false になるため、関数は最終的に true を返します


#データ テーブル user

のフィールドを見てみましょう

#ユーザーはユーザー名、パスワード、電子メールを入力しました。Yii2 フレームワークは他のフィールドをどのように生成しますか?まず、password_hash を見てみましょう。SignupFrom のサインアップ関数でのパスワード生成は setPassword 関数です。 setPassword 関数は、yii2/base/Security 内の各ルールのgeneratePasswordHash 関数を呼び出します。 yiiへの登録方法

if (function_exists('password_hash')) {
  /** @noinspection PhpUndefinedConstantInspection */
  return password_hash($password, PASSWORD_DEFAULT, ['cost' => $cost]);
}

ある場合は、password_hash関数を使用して暗号化します。PHPにpassword_hash関数がない場合は、crypt関数を使用して暗号化します。初期判断ではPHP 5.5未満のバージョンと互換性があると判断されます。結局のところ、5.5 以降のバージョンでのみこの機能が使用され始めます。password_hash 関数

common/models/User's signedup() 関数は、パスワードを暗号化した後も認証キーを生成し続けます。認証キーは検証情報です。

認証キーの生成メソッドは、yii2/base/Security のgenerateRandomStringでもあり、generateRandomString は、generateRandomKey 関数を呼び出します。PHP バージョンが 5.2 ~ 5.6 または 7 の場合は、random_bytes を使用してください。 32 ワードのセクション文字列を生成するには、そうでない場合、使用しているシステムが Windows で OpenSSL がインストールされている場合、openssl_random_pseudo_bytes 関数が呼び出されて生成されます。OpenSSL をインストールしていない場合は、mcrypt_create_iv が生成に使用されます。

使用しているシステムが Windows ではない場合は、/dev/urandom を呼び出す必要があります。FreeBSD システムは特殊です。/dev/random を呼び出し、stream_set_read_buffer メソッドを呼び出して、 8 バイトの文字ファイル。生成後、fread 関数でファイル内の 32 バイトを読み取り、データを返します。
password_reset_token は、ユーザーの登録時には空です。ユーザーがパスワードを忘れて、ログイン ページで [リセット] をクリックしたときに生成されます。ユーザーが電子メールの送信後にパスワードをリセットするときの検証に使用されます。


ステータスは common/models/User で定義されます

const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;

ユーザー登録時のルールのステータスはデフォルトで 10 に設定されます。

created_time と updated_time も common/models/ にありますUser の Behaviors() 関数で生成された

ユーザーのデータは、修飾されていることが検証され、フレームワークによって生成されたデータも加えて、データのユーザー テーブルに保存されます。

推奨学習:

yii フレームワーク

以上がyiiへの登録方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。