【问题标题】:CodeIgniter 3.1.3 Sending Encrypted URL Variable occasionally not workingCodeIgniter 3.1.3 发送加密的 URL 变量偶尔不起作用
【发布时间】:2017-02-07 02:03:04
【问题描述】:

我正在尝试使用新的 CI 加密库通过 url 传递加密的 user_ID 变量,将变量传递到控制器和模型中,以根据传递的变量值运行查询。问题是有时它正在工作,有时它不是。我按照用户指南中的说明设置了我的加密密钥,并且我已经在自动加载中加载了库:

$key = bin2hex($this->encryption->create_key(16));

并将密钥设置到 config.php:

$config['encryption_key'] = bin2hex('some_bin2hex_numbers_and_letters');

查看(获取要传递的变量):

<div class="col-sm-8">
    <?php foreach ($user_list as $row) {
        $ID = $row['user_ID'];
        $UID = $this->encryption->encrypt($ID);
        $username = $row['user_Username'];
        $firstname = $row['user_FirstName'];
        $lastname = $row['user_LastName']; 
    ?>

    <a href="<?php echo base_url()?>Admin/User?uid=<?php echo $UID;?>">
        <h2 style="font-family:'Comic Sans MS', cursive;\"> <?php echo $username." (".$firstname." ".$lastname.") </h2> <br />" ?>
    </a>

    <?php } ?>
</div>

控制器:

public function User() {
    $ID  = $this->input->get('uid');
    $UID = $this->encryption->decrypt($ID);
    $data['user'] = $this->Admin_model->getUserData($UID);
    $this->load->view('pages/admin/admin_header');  
    $this->load->view('pages/admin/admin_user_data', $data);    
    $this->load->view('templates/footer2'); 
}

model(获取传递的变量并返回一行):

public function getUserData($UID) {
    $query = $this->db->query("SELECT * FROM `tbl_user` WHERE `tbl_user`.`user_ID`='$data'");
    $row = $query->row();
    return $row;
}

view admin_user_data(显示传递变量结果的视图):

<h1>
    <?php 
    echo "User ID: ".$user->user_ID."<br />";
    echo "Username: ".$user->user_Username."<br />";
    echo "First Name: ".$user->user_FirstName."<br />";
    echo "Last Name: ".$user->user_LastName."<br />";
    ?>
</h1>

【问题讨论】:

  • 你找到答案了吗?因为我也遇到了同样的问题。如果您知道答案,请上传。

标签: php codeigniter url encryption


【解决方案1】:

其实这个方法对我有用。

用于加密

$this->load->library('encryption'); 

$this->encryption->initialize(
array(
       'cipher' => 'aes-256',
       'mode' => 'ctr',
       'key' => '4lWC8cegO92vhTRbiRy21sh90TwFz6DR' // A random key generated by visiting http://randomkeygen.com/
     )
);   

$enc_id = $this->encryption->encrypt($id);

用于解密

    $this->load->library('encryption'); 

    $this->encryption->initialize(
    array(
            'cipher' => 'aes-256',
            'mode' => 'ctr',
            'key' => '4lWC8cegO92vhTRbiRy21sh90TwFz6DR' // Same key you used for encryption
        )
    );  

    $dec_id = $this->encryption->decrypt($enc_id);

上述方法每次都对我有用。如果您遇到任何问题,请在下方评论。

【讨论】:

  • 我也遇到了同样的问题。你能帮我看看我应该在哪里添加 $this->encryption->initialize() 代码吗?我应该添加 config.php 吗?
猜你喜欢
  • 2016-10-01
  • 2014-03-03
  • 1970-01-01
  • 2013-09-20
  • 2019-01-16
  • 2017-11-10
  • 2012-05-17
  • 1970-01-01
  • 2019-09-23
相关资源
最近更新 更多