codeigniter 密码触发器:加密URL参数

gzszwxb4  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(162)

我想加密URL参数,如下所示:
https://hello.com/questions/k0jUhPcRBJshpiXLpUSug_NhgPk89O7eS-jerHk6go360U9rl8LazZo6DR6M1N4IqG0PYIwPyKhQ
我在Helper中创建了编码和解码函数

Helper 

if ( ! function_exists('encode'))
    {
        function encode($str = NULL)
        {
            $ci =& get_instance();
            if( $ci->config->item('app_encrypt_mode') ==  TRUE){
                $ci->load->library('encrypt');
                $ci->encrypt->set_mode('MCRYPT_MODE_CFB');
                return $ci->encrypt->encode($str);
            } else {
                return $str;
            }

        }
    }

if ( ! function_exists('decode'))
    {
        function decode($str = NULL)
        {
            $ci =& get_instance();
            if( $ci->config->item('app_encrypt_mode') ==  TRUE){
                $ci->load->library('encrypt');
                $ci->encrypt->set_mode('MCRYPT_MODE_CFB');
                return $ci->encrypt->decode($str);
            } else {
                return $str;
            }
            
        }
    }

我在视图和控制器上使用了这个函数来隐藏URL参数。

VIEW

 <a class=" btn component-room d-block href="<?= site_url('Request/'.urlencode(encode($data['id']))); ?>">Click Me!</a>

<?php
$encode = urlencode(encode($data['id']);
var_dump('ENCODE:'.$encode);
var_dump('DECODE:'.decode(urldecode($encode));
?>

$data['id']的值为33
var_dump同时产生33
var_dump('ENCODE:'.$encode);必须返回随机字符串,而不是33
我错过了什么?

mpgws1up

mpgws1up1#

如果两个var_dump都返回33,则app_encrypt_mode配置选项不存在或未设置为TRUE,并且默认为return $str;
此外,CI Encrypt库已弃用,您应改用Encryption库。即:
$ci->encryption->encrypt($str);$ci->encryption->decrypt($str);

相关问题