Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Zmienne i ich trwałość.
luke18dg
post
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 26.03.2011
Skąd: Dąbrowa Górnicza

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


Witam, moje pytanie jest konkretne.
  1. <?php
  2. function blad($a,$strona)
  3. {
  4. $tablica[]=$a;
  5. header('refresh: 0; url='.$strona);
  6. }
  7. ?>

Dlaczego poprzez taki kod zmienna $tablica jest pusta a jak includuje jakąś stronę to jest wszystko w porządku?
I jak jeśli można prosić o wytłumaczenie zachowują się zmienne, kiedy znikają, a kiedy nic im nie jest smile.gif
Go to the top of the page
+Quote Post
daniel1302
post
Post #2





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


No bo teoretycznie zmienna $tablica nie ma typu. A PHP może rozpoznawać ją jako string a nie tablicę.
zadeklaruj zmienną $tablica np
  1. $tablica = array();
  2. $tablica[] = $a;


I sprawdź co zwraca ci $a bo może jest puste?

Do debugu używaj funkcji var_dump, print_r

U ciebie google chyba umarło smile.gif
http://www.php.pl/Wortal/Artykuly/PHP/Pods...asieg-zmiennych
Go to the top of the page
+Quote Post
luke18dg
post
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 26.03.2011
Skąd: Dąbrowa Górnicza

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


Nie wywala błędu, że tablica jest niezdefiniowana. Mniej więcej tak to u mnie wygląda. Potrzebuje funkcji np błąd. No to includuje ten plik, i odwołuje się do tej funkcji. I teraz moje pytanie dlaczego jak:
1 Includuje plik, który chce coś tam innego zrobić, to ta zmienna jest nadal i nie znikła
2 A jak używam header to ta zmienna znika, tak jak by była skasowana.
Mogę to narysować w paincie, ale mam nadzieje, że jestem zrozumiały smile.gif
Go to the top of the page
+Quote Post
daniel1302
post
Post #4





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


No bo include dołącza ci plik, a jak dołączasz go wewnątrz funkcji w której $zmienna jest zdefiniowana to jest ona dostępna w pliku dołączonym. Include w uproszeniu działa tak, że zamiast include('plik.php'); podstawiana jest zawartość pliku plik.php

A header('refresh...'); odświeża stronę.
Go to the top of the page
+Quote Post
luke18dg
post
Post #5





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 26.03.2011
Skąd: Dąbrowa Górnicza

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


Rozumiem to w takim razie jak przenieść taką zmienną, na właściwą stronę?
Go to the top of the page
+Quote Post
-q3trms-
post
Post #6





Goście







Za pomocą sesji bądź zmiennych globalnych <- wygogluj sobie jeżeli nie znasz tych pojęć.
Go to the top of the page
+Quote Post
luke18dg
post
Post #7





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 26.03.2011
Skąd: Dąbrowa Górnicza

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


Posłuchałem kolegi tylko coś nie idzie.
Jak coś wyświetlę za pomocą echo $_SESSION['dane'], znajduje to co oczekiwałem,
  1. function blad1($a,$strona)
  2. {
  3. $tablica[]=$a;
  4. $_SESSION['dane']=implode('<!59%6>',$tablica);
  5. header('Location: '.$strona);
  6. }

ale jeśli już odwołam się do już innego pliku:
  1. <?php
  2. echo $_SESSION['dane'];
  3. if(!(empty($_SESSION['dane']))){explode('<!59%6>',$_SESSION['dane']);}
  4. ?>

To nagle ta zmienna $_SESSION['dane'] znika. Dlaczego?
Go to the top of the page
+Quote Post
daniel1302
post
Post #8





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

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


bo aby wogóle rejestrować zmiany w sesjach (edycja zmiennych, usuwanie i tworzenie) to u góry każdej strony (w 1 linice i ważne aby przed html'em) musi być linika
session_start

Albo COOKIE, ale cookie a przechowywane u klienta więc nie ma problemu z edycją ich i np oszukaniem cię.
Go to the top of the page
+Quote Post
luke18dg
post
Post #9





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 26.03.2011
Skąd: Dąbrowa Górnicza

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


Dziękuje bardzo, działa tak jak oczekiwałem. Myślałem, że jak includuje plik to już nie potrzebuje znów otwierać session_start. smile.gif
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 Aktualny czas: 19.08.2025 - 19:08