使用str_replace()
后解码编码值时遇到问题。它与编码完美配合,但当我尝试解码它时,它什么都不返回。我还配置了$config['encryption_key']
,但我仍然在codeigniter 3.x中遇到此问题。请帮我解决这个问题。
/*encoding*/
$tmp = $this->encrypt->encode($val);
$encoded_val = str_replace(array('+','/','='),array('-','_',''),$tmp); //removal of specific characters to eliminate uri segment issue
return $encoded_val;
/*decoding*/
$decoded_val = str_replace(array('-','_',''),array('+','/','='),$val); //getting original encoded value
$tmp = $this->encrypt->decode($decoded_val);
return $tmp;
//encryption key
$config['encryption_key'] = "someencryptionkey";
答案 0 :(得分:2)
您的代码无法可靠地运行:只有当您的编码值不包含-
,_
或{{1}中的任何一个时,您才能获得原始值的唯一时间} characters。
如果确实如此,您的替换将无法解码,因为当您这样做时:
=
您将无法获得使用$decoded_val = str_replace(array('-','_',''),array('+','/','='),$val);
时的值。例如,所有$this->encrypt->encode($val)
字符都将转换为-
个字符,因此如果您的原始编码值有任何字符,则现在不会。
当然用+
替换空字符并没有任何意义。
为了能够可靠地编码和解码,在编码之后/解码之前不要进行任何字符替换。