Dobra, widzę, że coraz większy poziom "rozwiązań" się pojawia.
Dla potomnych moje rozwiązanie (CodeIgniter).
Sprawdzamy czy nie ma jakiejś zapisanej akcji.
Jeżeli jest to przypisujemy do POST czyli symuluje jakby POST był wysłany ponownie.
Koniecznie kasujemy żeby potem się gdzieś przypadkiem ponownie nie wywołało.
Przy normalnym wysłaniu żądania sprawdzamy czy zalogowany.
Jeżeli nie to zapisujemy akcje i robimy normalnie logowanie.
Po logowaniu musi tylko wrócić na stronę i wykonuje się powyższy akapit.
Dla normalnego wywołania (zalogowanego) nic się nie dzieje nietypowego więc rozwiązanie jest dość transparentne.
/* Checks logged now? */
$saved_action = $this->session->userdata('saved_action');
if (!empty($saved_action)) {
$post = $saved_action['post'];
$this->session->unset_userdata('saved_action');
}
else
{
$post = $this->input->post(NULL, TRUE);
}
/* Cart or Wish list */
if ($post)
{
if (empty($this->data['logged'])) {
/* not logged so store action and go to login page */
$this->save_post_action('design', $post); // Back URL and DATA
$this->check_access(); // Redirect
}
else
{
if (isset($post['add_wish'])) {
$this->load->model('account_model');
$this->account_model->add_wish($this->logged_id, $post['item_id'], $post['size']);
redirect('account/wishlist');
}
}
}