Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Kontynuacja akcji POST po zalogowaniu
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


W jaki sposób rozwiązujecie wymuszenie logowania w momencie wykonania jakiejś akcji.
Przykładowo "Dodaj komentarz" -> przekierowuje do /login, logowanie przebiega pomyślnie i w jaki sposób powtórzyć wysłanie komentarza.

W przypadku GET jest dosyć prosto - po prostu po zalogowaniu robimy redirect na url wyjściowy.
Przy POST już tak prosto nie jest.

Sesja? Pola hidden?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


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.


  1. /* Checks logged now? */
  2. $saved_action = $this->session->userdata('saved_action');
  3. if (!empty($saved_action))
  4. {
  5. $post = $saved_action['post'];
  6. $this->session->unset_userdata('saved_action');
  7. }
  8. else
  9. {
  10. $post = $this->input->post(NULL, TRUE);
  11. }
  12.  
  13. /* Cart or Wish list */
  14. if ($post)
  15. {
  16. if (empty($this->data['logged']))
  17. {
  18. /* not logged so store action and go to login page */
  19. $this->save_post_action('design', $post); // Back URL and DATA
  20. $this->check_access(); // Redirect
  21. }
  22. else
  23. {
  24. if (isset($post['add_wish']))
  25. {
  26. $this->load->model('account_model');
  27. $this->account_model->add_wish($this->logged_id, $post['item_id'], $post['size']);
  28. redirect('account/wishlist');
  29. }
  30. }
  31. }


Ten post edytował markonix 1.09.2013, 17:09:03
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 09:44