Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmienne i ich trwałość.
Forum PHP.pl > Forum > Przedszkole
luke18dg
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
daniel1302
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
luke18dg
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
daniel1302
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ę.
luke18dg
Rozumiem to w takim razie jak przenieść taką zmienną, na właściwą stronę?
q3trms
Za pomocą sesji bądź zmiennych globalnych <- wygogluj sobie jeżeli nie znasz tych pojęć.
luke18dg
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?
daniel1302
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ę.
luke18dg
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.