Пользователь заходит на сайт платного тестирования, авторизуется, формируется заказ и пользователю выставляется счет, после чего пользователь переходит на платежную страницу обслуживающего нас банка для оплаты картой.
Проблема: После того как оплата успешно проведена, пользователь нажимает кнопку на странице банка "Вернуться на сайт", а именно:
<input type="button" onclick="location.href="http://www.mysite.com/test"" value="Вернуться на сайт">
Однако вместо того чтобы попасть на страницу тестирования пользователь вновь попадает на страницу авторизации, так как сессия, содержащая данные пользователя вылетела. Примечательно то, что уже авторизовавшись в этот раз и последующие разы все работает нормально. Но стоит нажать "Выйти" на сайте и попытаться пройти тестирование вновь, проблема появляется.
Сайт сделан на Yii. Вот код UserIdentity:
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$user=User::model()->findByAttributes(array('name'=>$this->username));
if($user===null){
$this->errorCode=self::ERROR_USERNAME_INVALID;
}
else if(!$user->validatePassword($this->password)){
$this->errorCode=self::ERROR_PASSWORD_INVALID;
}
else
{
$this->_id=$user->id;
$this->username=$user->name;
if(!empty($user->role))
$this->setState('role', $user->role);
$this->setState('confirmed', $user->confirmed);
$this->errorCode=self::ERROR_NONE;
}
return $this->errorCode==self::ERROR_NONE;
}
public function getId()
{
return $this->_id;
}
}
Пробовал сохранить обычную сессию типа $_SESSION[""], но она тоже обнуляется после возврата с банка на сайт.
Битый час потратил на решение этой проблемы. В чем может быть дело? Может, кто-то с этим сталкивался? Как её решить? Если какого-то кода не хватает, дайте знать.
Спасибо.