2月
03
2009

[EC-CUBE]secret_keyの仕様


概要

今EC-CUBEのdtb_customerを色々といじっているのですが、ユーザ新規登録時に自動的にセットされるsecret_keyというフィールドは一体なんぞや?と気になりまして、先日のユーザパスワードに引き続きこちらも調べてみました。

secret_keyはユーザ仮登録時のID

secret_keyはユーザの仮登録機能に必要な、同一ホスト内で一意のIDということらしいです。
まあ、本登録のする際にsecret_keyを使ってユーザデータを引っ張ってくるんでしょう。良くわかりませんが。

仮登録機能を使わない場合は特に無くてもいいのかもしれませんが、仮登録機能を使わなくてもユーザ登録時には自動的に追加されるし、Nullが許されないフィールドということもあって別システムからユーザを移行させようと考えている僕はとりあえずEC-CUBEのsecret_key生成アルゴリズム*1 にしたがって入れてあげようと思います。

secret_keyの生成アルゴリズム*2

secret_keyを生成するのに使っているメソッドはSC_Utils_Ex::sfGetUniqRandomId($head);で、このメソッドの中で更にGC_Utils_Ex::gfMakePassword($pwLength)を呼んでいます。

でアルゴリズムを整理すると…*3

// シークレットキー
$secret_key = "";

// $head たぶん仮登録なら"t",本登録なら"r"だと思うが自信無し
if (仮登録有効の場合) {
$head = "t";
} elseif (仮登録無効の場合(即本会員)) {
$head = "r";
}

// 乱数表のシードを決定
srand((double)microtime() * 54234853);

// パスワード文字列の配列を作成
$character = "abcdefghkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ2345679";
$pw = preg_split("//", $character, 0, PREG_SPLIT_NO_EMPTY);

$password = "";
for($i = 0; $i<$pwLength; $i++ ) {
$password .= $pw[array_rand($pw, 1)];
}

// 同一ホスト内で一意のIDを生成 $headをプレフィックスに使うんだね
$id = uniqid($head);
// $secret_keyを作成
$secret_key = $id.$password;

ということになるらしい。

と、言うことでこのアルゴリズムにしたがって適当にsecret_keyのフィールドを埋めてやろうと思います。

  1. そんな大層なものじゃなさそうだけど []
  2. 実は僕、アルゴリズムって良くわからないんですがこういうのをアルゴリズムって言っていいんですよね?「決められた何かの値を導き出す法則」くらいに考えてますが合ってますか? []
  3. いつもみたいにファイルを追って説明しようとおもったのですが、これはあんまり需要が無いだろうなと思い直して、こんな感じでまとめることにします。 []

▼Advertisement

【Webサービスを作ろう!好評連載中!】このエントリーをはてなブックマークに追加 はてなブックマーク -
⇒ #1 挫折しないウェブサービス開発のための4つの心構え
Webサービス、Webアプリケーション開発に興味のある方は必見です!

【2月のイチオシ記事】このエントリーをはてなブックマークに追加 はてなブックマーク -
⇒ 社長になった私がお金にならないデータベースサイトを作った7つの理由

Written by suzuki in: 記事 | タグ: ,

2件のコメント

  • oh より:

    EC-CUBE外のプログラムで、簡易会員というものを作成しております。
    大変参考になりました。
    ありがとうございました。

  • suzukenn より:

    お役に立ててよかったです^^
    ご丁寧にありがとうございました。

RSS feed for comments on this post.


| I have been indebted to Aeros Theme. |