Okna.  Wirusy.  Laptopy.  Internet.  Biuro.  Narzędzia.  Kierowcy

$HTTP_SERVER_VARS [usunięto]

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

$_SERWER -- $HTTP_SERVER_VARS [usunięto]Informacje o serwerze i środowisku wykonawczym

Opis

Zmienna $_SERVER jest tablicą zawierającą informacje, takie jak nagłówki skryptów, ścieżki i lokalizacje. Wpisy w tej tablicy są tworzone przez serwer WWW. Nie ma gwarancji, że każdy serwer WWW udostępni którykolwiek z nich; serwer może pominąć niektóre z nich lub udostępnić inne, nie wymienione tutaj. Jednak wiele z tych zmiennych znajduje się w » specyfikacji CGI/1.1, więc możesz spodziewać się ich implementacji na Twoim konkretnym serwerze WWW.

Zmienna $HTTP_SERVER_VARS zawiera te same informacje początkowe, ale nie jest superglobalna. (Zauważ, że $HTTP_SERVER_VARS i $_SERVER to różne zmienne, więc PHP odpowiednio je traktuje). Należy również pamiętać, że „długie tablice” zostały usunięte

Wersje PHP

5.4.0, więc $HTTP_SERVER_VARS już nie istnieje.

Indeksy Możesz, ale nie musisz, znaleźć którykolwiek z poniższych elementów w tablicy $_SERVER. Zauważ, że niewiele, jeśli w ogóle, elementów będzie dostępnych (lub naprawdę będzie miało znaczenie), jeśli PHP działa w wierszu poleceń. „PHP_SELF” Nazwa aktualnie uruchomionego pliku skryptu, względem katalogu głównego dokumentu. Na przykład $_SERVER["PHP_SELF"] w skrypcie pod adresem http://example.com/foo/bar.php będzie mieć postać /foo/bar.php . Stała __FILE__ zawiera pełna ścieżka i nazwę bieżącego (tj. połączonego) pliku. Jeśli PHP jest uruchomione wiersz poleceń , ta zmienna zawiera nazwę skryptu od PHP 4.3.0. Wcześniej nie było to dostępne.„argv” Tablica argumentów przekazanych do skryptu. Gdy skrypt jest uruchamiany w wierszu poleceń, zapewnia dostęp do opcji wiersza poleceń w sposób podobny do języka C. Kiedy dzwonisz przez Metoda POBIERZ, ta tablica będzie zawierać ciąg zapytania. „argc” Zawiera liczbę parametrów przekazanych do skryptu (jeśli został uruchomiony z wiersza poleceń).". „BRAMA_INTERFACE” Adres IP serwera, na którym działa bieżący skrypt.„NAZWA_SERWERA” Nazwa hosta, na którym działa bieżący skrypt. Jeśli skrypt działa na hoście wirtualnym, będzie to zawierać zdefiniowaną dla niego nazwę. wirtualny gospodarz „OPROGRAMOWANIE SERWERA” Ciąg identyfikacyjny serwera określony w nagłówkach, gdy nastąpi odpowiedź na żądanie. „PROTOKÓŁ SERWERA” Nazwa i wersja protokołu informacyjnego, za pośrednictwem którego wywołano stronę; Na przykład ""; HTTP/1.0 „METODA_WNIOSKU” Jakiej metody użyto do żądania strony; Na przykład "", "DOSTAWAĆ", "GŁOWA", "POST".

UMIEŚCIĆ:

Komentarz DOSTAWAĆ.

