Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przekazywanie komunikatów przez zmienne sesji
q3d
post 19.05.2013, 11:36:58
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


W przypadku poprawnego wypełnienia formularza zapamiętuje w zmiennej sessji komunikat i korzytając z header() przekierowuje na stronę z wynikami. Na stronie z wynikami prezentuje komunikaty w tym te znajdujące się w sessji. Wykorzystuje do tego diwe funkcje:

  1. <?php
  2. function getMessage(&$a){
  3. foreach($a as $v) {
  4. if (is_array($v)) {
  5. getMessage($v);
  6. } else {
  7. echo '<p>'.$v.'</p>';
  8. }
  9. }
  10. }
  11.  
  12. function showMessage ($message) {
  13.  
  14. if ( count($_SESSION['message']['info']) != 0 ) {
  15. echo '<div class="alert alert-success">';
  16. getMessage($_SESSION['message']['info']);
  17. echo '</div>';
  18.  
  19. //$_SESSION['message']['info'] = array();
  20. }
  21. }
  22. ?>



Jeżeli jednak odkomentuję w funkcji showMessage ($message) linię:

  1. //$_SESSION['message']['info'] = array();


która w moim zamiarze ma wyczyścić komunikaty przechowywane w sesji tak by nie wyświetlały się na kolejnych stronach to nie wyświetla mi się ten komunikat gdyż jak zauważyłem wartość zwracana przez count($_SESSION['message']['info']) równa się ZERO. Nie ukrywam jest to dla mnie pewna zagadka...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Kshyhoo
post 19.05.2013, 12:19:12
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A jak użyjesz zamiast $_SESSION['message']['info'] = array(); tego: unset($_SESSION['message']['info']);?


--------------------
Go to the top of the page
+Quote Post
q3d
post 19.05.2013, 12:51:26
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


To samo czyli brak komounikatu i dodatkowo: Notice: Undefined index: info.

Jeżeli np. przed:

  1. $_SESSION['message']['info'] = array();


dam break;
  1. break;
  2. $_SESSION['message']['info'] = array();



to komunikat znajdujący w sesji wyśweitla się...

Jeszcze sprawdzę to na czystmy kodzie tylko z tymi funkcjami bo chyba to powinno działac zgodnie z oczekiwaniami. Sam już nie wiem i robie wielkie oczy smile.gif
Go to the top of the page
+Quote Post
koreja
post 20.05.2013, 10:11:13
Post #4





Grupa: Zarejestrowani
Postów: 120
Pomógł: 22
Dołączył: 15.07.2008
Skąd: Raniżów/Rzeszów

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


Sprawdziłem te funkcje i one u mnie działają. Pokaż może jeszcze w jaki sposób je wywołujesz? Bo ta linia po odkomentowaniu powoduje, że wiadomości pokażą się tylko raz.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:36