我在网站上生成了一个简单的整数网址,允许用户查看过去的订单.
http://site.com/order_id/145323
问题是只需更改该号码然后查看其他人的订单就很容易了.我想知道在url中编码这个数字的简单方法是什么,然后让php解码它以便它可以运行控制器?它不一定非常安全,因为某些东西使得人们只需更改数字就可以轻松查看数据.我尝试过这样的事情:
order_id/<?php echo base64_encode($theOrder); ?>
然后在我试过的控制器动作中:
if($orderId = (int) $this->getRequest()->getParam('order_id') && Mage::getSingleton('customer/session')->isLoggedIn()){
$orderId = (int) $this->getRequest()->getParam('order_id');
$orderId = base64_decode($orderId);
$order = Mage::getModel('sales/order')->load($orderId);
Mage::register('current_order', $order);
$this->loadLayout();
$this->renderLayout();
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.什么是在网址中隐藏此参数的好方法?
你做错了.而不是试图掩盖id你只需要确保(检查后端)id属于用户.
如果id不属于该用户,则返回状态代码403 Forbidden或者简单地返回状态代码404 Not Found.