gpt4 book ai didi

生产服务器和本地服务器上的 codeigniter 加密

转载 作者:行者123 更新时间:2023-12-02 00:36:16 26 4
gpt4 key购买 nike

使用 codeigniter 的加密类的加密密码会在两台不同的机器上产生相同的加密密码吗?例如,我有一个与一些主机在线的生产站点,并且我在我的计算机上进行了本地安装。但是当我将数据库从一个恢复到另一个时,密码不匹配。

最佳答案

我知道这是一个老问题,但我遇到了同样的问题并且想通了..

CodeIgniter 的加密库在不同的环境中表现不同。具体来说,该库会自动检测您是否安装了 PHP mcrypt 扩展,如果安装了,则使用与未安装时完全不同的算法。

您可能在您的服务器上安装了 mcrypt 而不是在您的开发环境中,反之亦然。

有两种方法可以解决这个问题。无论哪种方式,您都需要通过创建 MY_Encrypt.php 类来扩展内置加密类:

选项一:始终使用 mcrypt,如果未安装则大声失败:

class MY_Encrypt extends CI_Encrypt
{
public function __construct()
{
if ( ! function_exists('mcrypt_encrypt')) {
throw new Exception("Encryption requires mcrypt PHP extension!");
}

parent::__construct();
}
}

选项二:永远不要使用 mcrypt,即使它已安装:

class MY_Encrypt extends CI_Encrypt
{
public function __construct()
{
parent::__construct();

//Pretend Mcrypt doesn't exist no matter what
$this->_mcrypt_exists = FALSE;

}
}

这将导致 CodeIgniter 加密在每个环境中都以相同的方式运行。

恕我直言,加密库应该从不悄悄地根据环境更改用于加密的算法。自动更改加密算法是个糟糕的主意。

关于生产服务器和本地服务器上的 codeigniter 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com