Skrypt PHP kończy działanie po wysłaniu nagłówków (czyli po wykonaniu dowolnego wyjścia bez buforowania wyjścia), jeśli żądanie zostało wykonane metodą „WNIOSEK_CZAS” Znacznik czasu rozpoczęcia żądania. Dostępne począwszy od PHP 5.1.0. „REQUEST_TIME_FLOAT” Znacznik czasu rozpoczęcia żądania, z dokładnością do mikrosekund. Dostępne począwszy od PHP 5.4.0.„QUERY_STRING” Ciąg zapytania, jeśli istnieje, który pobrał stronę. „DOKUMENT_ROOT” Katalog główny dokumentu, w którym wykonywany jest bieżący skrypt, jest dokładnie tym, który określono w plik konfiguracyjny serwer. „HTTP_ACCEPT” Treść nagłówka Przyjąć: serwer. z bieżącego żądania, jeśli takie istnieje.„HTTP_ACCEPT_CHARSET” Zaakceptuj zestaw znaków:". z bieżącego żądania, jeśli takie istnieje. Na przykład: " serwer. iso-8859-1,*,utf-8 „HTTP_ACCEPT_ENCODING”". Akceptuj-kodowanie: serwer. gzip„HTTP_ACCEPT_LANGUAGE” Zaakceptuj język:". z bieżącego żądania, jeśli takie istnieje. Na przykład: " serwer. pl„HTTP_ACCEPT_LANGUAGE” „POŁĄCZENIE HTTP”". Połączenie: serwer. Utrzymuj przy życiu„HOST_HTTP” Gospodarz: z bieżącego żądania, jeśli takie istnieje.„HTTP_REFERER” serwer. Adres strony (jeśli istnieje), która przeniosła przeglądarkę użytkownika na tę stronę. Nagłówek ten jest ustawiany przez przeglądarkę internetową użytkownika. Nie wszystkie przeglądarki go instalują, a niektóre umożliwiają zmianę zawartości nagłówka HTTP_REFERER jako dodatkową funkcję. Jednym słowem naprawdę nie można mu ufać.„HTTP_USER_AGENT” Agent użytkownika: z bieżącego żądania, jeśli takie istnieje. Ta linia zawiera przeglądarkę, której użył użytkownik tę stronę. Typowym przykładem jest linia: Mozilla/4.5 (X11; U; Linux 2.2.9 i586) . Możesz między innymi użyć tej wartości z funkcją

UMIEŚCIĆ: get_browser() w celu dostosowania wyświetlania Twojej strony do możliwości przeglądarki użytkownika, jeśli żądanie nie zostało przesłane za pośrednictwem protokołu HTTPS.

„REMOTE_ADDR” Adres IP, z którego użytkownik przegląda stronę bieżąca strona. „ZDALNY_HOST” Zdalny host, z którego użytkownik przegląda bieżącą stronę. Odwrotne wyszukiwanie DNS opiera się na wartości zmiennej REMOTE_ADDR.

UMIEŚCIĆ: Twój serwer WWW musi być skonfigurowany do utworzenia tej zmiennej. Na przykład w Apache potrzebujesz obecności dyrektywy Wyszukiwanie nazwy hosta włączone w pliku httpd.conf, aby ta zmienna została utworzona. Zobacz także.

gethostbyaddr() „ZDALNY_PORT” Port na komputerze zdalnym używany do komunikacji z serwerem WWW. „REMOTE_USER” Uwierzytelniony użytkownik. „REDIRECT_REMOTE_USER” Uwierzytelniony użytkownik, jeśli żądanie zostało przekierowane wewnętrznie.

„NAZWA PLIKU_SCRIPT” Bezwzględna ścieżka do skryptu, który się w nim znajduje w tej chwili

UMIEŚCIĆ:

jest wykonywana.

Jeśli skrypt zostanie uruchomiony w wierszu poleceń (CLI) przy użyciu ścieżki względnej, takiej jak plik.php lub ../file.php , zmienna $_SERVER["SCRIPT_FILENAME"] będzie zawierać ścieżkę względną określoną przez użytkownika. „SERWER_ADMIN” Ta zmienna pobiera swoją wartość (dla Apache) z dyrektywy w pliku konfiguracyjnym serwera. Jeśli skrypt działa na hoście wirtualnym, będzie to wartość zdefiniowana dla tego hosta wirtualnego. „PORT_SERWERA” 80 Port na serwerze, którego używa serwer WWW do nawiązania połączenia.

UMIEŚCIĆ: W przypadku ustawień domyślnych wartość będzie wynosić „ "; na przykład przy użyciu protokołu SLL ta wartość będzie skonfigurowana dla bezpiecznych połączeń HTTP. Aby uzyskać fizyczny (rzeczywisty) port w Apache 2, musisz zainstalować UseCanonicalName = Włączone I

UżyjCanonicalPhysicalPort = Włączone , w przeciwnym razie wartość ta może zostać zastąpiona i nie będzie zwracać rzeczywistej wartości portu fizycznego. Poleganie na tej wartości jest niebezpieczne w kontekście aplikacji wymagających zwiększonego bezpieczeństwa. „SERWER_SYGNATURA”

