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 .

Notatka : Dyrektywa konfiguracyjna magic_quotes_gpc oddziałuje na zmienne z Get , Post i Cookie . Jeśli włączona , tekst ( It's "PHP !" ) automagicznie zmieni się w (It\'s \"PHP!\" ) . Jest to potrzebne przy wpisywaniu danych do baz danych . Zobacz też addslashes( ) , stripslashes( ) i magic_quotes_sybase .

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 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 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 :

 
setcookie(

 
"MyCookie[]"

 
,

 
"Testing"

 
,

 
time()+3600)

 
;



Pamiętaj , że wysłane ciasteczko zastąpi wcześniejsze ciasteczko o tej nazwie , o ile ścieżka lub domena nie 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 .

 
echo

 
$HOME

 
;

 
/

 
*

 
Wyświetli

 
zmienną

 
środowiskową

 
HOME

 
,

 
o

 
ile

 
ta

 
ma

 
jakąś

 
wartość

 
*

 
/





Ponieważ informacje nadchdzące przez GET , POST i ciasteczka również 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 . to : gettype( ) , is_array( ) , is_float( ) , is_int( ) , is_object( ) i is_string( ) .