在我的ZF2应用程序中我想加密我的参数,这样当有/ product / update / 1这样的链接时会显示为/ product / update / cdsk45kdi340kd0wlw0或类似的东西。我需要在控制器和视图中加密和解密它。对此最好的方法是什么?谢谢你的帮助。
答案 0 :(得分:1)
让路线看起来像这样
'product' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/product/update[/:hashedid]',
'constraints' => array(
'hashedid' => '[a-zA-Z0-9-_\.]+',
),
'defaults' => array(
'controller' => 'Index',
'action' => 'index',
),
),
),
并在控制器中
$hashedid = $this->params()->fromRoute('hashedid', 0);
$id = $this->dehash($hashedid);
答案 1 :(得分:1)
这里的要点是你想避免用户猜猜网址。我会为每个产品生成一个随机令牌。将此令牌与产品的ID(以及所有其他属性)一起存储在您的数据库中。
要生成随机字符串作为标记,您可以使用Zend\Math\Rand
:Rand::getString(10);
为您提供10个字符的随机字符串。将产品存储在数据库中时,请为每个产品生成随机字符串。然后,在您的控制器中,您不会根据标识符(id)获取产品,而是基于令牌。