UMIEŚCIĆ: Począwszy od PHP 4.3.2 zmienna PATH_TRANSLATED nie jest już ustawiana domyślnie w Apache 2 SAPI, w porównaniu z wersją Apache 1, gdzie była ustawiona na tę samą wartość co zmienna SCRIPT_FILENAME, gdy nie była używana przez Apache. Ta zmiana została wprowadzona w celu zachowania zgodności ze specyfikacją CGI, gdzie zmienna PATH_TRANSLATED powinna istnieć tylko wtedy, gdy zdefiniowano PATH_INFO. Użytkownicy Apache 2 mogą korzystać z tej dyrektywy AcceptPathInfo = Włączone

w pliku konfiguracyjnym httpd.conf, aby ustawić zmienną PATH_INFO. „NAZWA SKRYPTU” Zawiera ścieżkę do aktualnie wykonywanego skryptu. Jest to przydatne w przypadku stron, które muszą wskazywać na siebie. Stała __FILE__ zawiera pełną ścieżkę i nazwę bieżącego (tj. dołączonego) pliku. „REQUEST_URI”". Identyfikator URI przekazany w celu uzyskania dostępu do tej strony. Na przykład, "/indeks.html „PHP_AUTH_DIGEST” Podczas przeprowadzania uwierzytelniania HTTP Digest do tej zmiennej przypisywany jest nagłówek „Authorization”, który jest wysyłany przez klienta (należy go następnie wykorzystać do odpowiedniej walidacji). „PHP_AUTH_USER” Gdy przeprowadzane jest uwierzytelnianie HTTP, zmienna ta jest ustawiana na nazwę użytkownika podaną przez użytkownika. „PHP_AUTH_PW” Gdy przeprowadzane jest uwierzytelnianie HTTP, zmienna ta jest ustawiana na hasło podane przez użytkownika. „TYP_AUTH” Gdy przeprowadzane jest uwierzytelnianie HTTP, ta zmienna jest ustawiana na typ używanego uwierzytelniania.?>

„PATH_INFO”

Zawiera dowolną ścieżkę podaną przez użytkownika zawartą po nazwie skryptu, ale przed ciągiem zapytania, jeśli jest dostępny.

Na przykład, jeśli bieżący skrypt zostanie zażądany z adresu URL http://www.example.com/php/path_info.php/some/stuff?foo=bar , wówczas zmienna $_SERVER["PATH_INFO"] będzie zawierać

/niektóre/rzeczy

Wynik uruchomienia tego przykładu będzie mniej więcej taki.

Właściwą etykietą jest nadawanie nazw plikom opisującym klasę tą samą nazwą, co sama klasa. Ułatwia to określenie przeznaczenia każdego pliku w folderze klas.

Często na końcu nazwy pliku klasy dodaje się także końcówkę .class lub .inc. W ten sposób jasno definiujemy przeznaczenie pliku i możemy użyć .htaccess do ograniczenia dostępu do tych plików.

Klasa użytkownika (User.class.php)

Ta klasa zdefiniuje każdego użytkownika. Ze wzrostem tę aplikację Definicja „Użytkownika” może ulec istotnym zmianom. Na szczęście programowanie OOP ułatwia dodawanie dodatkowych atrybutów użytkownika.

Konstruktor

W tej klasie skorzystamy z konstruktora - jest to funkcja, która wywoływana jest automatycznie przy tworzeniu kolejnej kopii klasy. Dzięki temu możemy automatycznie publikować niektóre atrybuty po utworzeniu projektu. W tej klasie konstruktor przyjmie pojedynczy argument: tablicę asocjacyjną zawierającą jeden wiersz z tabeli użytkowników naszej bazy danych.

