Невозможно использовать Zend_Session_Namespace в SocialEngine

Я пытаюсь использовать Zend_Session_Namespace, чтобы помочь мне с задачей изменения пароля пользователя. Для этого мне нужно сохранить некоторые значения их запроса GET при первом посещении страницы сброса. Я хотел бы сделать это с Zend_Session_Namespace. Затем я хочу обновить пароль пользователя в его почтовом запросе (с той же страницы), используя значения, которые я сохранил в Zend_Session_Namespace. Проблема в том, что значения, сохраненные в Zend_Session_Namespace, являются нулевыми, когда я к ним обращаюсь. Тем не менее, я все еще могу сделать работу с типичным $_SESSION переменная. Кто-нибудь знает, где я не прав? Я пропускаю некоторые советы по использованию Zend_Session_Namespace? Нужно ли использовать Zend_Registry или что-то в этом роде?

Мой код для действия выглядит следующим образом:

/**
* This handles password change
*/
public function changepasswordAction() {
$passwordForm = new Advancedsms_Form_ChangePassword();
$this->view->form = $passwordForm;

//If it is NOT post, the user has to provide recovery code and phone number
if(!$this->getRequest()->isPost()) {
$phone = filter_input(INPUT_GET, 'phone', FILTER_SANITIZE_URL);
$recovery = filter_input(INPUT_GET, 'recovery', FILTER_SANITIZE_URL);
$this->session= new Zend_Session_Namespace('RecoverySession');
$this->session->phone= $phone;
$this->session->recoveryCode = $recovery;
print_r($this->session);
$_SESSION['phone'] = $phone;
$_SESSION['recovery'] = $recovery;
}
if($this->getRequest()->isPost()) {
$params = $this->getRequest()->getParams();
print_r($params);
echo 'phone: ' . $this->session->phone .PHP_EOL;
echo 'recovery: ' . $this->session->recoveryCode . PHP_EOL;
echo $_SESSION['phone'] . ',' . $_SESSION['recovery'];
}
}

0

Решение

Вам нужно переместить эту строку:

$this->session= new Zend_Session_Namespace('RecoverySession');

до, если заявления. На данный момент ваш echo 'phone: ' . $this->session->phone линия ничего не будет делать, потому что $this->session не устанавливается на запросы POST.

Вы должны всегда писать код PHP с уровнем ошибок PHP, максимально приближенным к значению, которое будет отображать предупреждения для подобных проблем.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]