我想加密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
同时产生33var_dump('ENCODE:'.$encode);
必须返回随机字符串,而不是33
我错过了什么?
1条答案
按热度按时间mpgws1up1#
如果两个var_dump都返回33,则app_encrypt_mode配置选项不存在或未设置为TRUE,并且默认为
return $str;
此外,CI Encrypt库已弃用,您应改用Encryption库。即:
$ci->encryption->encrypt($str);
和$ci->encryption->decrypt($str);