0

それで、

私がやりたいことはこれです:

パスワードをハッシュするコード スニペットがあります。それをクラスに入れたいのですが、コントローラーからクラスを呼び出し、クラスでの操作の戻り値を取得してモデルに転送します。

  1. まず、コントローラからライブラリのクラスに値を渡します

    $params = array('pass' => 'pass'); $this->load->library('myblowfish', $params);

    1. ライブラリのクラスは 2 つの値を返す必要があります。その書き方がわからない。このようなもの ?

    return array($salt, $hashed_pa​​ssword);

    1. 次に、コントローラーはこれらの値を選択してモデルに転送する必要があります。それらをモデルに渡す方法は知っていますが、値が呼び出されたクラスからそれらを受け取る方法はよくわかりません。
4

2 に答える 2

1

独自のライブラリを実装しようとしていますか?

  1. ライブラリフォルダーにクラスファイルを作成して実装します(メソッド hash(password) を使用した Password_generator.php としましょう)
  2. コントローラーで、 $this->library->load('Password_generator'); と記述してインポートします。
  3. 次に、コントローラーで $hash = $this->password_generator->hash($param); と呼び出します。
  4. $hash を慣れ親しんだ方法でモデルに渡すことができます

2 つの値を返したい場合は、次のようにできます。

$result = array('salt' => $salt, 'hash' => $hash);
return $result;

次のようにアクセスします。

$result = $this->password_generator->hash($param);
$salt = $result['salt'];
$hash = $result['hash'];

印刷は次のように実行できます。

echo 'Salt: '.$salt.'</br>';
echo 'Hash: '.$hash.'</br>';

print_r($result);

上記のことを試してみたが、うまくいかなかったと言っていますか?

私自身は次のようなフラグ付きのメソッドを好みますが:

function hash($password_param, $opCode = "hash"){
   //... body

   if($opCode == "hash")
        return $hash;
   return $salt;
}

この方法の欠点は、両方が必要な場合は 2 回呼び出す必要があることです。

于 2012-08-09T17:24:03.730 に答える
0

このような何かのために私はします:

application / libraries / passwords.php

class Passwords {
    public function __construct($pass = null) {
        $this->password = $pass;
    }

    public function hash() {
        $salt = ...;//generate your salt
        $pass = ...;//create your hash
        return array($salt, $pass);
    }
}

application / controllers / yourController.php

class theControler extends CI_Controller {
    ...

    public function hasher ($pass) {
        include './application/libraries/password.php';

        $pass = new Password($pass);
        list($salt, $hash) = $pass->hash();

        //do what you will with the salt and hash
    }
}
于 2012-08-09T21:56:41.030 に答える