0

所以,

我想做的是:

我有一个散列密码的代码片段。我想把它放在一个类中,我将从 Controller 调用该类,并在该类中检索操作的返回值并将其转发给 Model。

  1. 首先,从控制器我将一个值传递给库的类

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

    1. 库的类应该返回 2 个值。不知道怎么写。像这样的东西?

    返回数组($salt,$hashed_pa​​ssword);

    1. 然后控制器应该选择这些值并将它们转发给模型。我知道如何将它们传递给模型,但不知道如何从它调用的值的类中接收它们。
4

2 回答 2

1

您是否正在尝试实现自己的库?

  1. 在库文件夹中创建并实现您的类文件(让我们说 Password_generator.php 与方法 hash(password) )
  2. 在控制器中,通过编写 $this->library->load('Password_generator'); 来导入它
  3. 然后在你的控制器中调用它, $hash = $this->password_generator->hash($param);
  4. 您现在可以按照习惯的方式将 $hash 传递给模型

如果我想返回两个值,你可以按你说的做:

$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;
}

这种方式的缺点是如果你想要两个都必须调用它两次。

于 2012-08-09T17:24:03.730 回答
0

对于这样的事情,我会做:

应用程序/库/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);
    }
}

应用程序/控制器/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 回答