我在服务控制器,登录操作(/ service / login),我想将名称,电子邮件和公司传递给配置文件控制器,注册操作(/ profile / register)。
目前我正在这样做
$this->_redirect('/profile/register/?name='.$name.'&emailid='.$email.'&companyid='.$company);
但是我希望将这些信息传递给/ profile / register,以便用户无法在网址中看到这些信息。
我尝试使用$ this-> _forward就像这样
$params = array(
name=>$name,
emailid=>$email,
companyid=>$company
);
$this->_forward('register','profile',null,$params);
但这不起作用。还有其他办法吗?
答案 0 :(得分:3)
要安全地传递参数,您应该将数据存储在会话中,或者如果您不能使用会话,则应该存储在数据库中。
您可以使用Zend_Session临时存储数据,直到您可以检索它的下一个页面视图,它将被删除(或者您可以保留它)。
$s = new Zend_Session_Namespace('registrationData');
$s->setExpirationHops(1); // expire the namespace after 1 page view
$s->name = $name;
$s->email = $email;
$s->companyId = $company;
// ...
return $this->_redirect('/profile/register);
然后在profile/register
:
$s = new Zend_Session_Namespace('registrationData');
$name = $s->name;
$email = $s->email;
$companyId = $s->companyId;
// when this request terminates, the data will be deleted if you leave
// setExpirationHops as 1.