codeigniter:加密 URL 参数
codeigniter: Encryption URL parameter
我想像这样加密 URL 参数:
我在 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);
必须 return 而不是 33 而是随机字符串
所以我错过了什么?
如果两个 var_dumps 都返回 33,则 app_encrypt_mode 配置选项不存在或未设置为 TRUE,并且默认为 return $str;
此外,CI 加密库已弃用,您应该改用加密库。即:
$ci->encryption->encrypt($str);
和 $ci->encryption->decrypt($str);
我想像这样加密 URL 参数:
我在 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);
必须 return 而不是 33 而是随机字符串
所以我错过了什么?
如果两个 var_dumps 都返回 33,则 app_encrypt_mode 配置选项不存在或未设置为 TRUE,并且默认为 return $str;
此外,CI 加密库已弃用,您应该改用加密库。即:
$ci->encryption->encrypt($str);
和 $ci->encryption->decrypt($str);