我使用PHP和CI框架,我想通过URL发送变量,但我希望它有点加密。
例如,我想发送名为id的变量:
www.trythis.com/site?id=123
我希望它是
www.trythis.com/site?id=VkxSiOW31S
加密文本只是一个例子。 我怎样才能做到这一点?或者是否有CI功能可以做到这一点?
注意:我已经尝试了base64_encode,但由于其特殊字符(如==),它无法以某种方式在CI中使用。
答案 0 :(得分:1)
CodeIgniter有Encryption Class。您可以使用该类进行加密和解密。要配置,请执行以下步骤
设置密钥
$config['encryption_key'] = "YOUR KEY";
初始化课程
$this->load->library('encrypt');
编码使用
$id = '123';
$encrypted_id = $this->encrypt->encode($id);
//$url = 'www.trythis.com/site?id=' . $encrypted_id;
并解码
//$encrypted_id = $_GET['id'];
$decrypted_id = $this->encrypt->decode($encrypted_id);
答案 1 :(得分:0)
我为了同样的目的创造了这个课程:
class Cypher
{
public $encrypted;
public $decrypted;
public function __construct($_value) {
$this->encrypted = $this->encrypting($_value);
$this->decrypted = $this->decrypting($_value);
}
private function encrypting($_value) {
$key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$utf8 = utf8_encode($_value);
$cipher = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $utf8, MCRYPT_MODE_CBC, $iv);
$cipher = $iv.$cipher;
$base64 = base64_encode($_value);
return $base64;
}
private function decrypting($_value) {
return base64_decode($_value);
}
}
让我们试试你的例子:
$cypher = new Cypher('123');
header("location: www.trythis.com/site?id=".$cypher -> encrypted);
在www.trythis.com/site页面:
$id = isset($_GET['id']) ? new Cypher($_GET['id']) : "";
echo $id -> decrypted;