Zmienne
spoza
PHP
Formularze
HTML
(
GET
i
POST
)
Kiedy
do
skryptu
PHP
zostanie
wysłany
formularz
,
każda
zmienna
z
tego
formularza
zostanie
automatycznie
dostarczona
do
tego
skryptu
przez
PHP
.
Jeśli
dyrektywa
track_vars
jest
włączona
,
to
zmienne
te
będą
umieszczone
w
tablicach
asocjacyjnych
$HTTP_POST_VARS
(
zmienne
wysłane
metodą
POST)
,
$HTTP_GET_VARS
(zmienne
wysłane
metodą
GET)
,
i
/
lub
$HTTP_POST_FILES
(plik
wysłane
metodą
POST
)
,
w
zależności
od
rodzaju
zmiennych
w
zapytaniu
.
Więcej
informacji
na
ten
temat
w
rozdziale
Zmienne
predefiniowane
.
Przykład
8-1
.
Prosty
formularz
ze
zmienną
form
action="
foo.php
"
method="post
"
Name
:
input
type="text
"
name="username
"
br
input
type="submit
"
/
form
|
|
Kiedy
powyższy
formularz
zostanie
wysłany
,
wartość
wprowadzona
do
pola
tekstowego
będzię
dostępna
w
$HTTP_POST_VARS[
'username'
]
.
Jeśli
dyrektywa
register_globals
jest
włączona
,
zmienna
z
formularza
będzie
także
dostępna
jako
zmienna
globalna
$username
.
PHP
obsługuje
także
tablice
w
kontekście
zmiennych
z
formularzy
(
zajrzyj
do
FAQ
)
.
Można
na
przykład
pogrupować
razem
powiązane
zmienne
lub
użyć
tej
możliwości
do
pobrania
wartości
z
pola
wyboru
(
select
)
:
Przykład
8-2
.
Bardziej
złożone
zmienne
w
formularzach
form
action="
array.php
"
method="post
"
Nazwisko
:
input
type="text
"
name="personal[nazwisko]
"
br
Email
:
input
type="text
"
name="personal[email]
"
br
Piwo
:
br
select
multiple
name="piwo[]
"
option
value="zywiec
"
Żywiec
option
value="tyskie
"
Tyskie
option
value="lech
"
Lech
/
select
input
type="submit
"
/
form
|
|
W
PHP
3
tablice
w
formularzach
mogły
być
tylko
jednowymiarowe
.
W
PHP
4
nie
ma
takich
ograniczeń
.
Nazwy
zmiennych
dla
SUBMIT
w
postaci
obrazka
Przy
tworzeniu
formularza
,
można
użyć
obrazka
,
zamiast
standardowego
przycisku
Wyślij
,
za
pomocą
takiego
znacznika
:
Kiedy
użytkownik
kliknie
gdzieś
na
obrazku
,
formularz
,
którego
to
dotyczy
,
zostanie
wysłany
do
serwera
z
dwiema
dodatkowymi
zmiennymi
,
sub_x
i
sub_y
.
Zawierają
one
koordynaty
miejsca
kliknięcia
na
obrazek
.
Można
przy
tym
zauważyć
,
że
w
nazwach
zmiennych
jest
kropka
a
nie
podkreślnik
,
ale
PHP
konwertuje
kropkę
na
podkreślnik
automatycznie
.
(
Zobacz
Kropki
w
nazwach
nadchodzących
zmiennych
)
.
Ciasteczka
HTTP
PHP
bez
problemu
obsługuje
ciasteczka
HTTP
,
takie
jak
zdefiniowano
w
Specyfikacji
Netscape
'
a
.
Ciasteczka
są
mechanizmem
przechowywania
informacji
w
przeglądarce
klienta
w
celu
śledzenia
lub
identyfikowania
stałych
bywalców
strony
.
Ciasteczka
ustawia
się
za
pomocą
funkcji
setcookie(
)
.
Ciasteczka
są
częścią
nagłówka
HTTP
,
więc
funkcja
SetCookie
musi
być
wywołana
zanim
jakakolwiek
inna
informacja
zostanie
wysłana
do
przeglądarki
.
Takie
samo
ograniczenie
dotyczy
funkcji
header(
)
.
Wszystkie
ciasteczka
odebrane
od
klienta
zostaną
automatycznie
zamienione
w
zmienne
PHP
,
podobnie
jak
dane
odebrane
metodą
GET
lub
POST
.
Jeśli
chcesz
przypisać
wiele
wartości
do
jednego
ciasteczka
,
dodaj
[
]
do
jego
nazwy
.
Na
przykład
:
Pamiętaj
,
że
wysłane
ciasteczko
zastąpi
wcześniejsze
ciasteczko
o
tej
nazwie
,
o
ile
ścieżka
lub
domena
nie
są
różne
.
Na
przykład
dla
koszyka
do
zakupów
możesz
potrzebować
licznika
a
jego
wartość
stale
przekazywać
dalej
,
tzn
.
Przykład
8-3
.
Przykład
zastosowania
SetCookie
$ilosc++
;
setcookie("ilosc"
,
$ilosc
,
time()+3600)
;
setcookie("koszyk[$ilosc]"
,
$towar
,
time()+3600)
;
P
|
|
Zmienne
środowiskowe
PHP
samoczynnie
udostępnia
zmienne
środowiskowe
jak
zwykłe
zmienne
PHP
.
Ponieważ
informacje
nadchdzące
przez
GET
,
POST
i
ciasteczka
również
są
udostępniane
jako
zmienne
,
czasem
jest
lepiej
odczytać
zmienne
środowiskowe
bezpośrednio
ze
środowiska
,
aby
mieć
pewność
,
że
otrzymuje
się
prawdziwą
wartość
zmiennej
.
W
tym
celu
używa
się
funkcji
getenv(
)
.
Można
także
samodzielnie
ustawić
wartość
zmiennej
środowiskowej
za
pomocą
funkcji
putenv(
)
.
Kropki
w
nazwach
nadchodzących
zmiennych
PHP
normalnie
nie
zmienia
nazw
zmiennych
przekazywanych
do
skryptu
.
Jednakże
należy
pamiętać
,
że
kropka
"
.
"
nie
jest
poprawnym
znakiem
w
nazwie
zmiennej
.
Dlaczego
,
proszę
spojrzeć
na
to
:
$varname.ext
;
/
*
niepoprawna
nazwa
zmiennej
*
/
|
To co widzi parser, to zmienna o nazwie
$varname
, po której pojawia się operator konkatenacji, a następnie
pusty łańcuch (czyli taki, który nie jest żadnym słowem
kluczowym, ani zarezerwowanym) "ext". Oczywiście, nie daje to
żadnego sensownego wyniku.
Warto
zatem
wiedzieć
,
że
PHP
automatycznie
zastąpi
podkreślnikiem
"
_
"
każdą
kropkę
w
nazwie
nadchodzącej
zmiennej
.
Określanie
typów
zmiennych
Ponieważ
PHP
samodzielnie
określa
typy
zmiennych
i
konwertuje
je
(
zasadniczo
)
jak
potrzeba
,
nie
zawsze
jest
jasne
,
jakiego
typu
jest
dana
zmienna
w
danym
momencie
.
PHP
zawiera
kilka
funkcji
do
określania
typów
zmiennych
.
Są
to
:
gettype(
)
,
is_array(
)
,
is_float(
)
,
is_int(
)
,
is_object(
)
i
is_string(
)
.