Kursy

Zmienne zewnętrzne

Zmienne zewnętrzne

Zmienne zewnętrzne to takie, które deklarowane są na innej stronie. Mogą to być zmienne przesyłane przez formularz, ciasteczka (cookie) albo zmienne sesyjne. W tym rozdziale zajmę się zmiennymi typu POST, GET i Cookie.

POST i GET to metody przesyłania zmiennych z formularza do skryptu. Na pewno widziałeś już nie raz użycie formularzy. Aby dowiedzieć się, jak się je tworzy wejdź do kursu HTML'a. Każdy element formularza ma atrybut name. Służy on do przechowywania nazwy zmiennej, której wartość będzie ustalana przez formularz. Pierwsza metoda przesyłania zmiennych (POST) służy do przekazywania dużych wartości lub wielu zmiennych nie widocznych w przeglądarce. Jest to metoda bezpieczniejsza, dlatego często używana przy skryptach autoryzacji. Druga metoda pozwala na przekazywanie zmiennych i ich wartości w pasku adresu, przez co mają ograniczoną wielkość i są widoczne dla użytkownika. Maksymalna ilość znaków przekazywanych tą metodą (razem z nazwami zmiennych!) to 1024. Tej metody można też użyć bez udziału formularzy. Można dzięki temu tworzyć linki do skryptów, przekazując im przez to wartości zmiennych. Oto przykład użycia metody GET:

<a href="skrypt.php?zmienna=3&zmienna2=to+jest+druga+zmienna">Strona</a>

W powyższym przykładzie do skryptu prześlemy dwie zmienne: jedną liczbową i jedną łańcuchową. Do oddzielenia tych zmiennych służy &, a zamiast spacji należy wpisywać +. Metodą GET i POST nie można przesyłać obiektów! Żeby przesłać tablicę należy wpisywać jako nazwę zmiennej nazwa[]. Oto przykład skryptu używającego formularzy i metody POST:

<?PHP
if (!isset($krok)) {
echo "<form method="post" action="2_5_1.php">
<input type="hidden" name="krok" value="1">
Imię: <input type="text" name="imie"><br>
Nazwisko: <input type="text" name="nazwisko"><br>
Wiek: <input type="text" name="wiek"><br>
Opis:<br>
<textarea cols="40" rows="6" name="opis"></textarea><br>
<input type="submit" value=" OK "><input type="reset" value=" Czystka ">
</form>";
} elseif($krok==1) {
echo "Twoje imię: $imie<br>
Twoje nazwisko: $nazwisko<br>
Twój wiek: $wiek<br>
Twój opis:<br> $opis";
}
?>
 

W pierwszej linii tego skryptu sprawdzamy czy istnieje zmienna $krok, która decyduje o tym czy ma być wyświetlony formularz, albo czy mają być przetworzone zmienne. Jeżeli $krok nie istnieje to wyświetla sie formularz, którego nie bedę opisywał. W innym wypadku wyświetlają się dane które zapisałeś w formularzu. O instrukcjach if() i elseif() w dalszej części kursu, w rozdziale o instrukcjach. W podany powyżej sposób, tylko z większą liczbą zapytań działają wszystkie formularze na tej stronie.

A teraz przykład użycia metody GET:

<?PHP
if (!isset($id)) {
echo "<a href="2_5_2.php?id=1">Link do strony wyświetlającej 1</a><br>
<a href="2_5_2.php?id=2">Link do strony wyświetlającej 2</a><br>
<a href="2_5_2.php?id=3">Link do strony wyświetlającej 3</a>";
} else echo $id;
?>
 

W pierwszej linii skryptu sprawdzamy czy istnieje zmienna $id, jeżeli tak to wyświetla się lista linków do skryptu o innych wartościach $id, w innym wypadku wyświetla się wartość zmiennej.

Kolejną metodą przesyłania zmiennych do skryptu jest Cookie. Jest to zwyczajne ciasteczko, takie samo jakie można utworzyć w JavaScripcie. Używając ciastek należy pamiętać o tym, aby je utworzyć przed wyświetleniem jakiegokolwiek znaku! W innym wypadku wyświetli się błąd interpretera. Do tworzenia ciastek służy funkcja setcookie(). Oto jej parametry:

nazwa nazwa ciastka
wartość wartość ciastka
czas usunięcia znacznik czasu kiedy ciastko ma być usunięte
ścieżka ścieżka na której ma być używane ciastko
domena domena na której ma być używane ciastko
bezpieczne czy połączenie ma być bezpieczne (0 - nie, 1 - tak)

Oto przykład użycia ciasteczek:

setcookie("ciastko","3",time()+3600,"","",1); /*tworzymy ciastko o wartości 3, które będzie istnieć godzinę i będzie wykorzystywało bezpieczne połączenie*/
setcookie("tab[indeks]",$value); /*tworzymy ciastko typu tablicowego asocjacyjnego*/
setcookie("ciastko"); /*kasujemy ciastko*/

Cookie jest traktowane jak każda inna zmienna, czyli możemy używać nań funkcje isset(). Używanie ciastek jest przydatne przy tworzeniu profilu użytkownika na stronie. W ten sposób możemy ustalić np. kolor tła, tekstu itd. na stronie, według upodobań użytkownika.