У меня возникают проблемы с хранением переменных в переменной $_SESSION
. Я использую структуру Zend и создаю трехэтапную форму заявки. Теперь, когда первый шаг выполняется, я храню данные в базе данных MySQL и сохраняю возвращаемый идентификатор в переменной сеанса. Затем я пересылаю страницу другому контроллеру (шаг 2). Когда я пересылаю запрос, все работает нормально, и я могу прочитать идентификатор из переменной сеанса. Но когда я представляю вторую форму (которая имеет тот же контроллер шага 2 как действие), сеанс теряется. Я пытаюсь выполнить var_dump
, и он возвращает NULL
.Сохранение сеанса с помощью рамки Zend
Вот код:
public function organizationAction()
{
$this->view->vals="";
$form=$this->getOrganizationForm();
$this->aplid=$_SESSION['appid'];
var_dump($_SESSION);
$firsttime=$this->getRequest()->getParam('firsttime',0);
//if(null==$this->aplid) $this->_forward('index','index');
if ($this->getRequest()->isPost() && $firsttime==0) {
if (!$form->isValid($_POST)) {
// Failed validation; redisplay form
$this->view->form = $form;
return false;
}
var_dump($_SESSION);
$values = $form->getValues();
$db=new Util_Database();
if($db->insertOrganization($values,$this->aplid))
$this->_forward('final');
else echo "An error occured while attempting to submit data. Please try agian";
}
$this->view->form=$form;
}
Что здесь проблема? Я попытался сохранить session_id
в форме, а затем установить его до session_start()
, но он запускает совершенно новый сеанс. Пожалуйста помоги!
Не используйте переменную $ _SESSION напрямую (а также собственные функции сеанса php) при работе с картой Zend, это одна из тех вещей, которые они рекомендуют больше всего. Zend имеет собственную систему управления сессиями с соответствующими классами. ... вам нужно проголосовать за не чтение документов: P – olanod
Не знал, что у них есть отдельный класс для обработки сеанса. Это недостаток обучения из книги новичков, а затем сразу же попытка сделать приложение для реального мира. Спасибо за головы! :) –