如何模糊网址的参数

Zac*_*Zac 1 php magento

我在网站上生成了一个简单的整数网址,允许用户查看过去的订单.

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)

但这不起作用.什么是在网址中隐藏此参数的好方法?

Pee*_*Haa 6

你做错了.而不是试图掩盖id你只需要确保(检查后端)id属于用户.

如果id不属于该用户,则返回状态代码403 Forbidden或者简单地返回状态代码404 Not Found.