<?php
defined('BASEPATH') OR exit('No direct script access allowed');
define('URL_TO_PARAM_KEY', 'x09c22f5');
class Encryption {
protected $CI;
public function __construct() {
$this->CI =& get_instance();
}
public static function decryptParam($url) {
$ns1 = base64_decode($url);
$result = $this->CI->xor_string($ns1, URL_TO_PARAM_KEY);
return json_decode($result);
}
public function xor_string($string, $key) {
for ($i = 0; $i < strlen($string); $i++)
$string[$i] = ($string[$i] ^ $key[$i % strlen($key)]);
return $string;
}
}
请帮助
答案 0 :(得分:2)
我建议不要使用静态,或者也要使您需要的功能静态。您可能不想在类中创建该类的实例。那只是您不需要的很多开销。您也可以将所有这些都移到帮助文件中(并非CI中的所有内容都必须在一个类中)。
class Encryption {
/* not needed
protected $CI;
public function __construct() {
$this->CI =& get_instance();
}
*/
public static function decryptParam($url) {
$ns1 = base64_decode($url);
$result = self::xor_string($ns1, URL_TO_PARAM_KEY);
return json_decode($result);
}
public static function xor_string($string, $key) {
for ($i = 0; $i < strlen($string); $i++)
$string[$i] = ($string[$i] ^ $key[$i % strlen($key)]);
return $string;
}
}
答案 1 :(得分:0)
由于两个方法都属于同一类,因此只需替换以下内容即可:
$this->CI->xor_string($ns1, URL_TO_PARAM_KEY);
与此:
$this->xor_string($ns1, URL_TO_PARAM_KEY);