безопасная передача параметров в Zend - PullRequest
1 голос
/ 14 марта 2012

Я нахожусь в контроллере службы, действие входа в систему (/ service / login) и я хочу передать имя, адрес электронной почты и компанию контроллеру профиля, зарегистрировать действие (/ profile / register).

В настоящее время я делаю так

$this->_redirect('/profile/register/?name='.$name.'&emailid='.$email.'&companyid='.$company);

Но я хочу передать эту информацию в / profile / register таким образом, чтобы пользователь не мог увидеть ее в URL.

Я пытался с $ this -> _ forward, как это

$params = array(
name=>$name,
emailid=>$email,
companyid=>$company
);
$this->_forward('register','profile',null,$params);

Но это не работает. Есть ли другой способ сделать это?

1 Ответ

3 голосов
/ 14 марта 2012

Для безопасной передачи параметров вы должны сохранить данные в сеансе или, если вы не можете использовать сеансы, то в базе данных.

Вы можете использовать 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 - срок действия пространства имен

...