Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] jaka jest hierarchia zmiennych?
Dynuel
post 27.11.2007, 17:30:48
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


załważyłem coś takiego ze gdy np. mam ustalone cookie 'zmienna', oraz z formularza dostaje wartosc 'zmienna', to gdy potem w skrypcie użyje zmiennej 'zmienna' to wywala ona wartość z cookie,

tak więc czy jest jakaść kolejność/hierarchia owych zmiennych:

cookie
sesia
get
post
zmienna

Ten post edytował Dynuel 27.11.2007, 20:08:05


--------------------
Go to the top of the page
+Quote Post
webdice
post 27.11.2007, 17:40:57
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Nie ma czegoś takiego jak hierarchia zmiennych w PHP, zmienne się po prostu nadpisują. Masz włączone register_globals i zamiast używać zmiennych w ten sposób:

  1. <?php
  2. $_GET['zmienna']
  3. ?>


używasz:

  1. <?php
  2. $zmienna
  3. ?>
Go to the top of the page
+Quote Post
Dynuel
post 27.11.2007, 17:44:22
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


no a co jezeli mam dokładnie taką sytuację:

jest ustalone

  1. <?php
  2. $_COOKIE['jezyk'] = 'aaa';
  3. $_POST['jezyk'] = 'bbb';
  4. ?>


to która będzie gdy użyję:

  1. <?php
  2. echo $jezyk;
  3. ?>


Ten post edytował Dynuel 27.11.2007, 17:45:21


--------------------
Go to the top of the page
+Quote Post
webdice
post 27.11.2007, 17:48:38
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Kod
$_GET['zmienna']
$_POST['zmienna']
$_SESSION['zmienna']
$_COOKIE['zmienna']
$zmienna


Każda z tych zmiennych jest inna. Po testuj a się przekonasz.
Go to the top of the page
+Quote Post
Dynuel
post 27.11.2007, 18:00:47
Post #5





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


no zgadza się, ale przez $zmienna da sie uzyskać dostep do $_GET['zmienna'] $_POST['zmienna'] $_SESSION['zmienna'] $_COOKIE['zmienna'], prawda??

tak więc jak będzie w opisanym wyżej przeze mnie przypadku?? chyba jest na to jakaś zasada nie??


--------------------
Go to the top of the page
+Quote Post
webdice
post 27.11.2007, 18:07:25
Post #6


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Napisałem Ci że taka sytuacja występuje w przypadku włączenia register_globals i że zmienne się po prostu nadpisują.
Go to the top of the page
+Quote Post
Dynuel
post 27.11.2007, 18:34:18
Post #7





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


sorry za prostackie pytanie, a to normalnie one są wyłączone i nie będzie takiej sytuacji bym odwołał sie np do $_cookie['zmienna'] przez $zmienna questionmark.gif


--------------------
Go to the top of the page
+Quote Post
webdice
post 27.11.2007, 18:45:23
Post #8


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Większość serwerów ma włączone register_globals aby skrypty w których zastosowane było to ułatwienie działały poprawnie.

Wniosek jest jeden, nie ucz się pisać skryptów z włączonym register_globals, bo po pierwsze jest to niebezpieczne, a po drugie w przyszłości ta dyrektywa zostanie wycofana z PHP.
Go to the top of the page
+Quote Post
Dynuel
post 27.11.2007, 19:07:09
Post #9





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


kurcze stary super że mi to uświadomiłeż gdyż ja nie miałem zielonego pojęcia

wybacz ze nadal męcze ten temat ale załóżmy ze mam taki kod:
  1. <?php
  2. if ( !isset ( $_GET['kategoria'] ) ) {
  3. $kategoria = 1;
  4. }
  5. ?>


to wypadało by zebym najlepiej zrobił coś takiego questionmark.gifquestionmark.gif :

  1. <?php
  2. if ( !isset ( $_GET['kategoria'] ) ) {
  3. $kategoria = 1;
  4. } else {
  5. $kategoria = $_GET['kategoria'];
  6. }
  7. ?>


zgadza sie? czy jak to ma wyglądać?

ps. zaznaczam że później w skrypcie chcę odwoływać sie do tej zmiennej poprzez $kategoria

Ten post edytował Dynuel 27.11.2007, 19:07:45


--------------------
Go to the top of the page
+Quote Post
webdice
post 27.11.2007, 19:26:24
Post #10


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Tak jest dobrze.

EDIT: Oczywiście jeśli chcesz aby defaultowo zmienna kategoria miała wartość 1.

Ten post edytował webdicepl 27.11.2007, 19:27:53
Go to the top of the page
+Quote Post
Dynuel
post 27.11.2007, 19:36:09
Post #11





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


sam juz nie kapuje jak jest dobrze, pytam czy mam używać czegoś takiego:

  1. <?php
  2. $kategoria = $_GET['kategoria'];
  3. ?>

jeżeli chcę później używać wartości z $_GET['kategoria'] poprzez $kategoria


--------------------
Go to the top of the page
+Quote Post
webdice
post 27.11.2007, 19:42:42
Post #12


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Tak jak napisałeś jest prawie dobrze, a najlepiej uczyć się odrazu dobrych nawyków i zapisywać to tak:

  1. <?php
  2. if (!isset ($_GET['kategoria']))
  3. {
  4. $kategoria = $_GET['kategoria'];
  5. }
  6. ?>


Nie będzie to powodowało wyświetlania się ostrzeżeń.

Ten post edytował webdicepl 27.11.2007, 19:43:36
Go to the top of the page
+Quote Post
Dynuel
post 27.11.2007, 19:54:14
Post #13





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


Cytat(webdicepl @ 27.11.2007, 20:42:42 ) *
Tak jak napisałeś jest prawie dobrze, a najlepiej uczyć się odrazu dobrych nawyków i zapisywać to tak:

  1. <?php
  2. if (!isset ($_GET['kategoria']))
  3. {
  4. $kategoria = $_GET['kategoria'];
  5. }
  6. ?>


Nie będzie to powodowało wyświetlania się ostrzeżeń.


sorry ale tam chyba nie powinno być tego wykrzyknika

  1. <?php
  2. if (isset ($_GET['kategoria']))
  3. {
  4. $kategoria = $_GET['kategoria'];
  5. }
  6. ?>


no chyba ze to zamiezone ale w takim razie nie rozumiem totalnie co chciałeś tym uzyskać


--------------------
Go to the top of the page
+Quote Post
webdice
post 27.11.2007, 19:56:05
Post #14


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Masz racje nie powinno być, przepraszam za wprowadzanie w błąd.
Go to the top of the page
+Quote Post
itsme
post 27.11.2007, 20:03:10
Post #15





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




@Dynuel:

proszę dokonać edycji tematu nadac odpowiedni TAG.
Masz 80 postów chyba czas się już dostosować do obowiązujących zasad.
Powód edycji: dziękuję za reakcję


--------------------
brak sygnaturki rowniez jest sygnaturką
Go to the top of the page
+Quote Post
Dynuel
post 27.11.2007, 20:09:17
Post #16





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


Cytat(itsme @ 27.11.2007, 21:03:10 ) *
@Dynuel:

proszę dokonać edycji tematu nadac odpowiedni TAG.
Masz 80 postów chyba czas się już dostosować do obowiązujących zasad.


bardzo przepraszam

i wielkie dzięki do webdicepl

a jeżeli chodzi o moją osobę to uważam temat za zamknięty


--------------------
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: 14.06.2025 - 17:55