require_once "DB.class.php"; użytkownik klasy (public $id; public $nazwa użytkownika; public $hashedPassword; public $e-mail;
publiczna $joinDate;
//Konstruktor jest wywoływany podczas tworzenia nowego obiektu//Pobiera tablicę asocjacyjną z wierszem DB jako argument. funkcja __construct($data) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[" nazwa_użytkownika"])) ? $data["nazwa użytkownika"] : ""; $this->hashedPassword = (isset($data["hasło"])) ? $data["hasło"]: ""; $this- >email = (isset($data["email"])) ?data["email"] : "";$this->joinDate = (isset($data["data_łączenia"])) $data["data_łączenia "] : ""; )
funkcja publiczna save($isNewUser = false) ( //utwórz nowy obiekt bazy danych. $db = new DB(); //jeśli użytkownik jest już zarejestrowany, a my //tylko aktualizujemy jego dane. if(!$isNewUser ) ( //ustaw tablicę danych $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"email" => ""$ten->e-mail"");
//aktualizuj wiersz w bazie danych $db->update($data, "users", "id = ".$this->id); )else ( //jeśli użytkownik jest rejestrowany po raz pierwszy. $data = array("username" => ""$this->username"", "password" => "$this->hashedPassword"" , "email" => ""$this->email"", "join_date" => """.date("Y-m-d H:i:s",time())."""); id = $db ->insert($dane, "użytkownicy"); $this->joinDate = czas(); )) ?>

Wyjaśnienie

Pierwsza część kodu, znajdująca się poza strefą klas, zapewnia połączenie klasy z bazą danych (ponieważ klasa User posiada funkcję wymagającą tej klasy).

Zamiast zmiennych klasy „chronionej” (używanej na pierwszej lekcji) definiujemy je jako „publiczne”. Oznacza to, że dowolny kod spoza klasy ma dostęp do tych zmiennych podczas pracy z obiektem User.

Konstruktor pobiera tablicę, w której kolumny tabeli są kluczami. Definiujemy zmienną klasy za pomocą $this->variablename. W przykładzie tej klasy najpierw sprawdzamy, czy wartość danego klucza istnieje. Jeśli tak, to ustawiamy zmienną klasy na tę wartość. W przeciwnym razie pusty ciąg. W kodzie używana jest krótka forma notacji, jeśli:

$wartość = (3 == 4) ? „A”: „B”;

W tym przykładzie sprawdzamy, czy 3 równa się cztery! Jeśli tak - to $wartość = „A”, nie - $wartość = „B”. W naszym przykładzie wynikiem jest $wartość = „B”.

Zapisujemy informacje o Użytkownikach w bazie danych

Funkcja zapisu służy do wprowadzenia zmian w tabeli bazy danych z aktualnymi wartościami w obiekcie User. Ta funkcja wykorzystuje klasę DB, którą utworzyliśmy w pierwszej lekcji. Za pomocą zmiennych klasowych ustawiana jest tablica $data. Jeśli dane użytkownika są zapisywane po raz pierwszy, wówczas zmienna $isNewUser jest przekazywana jako $true (domyślnie false). Jeśli $isNewUser = $true, wówczas wywoływana jest funkcja Insert() klasy DB. W przeciwnym razie wywoływana jest funkcja update(). W obu przypadkach informacje z obiektu użytkownika zostaną zapisane w bazie danych.

Klasa UserTools.class.php

Ta klasa będzie zawierać funkcje związane z użytkownikami: login(), logout(), checkUsernameExists() i get(). Ale wraz z rozwojem tej aplikacji możesz dodać o wiele więcej.

//UserTools.class.php require_once "User.class.php"; require_once "DB.class.php";
klasa Narzędzia użytkownika(
//Zaloguj użytkownika. Najpierw sprawdza, czy //nazwa użytkownika i hasło pasują do wiersza w bazie danych. //Jeśli się powiedzie, ustaw zmienne sesji // i zapisz w nich obiekt użytkownika.
logowanie do funkcji publicznej ($nazwa użytkownika, $hasło)
{
$hashedPassword = md5($hasło); $result = mysql_query("WYBIERZ * OD użytkowników GDZIE nazwa użytkownika = "$nazwa użytkownika" ORAZ hasło = "$hashedPassword""); if(mysql_num_rows($result) == 1) ( $_SESSION["użytkownik"] = serialize(nowy użytkownik(mysql_fetch_assoc($result))); $_SESSION["login_time"] = czas(); $_SESSION["zalogowany_in "] = 1; zwróć wartość true; ) else ( zwróć wartość false; ) )
//Wyloguj użytkownika. Zniszcz zmienne sesji. funkcja publiczna logout() ( unset($_SESSION["użytkownik"]); unset($_SESSION["czas_logowania"]); unset($_SESSION["logged_in"]); session_destroy(); ) //Sprawdź, czy nazwa użytkownika istnieje. //Jest to wywoływane podczas rejestracji, aby upewnić się, że wszystkie nazwy użytkowników są unikalne. funkcja publiczna checkUsernameExists($nazwa użytkownika) ( $result = mysql_query("wybierz identyfikator od użytkowników, gdzie nazwa_użytkownika="$username""); if(mysql_num_rows($result) == 0) ( return false; )else( return true; )
}
//pobierz użytkownika //zwraca obiekt użytkownika. Pobiera identyfikator użytkownika jako wejściową funkcję publiczną get($id) ( $db = new DB(); $result = $db->select("users", "id = $id"); return new User($result ); ) )
?>

funkcja logowania().

Funkcja login() jest jasna po nazwie. Pobiera argumenty użytkownika $nazwa użytkownika i $hasło i sprawdza, czy są zgodne. Jeśli wszystko pasuje, tworzy obiekt użytkownika ze wszystkimi informacjami i zapisuje go w sesji. Pamiętaj, że używamy tylko funkcji serialize() PHP. Tworzy przechowywaną wersję obiektu, którą można łatwo zdeserializować za pomocą funkcji unserialize(). Zapisany zostanie także czas logowania. Można to później wykorzystać w celu przekazania użytkownikom informacji o długości pobytu na stronie.

Możesz także zauważyć, że ustawiliśmy $_SESSION["logged_in"] na 1. Dzięki temu możemy łatwo sprawdzić na każdej stronie, czy użytkownik jest zalogowany. Wystarczy sprawdzić tylko tę zmienną.

funkcja wylogowania().

Również prosta funkcja. Funkcja PHP unset() czyści zmienne w pamięci, natomiast session_destroy() usuwa sesję.

checkUsernameExists().

Każdy, kto zna język angielski, z łatwością zrozumie tę funkcję. Po prostu pyta bazę danych, czy użyto podobnego loginu, czy nie.

funkcja get().

Funkcja ta pobiera unikalny identyfikator użytkownika i wysyła zapytanie do bazy danych przy użyciu klasy DB, czyli funkcjiselect(). Pobierze tablicę asocjacyjną z liczbą informacji o użytkowniku i utworzy nowy obiekt User, przekazując tablicę do konstruktora.

Gdzie mogę tego użyć? Na przykład, jeśli utworzysz stronę, która ma wyświetlać określone profile użytkowników, będziesz musiał dynamicznie pobierać te informacje. Można to zrobić w następujący sposób: (powiedzmy, że adres URL to http://www.website.com/profile.php?userID=3)

//uwaga: najpierw musisz otworzyć połączenie z bazą danych. //więcej informacji na ten temat można znaleźć w części 1. //Musisz także upewnić się, że dołączyłeś pliki klas.
$narzędzia = nowe Narzędzia użytkownika(); $użytkownik = $narzędzia->get($_REQUEST["IDużytkownika"]); echo "Nazwa użytkownika: ".$użytkownik->nazwa użytkownika.""; echo "Dołączył: ".$user->joinDate."";

Łatwo! Czy to prawda?

Ostatni akcent po stronie serwera: global.inc.php

global.inc.php jest wymagany dla każdej strony w serwisie. Dlaczego? W ten sposób umieścimy na stronie wszystkie zwykłe operacje, które będą nam potrzebne. Na przykład uruchomimy session_start(). Otworzy się również połączenie z bazą danych.

require_once "classes/UserTools.class.php";
require_once "classes/DB.class.php";
//połącz się z bazą danych $db = new DB(); $db->połącz();
//inicjalizuj obiekt UserTools $userTools = new UserTools(); //rozpocznij sesję
początek_sesji();
//odśwież zmienne sesji, jeśli jesteś zalogowany if(isset($_SESSION["logged_in"])) ( $user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($użytkownik->id)) ?>

Co on robi?

Dzieje się tutaj kilka rzeczy. W pierwszej kolejności otwieramy połączenie z bazą danych.

Po połączeniu uruchamiamy funkcję session_start(). Funkcja tworzy sesję lub kontynuuje obecną, jeśli użytkownik jest już zalogowany. Ponieważ nasza aplikacja jest zaprojektowana tak, aby użytkownicy mogli się logować i wylogowywać, ta funkcja jest wymagana na każdej stronie.

Następnie sprawdzamy czy użytkownik jest zalogowany. Jeśli tak, zaktualizujemy $_SESSION["user"], aby uwzględnić najnowsze informacje o użytkowniku. Na przykład, jeśli użytkownik zmieni swój adres e-mail, stary zostanie zapisany w sesji. Ale w przypadku automatycznych aktualizacji tak się nie stanie.

Na tym kończy się druga część! Wypatrujcie jutro ostatniej lekcji na ten temat.

Wszystkiego najlepszego!

Ci, którzy studiowali mniej lub bardziej poważnie PHP wiedz, że istnieje jedna bardzo przydatna tablica globalna PHP co się nazywa $_SERWER. W tym artykule chciałbym przeanalizować najpopularniejsze klucze i ich wartości w tej tablicy, ponieważ ich znajomość jest po prostu obowiązkowa nawet dla początkującego Programista PHP.

Zanim zaczniesz tablica globalna $_SERVER w PHP, od razu dam ci małą podpowiedź. Wbudowana jest świetna funkcja PHP, co nazywa się phpinfo(). Od razu podamy przykład jego użycia:

phpinfo();
?>

W wyniku wykonania tego prostego skryptu zobaczysz ogromną tabelę z różnymi Ustawienia interpretera PHP, w tym pod koniec pojawi się tabela wartości tablica globalna $_SERVER. Wyświetli listę wszystkich kluczy i wszystkich odpowiadających im wartości. Jak może Ci to pomóc? Faktem jest, że jeśli potrzebujesz tej lub innej wartości, a zapomnisz, jak nazywa się klucz, to skorzystaj z funkcji phpinfo() Zawsze możesz zapamiętać jego nazwę. Ogólnie rzecz biorąc, wykonasz ten skrypt i od razu mnie zrozumiesz.

Przejdźmy teraz do najpopularniejszego do kluczy tablicy $_SERVER:

  • HTTP_USER_AGENT- ten klucz pozwala poznać cechy klienta. W większości przypadków z pewnością jest to przeglądarka, jednak nie zawsze. I znowu, jeśli jest to przeglądarka, to która, możesz się o tym dowiedzieć w tej zmiennej.
  • HTTP_REFERER- zawiera bezwzględną ścieżkę do tego pliku ( Skrypt PHP, strona HTML), z którego przeszliśmy na ten skrypt. Z grubsza mówiąc, skąd pochodził klient.
  • ADRES SERWERA - Adres IP serwer.
  • ZDALNY_ADDR - Adres IP klient.
  • DOCUMENT_ROOT- fizyczna ścieżka do katalogu głównego witryny. Tę opcję ustawia się poprzez Plik konfiguracyjny serwera Apache.
  • NAZWA PLIKU_SCRIPT- fizyczna ścieżka do wywoływanego skryptu.
  • QUERY_STRING- bardzo przydatna wartość, która pozwala uzyskać ciąg znaków z żądaniem, a następnie można ten ciąg przeanalizować.
  • REQUEST_URI- jeszcze bardziej przydatna wartość, która zawiera nie tylko samo żądanie, ale także względną ścieżkę do wywoływanego skryptu z katalogu głównego. Jest to bardzo często używane do usuwania duplikatów indeks.php, czyli kiedy takie mamy Adres URL: "http://mysite.ru/index.php" I " http://mysite.ru/" prowadzą do jednej strony i Adresy URL różne, stąd powielanie, co będzie miało zły wpływ na optymalizację wyszukiwarek. I z pomocą REQUEST_URI możemy określić: z indeks.php czy nie, skrypt został wywołany. I możemy zrobić przekierowanie za pomocą indeks.php(jeśli był obecny w REQUEST_URI) na bez indeks.php. W rezultacie wysyłając takie żądanie: „ http://mysite.ru/index.php?id=5", będziemy mieli przekierowanie do Adres URL: "http://mysite.ru/?id=5„. Oznacza to, że pozbyliśmy się duplikacji, usuwając z Adres URL Ten indeks.php.
  • SKRYPT_NAZWA- ścieżka względna do wywoływanego skryptu.

Być może to są wszystkie elementy tablica globalna $_SERVER w PHP które są regularnie używane. Trzeba je znać i umieć z nich skorzystać, gdy zajdzie taka potrzeba.



Jeśli zauważysz błąd, zaznacz fragment tekstu i naciśnij Ctrl+Enter
UDZIAŁ: