在Zend中安全地传递参数

时间:2012-03-13 21:44:04

标签: php security zend-framework url redirect

我在服务控制器,登录操作(/ 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);

但这不起作用。还有其他办法吗?

1 个答案:

答案 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.

另见Zend_Session - namespace expiration