我在CodeIgniter中有以下课程
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class ZoEncryption {
public $_CI;
public function __construct() {
$this->_CI = & get_instance();
$this->_CI->encrypt->set_cipher(MCRYPT_BLOWFISH);
$this->_CI->encrypt->set_mode(MCRYPT_MODE_CBC);
}
function encode($str, $key) {
return $this->_CI->encrypt->encode($str, $key);
}
function decode($str, $key) {
return $this->_CI->encrypt->decode($str, $key);
}
}
?>
我在我的ci应用程序中使用此库来加密和解密数据库中的用户内容。我正在指定密码和模式,因为我想在加密/解密中具有特定的逻辑,如果编码改变,我不希望将来出现意外。
此外,我正在使用password_compat库,以便尽早实现PHP 5.5的新密码散列模式。
这个库允许我根据PHP的未来构建我的用户密码哈希逻辑。
如果我没有在构造函数中设置密码和模式并将相关行放在我的基本控制器构造函数中,那么我的密码哈希不起作用。
具体来说,如果我在MY_Controller中添加以下两行,则密码验证不起作用。
以下行是否会影响全球CI?
$CI->encrypt->set_cipher(MCRYPT_BLOWFISH);
$CI->encrypt->set_mode(MCRYPT_MODE_CBC);
答案 0 :(得分:1)
不,它不会更改全局设置。它只会影响直接附加到您定义它的位置的代码。
如果您希望更改是全局更改,则必须破解核心create a library或override/extend核心。