抱歉我的英語我是 Codeigniter 4 的新手。我嘗試從加密的 post 請求中解密資料。我成功地在視圖中加密了我的資料,但在使用 javascript 發布后無法在我的控制器中再次解密。這是我的代碼我的控制器
<?php namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\Store_MDL;
class Home extends BaseController
{
protected $ProductModel;
protected $request;protected $session;protected $encrypt;
public function __construct() {
$this->ProductModel = new Store_MDL();
$this->request = \Config\Services::request();
$this->encrypt = \Config\Services::encrypter();
$this->session = \Config\Services::session();
$this->session->start();
}
public function index()
{
$data['encrypter'] = $this->encrypt;
return view('home_page', $data);
}
public function encthis()
{
$val = $_POST['str'];
$encrypters = $this->encrypt;
//$ciphertext = $encrypters->encrypt('My secret message');
echo $encrypters->decrypt($val);
//echo $val;
return view('product/product-v');
}
}
這是我的觀點 home_page.php
<?php $n=0; foreach ($product as $rows){
$n ;
//echo count($rows);
if($n < count($rows)){
$dev = '<div ></div>';
}else{$dev = '';}
if($n % 2 == 0){
echo '<a href="#" value = "'.base_url().'/home/encthis" data-v="'.$encrypter->encrypt($rows['prno']).'" class = "n-link"><div >
<div >
<h1 >'.$rows['prname'].'</h1>
<p >
'.$rows['prdescription'].'
</p>
<h2 >Rp. '.$rows['prprice'].'</h2>
</div>
<div >
<img src="'.base_url().'/public/uploads/'.$rows['prpath'].'/'.$rows['primage'].'" >
</div>
</div></a>'.$dev;
}else{
echo '<a href="#" value = "'.base_url().'/home/encthis" data-v="'.$encrypter->encrypt($rows['prno']).'" class = "n-link"><div >
<div >
<img src="'.base_url().'/public/uploads/'.$rows['prpath'].'/'.$rows['primage'].'" >
</div>
<div >
<h1 >'.$rows['prname'].'</h1>
<p >
'.$rows['prdescription'].'
</p>
<h2 >Rp. '.$rows['prprice'].'</h2>
</div>
</div></a>'.$dev;
}
} ?>
比這里我的腳本
<script>
$('.n-link').on('click', function () {
var link = $(this).attr('value');
var pos = $(this).attr('data-v');
$.post(link, { str:pos})
.done(function(data) {
document.getElementById("context").innerHTML = data;
});
});
</script>
我總是收到通知 500(內部服務器錯誤)。
uj5u.com熱心網友回復:
經過幾個小時的掙扎,我找到了一些線索,只需改變
$encrypter->encrypt($rows['prno']);
和 base64_encode($encrypter->encrypt($rows['prno']));
并在控制器中,更改
$encrypters->decrypt($val);
和 $encrypters->decrypt(base64_decode($val));
希望有用
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/394473.html
標籤:javascript 代码点火器 邮政 加密
