PHP의 $_SERVER 완전 전역 배열($HTTP_SERVER_VARS). $_SERVER - 서버 및 런타임 환경에 대한 정보 $_SERVER 배열의 요소 사용
$_SERVER["DOCUMENT_ROOT"] 요소는 스크립트가 가상 호스트에서 실행 중인 경우 서버 루트 디렉토리에 대한 경로를 포함합니다. 주어진 요소가상 호스트의 루트 디렉토리 경로를 지정합니다. 저것들. httpd.conf 구성 파일에서 가상 호스트에는 "D:/main"으로 설정된 DocumentRoot 지시문이 있고 $_SERVER["DOCUMENT_ROOT"] 요소에는 "D:main" 값이 포함됩니다.
$_SERVER["HTTP_ACCEPT"] 요소
$_SERVER["HTTP_ACCEPT"] 요소는 문서 유형에 관한 클라이언트의 기본 설정을 설명합니다. 이 요소의 내용은 클라이언트에서 서버로 전송된 Accept HTTP 헤더에서 검색됩니다. 이 헤더의 내용은 다음과 같습니다.
이미지/gif, 이미지/x-xbitmap, 이미지/jpeg, 이미지/pjpeg, 애플리케이션/x-shockwave-flash, 애플리케이션/vnd.ms-excel, 애플리케이션/msword, */*
Accept 헤더를 사용하면 클라이언트가 요청에 대한 응답으로 수신하기를 선호하는 미디어 유형을 지정할 수 있습니다. 이 헤더를 사용하면 응답이 소수의 기본 유형 집합으로 제한됨을 서버에 알릴 수 있습니다.
* 기호는 미디어 행에서 유형을 그룹화하는 데 사용됩니다. 예를 들어 */* 기호는 모든 유형의 사용을 지정하고 type/* 표기법은 선택한 유형 유형의 모든 하위 유형 사용을 지정합니다.
논평
미디어 유형은 쉼표로 서로 구분됩니다.
각 미디어 행은 추가 매개변수 세트로도 특징지어집니다. 그 중 하나는 덜 선호되는 유형에서 더 선호되는 유형으로 각각 0에서 1까지의 값을 취하는 소위 상대적 선호 계수 q입니다. 여러 q 매개변수를 사용하면 클라이언트가 주어진 미디어 유형에 대한 상대적 선호도를 서버에 알릴 수 있습니다.
논평
q 매개변수의 기본값은 1입니다. 또한 세미콜론으로 미디어 유형과 구분됩니다.
헤더 예시 수락:
승인: audio/*; q=0.2, 오디오/기본
이 헤더에서 첫 번째 유형은 모든 음악 문서를 포함하고 0.2의 선호도 계수를 특징으로 하는 audio/*입니다. 쉼표로 구분된 오디오/기본 유형이 지정되었으며, 기본 설정 계수가 지정되지 않고 기본값 1을 가정합니다. 이 제목을 인용하면 다음과 같이 해석할 수 있습니다. "저는 오디오/기본 유형을 선호하지만 가능한 경우 선호 계수를 80% 이상 줄인 후 다른 오디오 유형의 문서를 보낼 수도 있습니다."
예제는 더 복잡할 수 있습니다.
수락: 텍스트/일반; q=0.5, 텍스트/html,
텍스트/x-dvi; q=0.8, 텍스트/x-c
논평
$_SERVER["HTTP_ACCEPT"] 요소는 정확히 동일한 정보를 포함하지만 초기 Accept 헤더는 포함하지 않습니다.
이 헤더는 다음과 같이 해석됩니다. text/html 및 text/x-c 문서 유형이 선호되지만 사용할 수 없는 경우 보내는 클라이언트는 주어진 요청, text/x-dvi를 선호하며 존재하지 않는 경우 text/plain 유형을 사용할 수 있습니다.
$_SERVER["HTTP_ACCEPT_LANGUAGE"] 요소
$_SERVER["HTTP_ACCEPT_LANGUAGE"] 요소는 클라이언트의 언어 기본 설정을 설명합니다. 이 정보클라이언트에서 서버로 보낸 Accept-Language HTTP 헤더에서 검색됩니다. 다음 예를 들 수 있습니다.
Accept-Language: ru, en; q=0.7
다음과 같이 해석할 수 있습니다. 클라이언트는 러시아어를 선호하지만 사용할 수 없는 경우 영어로 된 문서를 수락하는 데 동의합니다. $_SERVER["HTTP_ACCEPT_LANGUAGE"] 요소는 정확히 동일한 정보를 포함하지만 Accept-Language 헤더는 없습니다.
루, 엔; q=0.7
$_SERVER["HTTP_ACCEPT_LANGUAGE"] 요소의 내용은 방문자의 국적을 결정하는 데 사용할 수 있습니다. 그러나 많은 사용자가 영어 버전의 브라우저를 사용하기 때문에 결과는 대략적이며 방문자가 영어 하나만 선호한다고 서버에 알립니다.
$_SERVER["HTTP_HOST"] 요소
$_SERVER["HTTP_HOST"] 요소에는 일반적으로 서버에서 호스팅되는 사이트의 도메인 이름과 동일한 서버 이름이 포함됩니다. 일반적으로 이 매개변수에 지정된 이름은 $_SERVER["SERVER_NAME"]과 동일합니다. 매개변수는 프로토콜 이름(http://) 없이 도메인 이름만 포함합니다.
www.sofftime.ru
$_SERVER["HTTP_REFERER"] 요소
$_SERVER["HTTP_REFERER"] 요소에는 방문자가 이 페이지를 방문한 페이지의 주소가 포함됩니다. 전환은 링크를 통해 이루어져야 합니다. index.php와 page.php 두 페이지를 만들어 봅시다.
index.php 페이지
에코 "PHP 페이지 링크
"
;
$_SERVER["HTTP_REFERER"]
?>
page.php 페이지에도 비슷한 내용이 있지만 링크는 index.php 페이지를 가리킵니다.
페이지 page.php
에코 "PHP 페이지 링크
"
;
echo "$_SERVER [ "HTTP_REFERER"]의 내용 - " .
$_SERVER["HTTP_REFERER"]
?>
한 페이지에서 다른 페이지로 이동할 때 전환이 이루어진 페이지의 주소가 링크 아래에 표시됩니다.
$_SERVER["HTTP_USER_AGENT"] 요소
$_SERVER["HTTP_USER_AGENT"] 요소에는 브라우저 유형 및 버전에 대한 정보가 포함되며 운영 체제방문객.
다음은 이 행의 일반적인 내용입니다. "Mozilla/4.0(호환 가능; MSIE 6.0; Windows NT 5.1)". 하위 문자열 "MSIE 6.0"의 존재는 방문자가 인터넷을 사용하여 페이지를 보고 있음을 나타냅니다. 익스플로러 버전 6.0. 문자열 "Windows NT 5.1"은 운영 체제가 Windows XP임을 나타냅니다.
논평
Windows 2000의 경우 $_SERVER["HTTP_USER_AGENT"] 요소는 "Mozilla/4.0(compatible; MSIE 5.01; Windows NT 5.0)")"처럼 보이고 Windows XP의 경우 "Mozilla/4.0(compatible; MSIE 6.0) ; 윈도우 NT 5.1)".
방문자가 Opera 브라우저를 사용하는 경우 $_SERVER["HTTP_USER_AGENT"]의 내용은 "Mozilla/4.0(compatible; MSIE 5.0; Windows 98) Opera 6.04"와 같습니다. 하위 문자열 "MSIE 6.0"도 여기에 표시되어 Opera 브라우저가 다음과 호환됨을 나타냅니다. 인터넷 브라우저탐색기와 동일한 동적 사용 윈도우 라이브러리. 따라서 브라우저에서 반환된 문자열을 구문 분석할 때 인터넷 익스플로러하위 문자열 "MSIE 6.0"은 포함하고 하위 문자열 "Opera"는 포함하지 않는 문자열을 나타냅니다. 또한 이 줄에서 사용자가 Windows 98 운영 체제를 사용하고 있다는 결론을 내릴 수 있습니다.
논평
사용자 에이전트 파이어폭스 브라우저 Mozilla/5.0(Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5처럼 보일 수 있습니다.
Netscape 브라우저를 사용할 때 $_SERVER["HTTP_USER_AGENT"] 요소의 내용은 다음과 같습니다. "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1" . 이 브라우저는 "Netscape" 하위 문자열의 존재로 식별할 수 있습니다. 또한 방문자가 다음을 사용하여 인터넷에 액세스하고 있음을 알 수 있습니다. 운영 버전 Pentium IV에 최적화된 커널을 사용하는 Linux, X-Window GUI. 이 메커니즘은 디자이너가 가장 일반적인 브라우저에 대해 페이지를 최적화할 수 있도록 통계 정보를 수집하는 데 유용합니다.
요소 $_SERVER["REMOTE_ADDR"]
$_SERVER["REMOTE_ADDR"] 요소에는 클라이언트의 IP 주소가 포함됩니다. 로컬 컴퓨터에서 테스트할 때 이 주소는 127.0.0.1입니다. 그러나 네트워크에서 테스트할 때 변수는 클라이언트의 IP 주소 또는 클라이언트가 서버에 도달한 마지막 프록시 서버를 반환합니다. 클라이언트가 프록시 서버를 사용하는 경우 다음을 사용하여 클라이언트의 IP 주소를 찾을 수 있습니다. 환경 변수 getenv() 함수를 사용하여 값을 얻을 수 있는 HTTP_X_FORWARDED_FOR.
논평
프록시 서버는 특별한 유형의 서비스를 제공하는 특별한 중간 서버입니다: 트래픽 압축, 데이터 인코딩, 적응 모바일 장치등등. 많은 프록시 서버 중에는 클라이언트의 실제 IP 주소를 숨길 수 있는 소위 익명 프록시 서버가 있으며 이러한 서버는 HTTP_X_FORWARDED_FOR 환경 변수를 반환하지 않습니다.
HTTP_X_FORWARDED_FOR 환경 변수 검색
에코 getenv(HTTP_X_FORWARDED_FOR );
?>
$_SERVER["SCRIPT_FILENAME"] 요소
$_SERVER["SCRIPT_FILENAME"] 요소에는 드라이브의 루트에서 파일에 대한 절대 경로가 포함됩니다. 예를 들어 서버에서 운영 체제를 실행 중인 경우 Windows 시스템, 그런 다음 이러한 경로는 "d:main estindex.php"와 같이 보일 수 있습니다. 경로는 디스크에서 지정되며 UNIX와 같은 운영 체제에서 경로는 루트 디렉토리 /에서 지정됩니다(예: "/var/share/www/test/index.php").
$_SERVER["SERVER_NAME"] 요소
$_SERVER["SERVER_NAME"] 요소에는 일반적으로 서버에서 호스팅되는 사이트의 도메인 이름과 일치하는 서버 이름이 포함됩니다. 예를 들어,
www.site
$_SERVER["SERVER_NAME"] 요소의 내용은 종종 $_SERVER["HTTP_HOST"] 요소의 내용과 동일합니다. 서버 이름 외에도 $_SERVER superglobal 배열을 사용하면 서버 IP 주소, 수신 포트, 설치된 웹 서버 및 HTTP 프로토콜 버전과 같은 여러 서버 매개 변수를 찾을 수 있습니다. 이 정보는 각각 $_SERVER["SERVER_ADDR"], $_SERVER["SERVER_PORT"], $_SERVER["SERVER_SOFTWARE"] 및 $_SERVER["SERVER_PROTOCOL"] 요소에 배치됩니다. 다음은 이러한 요소를 사용하는 예입니다.
$_SERVER 배열의 요소 사용
에코 "서버 이름 -" . $_SERVER["서버_이름"]. "
"
;
에코 "서버 IP 주소 - ". $_SERVER["서버_주소"]. "
"
;
에코 "서버 포트 -" . $_SERVER["서버_포트"]. "
"
;
에코 "웹 서버 -" . $_SERVER["서버_소프트웨어"]. "
"
;
에코 "HTTP 프로토콜 버전 - ". $_SERVER["SERVER_PROTOCOL"]. "
"
;
?>
$HTTP_SERVER_VARS [삭제됨]
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
$_서버 -- $HTTP_SERVER_VARS [삭제됨] — 서버 및 런타임 정보
설명
$_SERVER 변수는 스크립트 헤더, 경로 및 위치와 같은 정보를 포함하는 배열입니다. 이 배열의 항목은 웹 서버에서 생성됩니다. 모든 웹 서버가 이들을 제공한다는 보장은 없습니다. 서버는 이들 중 일부를 생략하거나 여기에 나열되지 않은 다른 항목을 제공할 수 있습니다. 그러나 이러한 변수 중 많은 수가 » CGI/1.1 사양에 있으므로 특정 웹 서버에서도 구현될 것으로 예상할 수 있습니다.
$HTTP_SERVER_VARS 변수는 동일한 초기 정보를 포함하지만 완전 전역 변수는 아닙니다. ($HTTP_SERVER_VARS와 $_SERVER는 서로 다른 변수이므로 PHP가 그에 따라 처리합니다.) 또한 "긴 배열"은 PHP 5.4.0에서 제거되었으므로 $HTTP_SERVER_VARS는 더 이상 존재하지 않습니다.
지수
$_SERVER 배열에서 다음 요소를 찾을 수도 있고 찾지 못할 수도 있습니다. PHP가 명령줄에서 실행되는 경우 사용할 수 있는(또는 실제로 중요한) 항목이 거의 없다는 점에 유의하십시오.
"PHP_SELF" 문서 루트에 상대적인 현재 실행 중인 스크립트의 파일 이름입니다. 예를 들어 http://example.com/foo/bar.php 의 스크립트에서 $_SERVER["PHP_SELF"] 는 /foo/bar.php 입니다. __FILE__ 상수는 현재(즉, 포함된) 파일의 전체 경로와 파일 이름을 포함합니다. PHP가 실행 중인 경우 명령줄, 이 변수에는 PHP 4.3.0 이후의 스크립트 이름이 포함됩니다. 이전에는 사용할 수 없었습니다."인수" 스크립트에 전달된 인수 배열입니다. 스크립트가 명령줄에서 실행되면 명령줄 옵션에 대한 C와 유사한 액세스가 제공됩니다. GET 메서드를 통해 호출하면 이 배열에 쿼리 문자열이 포함됩니다."argc" 스크립트에 전달된 매개변수의 수를 포함합니다(명령줄에서 시작된 경우)."게이트웨이_인터페이스" 서버에서 사용하는 CGI 사양의 버전을 포함합니다. 예를 들어" CGI/1.1". "SERVER_ADDR" 현재 스크립트가 실행 중인 서버의 IP 주소입니다."서버 이름" 현재 스크립트가 실행 중인 호스트의 이름입니다. 스크립트가 가상 호스트에서 실행 중인 경우 여기에는 해당 가상 호스트에 대해 정의된 이름이 포함됩니다."서버_소프트웨어" 요청에 응답할 때 헤더에 지정된 서버 식별 문자열입니다."서버_프로토콜" 페이지가 요청된 정보 프로토콜의 이름 및 버전 예를 들어 " HTTP/1.0"; " REQUEST_METHOD " 페이지를 요청하는 데 사용된 방법 예를 들어 " 얻다", "머리", "우편", "놓다".
" REQUEST_TIME " 요청 시작의 타임스탬프입니다. PHP 5.1.0부터 사용 가능합니다." REQUEST_TIME_FLOAT " 마이크로초 단위로 정확한 요청 시작의 타임스탬프입니다. PHP 5.4.0부터 사용 가능합니다." QUERY_STRING " 페이지가 검색된 쿼리 문자열(있는 경우)입니다."DOCUMENT_ROOT" 현재 스크립트가 실행되는 문서 루트 디렉토리는 정확히 서버의 구성 파일에 지정된 디렉토리입니다."HTTP_ACCEPT" 헤더 콘텐츠 수용하다:현재 요청에서(있는 경우)."HTTP_ACCEPT_CHARSET" 헤더 콘텐츠 AcceptCharset:현재 요청에서(있는 경우). 예를 들어: " iso-8859-1,*,utf-8". "HTTP_ACCEPT_ENCODING" 헤더 콘텐츠 인코딩 수락: gzip". "HTTP_ACCEPT_LANGUAGE" 헤더 콘텐츠 수락 언어:현재 요청에서(있는 경우). 예를 들어: " ko". "HTTP_연결" 헤더 콘텐츠 연결:현재 요청에서(있는 경우). 예를 들어: " 살아 유지". "HTTP_HOST" 헤더 콘텐츠 주인:현재 요청에서(있는 경우)."HTTP_REFERER" 사용자의 브라우저를 이 페이지로 가져온 페이지(있는 경우)의 주소입니다. 이 헤더는 사용자의 웹 브라우저에서 설정합니다. 모든 브라우저가 이를 설치하는 것은 아니며 일부는 추가 기능으로 HTTP_REFERER 헤더의 내용을 변경할 수 있습니다. 한마디로 그는 정말 믿을 수 없다."HTTP_USER_AGENT" 헤더 콘텐츠 사용자 에이전트:현재 요청에서(있는 경우). 이 문자열에는 사용자가 이 페이지를 요청한 브라우저의 지정이 포함됩니다. 일반적인 예는 다음 행입니다. Mozilla/4.5(X11, U, Linux 2.2.9 i586). 무엇보다도 이 값을 함수와 함께 사용할 수 있습니다. get_browser()사용자 브라우저의 기능에 맞게 페이지 출력을 조정합니다."https" 요청이 HTTPS 프로토콜을 통해 이루어진 경우 비어 있지 않은 값을 사용합니다.논평:
헤더를 보낸 후(즉, 출력 버퍼링 없이 출력을 수행한 후) 메서드에 의해 요청이 이루어진 경우 PHP 스크립트가 종료됩니다. 머리.
"REMOTE_ADDR" 사용자가 현재 페이지를 보고 있는 IP 주소입니다."원격 호스트" 사용자가 현재 페이지를 보고 있는 원격 호스트입니다. 역방향 DNS 조회는 REMOTE_ADDR 변수의 값을 기반으로 합니다.논평: IIS에서 ISAPI를 사용하는 경우 값은 끄다요청이 HTTPS 프로토콜을 통해 이루어지지 않은 경우.
"REMOTE_PORT" 웹 서버와 통신하는 데 사용되는 원격 시스템의 포트입니다."REMOTE_USER" 인증된 사용자입니다."REDIRECT_REMOTE_USER" 요청이 내부적으로 리디렉션된 경우 인증된 사용자입니다."SCRIPT_FILENAME"논평: 이 변수를 만들려면 웹 서버를 구성해야 합니다. 예를 들어 Apache에서는 지시문이 필요합니다. 호스트 이름 조회 켜기 httpd.conf 파일에서 이 변수를 생성합니다. 또한보십시오 gethostbyaddr().
현재 실행 중인 스크립트의 절대 경로입니다.
"SERVER_ADMIN" 이 변수는 서버 구성 파일의 지시문에서 해당 값(Apache용)을 가져옵니다. 스크립트가 가상 호스트에서 실행 중인 경우 해당 가상 호스트에 대해 정의된 값이 됩니다."서버 포트" 웹 서버가 연결하는 데 사용하는 서버 컴퓨터의 포트입니다. 기본 설정의 경우 값은 " 80 "; 예를 들어 SLL을 사용하는 경우 이 값은 보안 HTTP 연결용으로 구성됩니다.논평:
file.php 또는 ../file.php 와 같은 상대 경로를 사용하여 명령줄(CLI)에서 스크립트를 실행하는 경우 $_SERVER["SCRIPT_FILENAME"] 변수에는 사용자가 지정한 상대 경로가 포함됩니다.
"서버_서명" 활성화된 경우 서버 생성 페이지에 추가할 서버 버전 및 가상 호스트 이름을 포함하는 문자열입니다."PATH_TRANSLATED" 서버가 가상 대 실제 매핑을 수행한 후 현재 스크립트에 대한 파일 시스템(문서 루트가 아님) 기반 경로입니다.논평: Apache 2에서 물리적(실제) 포트를 얻으려면 다음을 설치해야 합니다. UseCanonicalName = 켜기그리고 UseCanonicalPhysicalPort = 켜기, 그렇지 않으면 이 값이 스푸핑되어 물리적 포트의 실제 값을 반환하지 않을 수 있습니다. 강화된 보안이 필요한 애플리케이션 컨텍스트에서 이 값에 의존하는 것은 안전하지 않습니다.
"SCRIPT_NAME" 현재 실행 중인 스크립트의 경로를 포함합니다. 이는 자신을 가리켜야 하는 페이지에 유용합니다. __FILE__ 상수는 현재(즉, 포함된) 파일의 전체 경로와 이름을 포함합니다." REQUEST_URI " 이 페이지에 액세스하기 위해 전달된 URI입니다. 예를 들어, " /index.html". "PHP_AUTH_DIGEST" HTTP 다이제스트 인증을 수행할 때 이 변수는 클라이언트가 보낸 "Authorization" 헤더로 설정됩니다(그런 다음 적절한 유효성 검사에 사용해야 함)."PHP_AUTH_USER" HTTP 인증을 수행할 때 이 변수는 사용자가 제공한 사용자 이름으로 설정됩니다."PHP_AUTH_PW" HTTP 인증을 수행할 때 이 변수는 사용자가 제공한 암호로 설정됩니다."AUTH_TYPE" HTTP 인증을 수행할 때 이 변수는 사용되는 인증 유형으로 설정됩니다."PATH_INFO" 사용 가능한 경우 스크립트 이름 뒤, 쿼리 문자열 앞의 사용자 제공 경로를 포함합니다. 예를 들어 현재 스크립트가 http://www.example.com/php/path_info.php/some/stuff?foo=bar URL에서 요청되면 $_SERVER["PATH_INFO"] 변수에 다음이 포함됩니다. /몇 가지 물건?>논평: PHP 4.3.2부터 PATH_TRANSLATED 변수는 Apache에서 사용하지 않을 때 SCRIPT_FILENAME과 동일한 값으로 설정되는 Apache 버전 1과 비교하여 Apache 2 SAPI에서 더 이상 암시적으로 설정되지 않습니다. 이 변경은 PATH_TRANSLATED 변수가 PATH_INFO가 정의된 경우에만 존재해야 하는 CGI 사양을 준수하기 위해 만들어졌습니다. 아파치 사용자 2 지시문을 사용할 수 있습니다 AcceptPathInfo = 켜짐 httpd.conf 구성 파일에서 PATH_INFO 변수를 설정합니다.
이 예제를 실행한 결과는 다음과 같습니다.
어느 정도 진지하게 공부한 사람들 PHP매우 유용한 전역 배열이 하나 있음을 알고 있습니다. PHP, 호출 $_서버. 그리고이 기사에서는 초보자에게도 지식이 필요하기 때문에이 배열에서 가장 많이 사용되는 키와 값을 분석하고 싶습니다. PHP 프로그래머.
진행하기 전에 PHP의 $_SERVER 전역 배열에약간의 힌트를 드리겠습니다. 멋진 기능이 내장되어 있습니다 PHP, 호출 phpinfo(). 즉시 사용 예를 들어 보겠습니다.
phpinfo();
?>
이 간단한 스크립트를 실행하면 다양한 테이블이 표시됩니다. PHP 인터프리터 설정, 포함하여 끝 부분에 값 표가 있습니다. 전역 배열 $_SERVER. 모든 키와 해당 값이 모두 나열됩니다. 이것이 어떻게 당신을 도울 수 있습니까? 그리고 이 값이나 저 값이 필요하고 키가 무엇인지 잊어버린 경우 함수를 사용하여 phpinfo()당신은 항상 그 이름을 기억할 수 있습니다. 일반적으로 이 스크립트를 실행하면 즉시 이해하게 될 것입니다.
이제 가장 인기있는 것으로 넘어 갑시다. $_SERVER 배열 키:
- HTTP_USER_AGENT- 이 키를 통해 클라이언트의 특성을 알 수 있습니다. 대부분의 경우 이것은 확실히 브라우저이지만 항상 그런 것은 아닙니다. 다시 말하지만, 브라우저라면 어떤 브라우저인지 이 변수에서 알 수 있습니다.
- HTTP_참조자- 해당 파일의 절대 경로를 포함합니다( PHP 스크립트, HTML 페이지)에서 이 스크립트로 전환했습니다. 대략적으로 말하면 고객은 어디에서 왔습니까?
- 서버_주소 - IP 주소섬기는 사람.
- REMOTE_ADDR - IP 주소고객.
- 문서_루트- 사이트의 루트 디렉터리에 대한 실제 경로입니다. 이 옵션은 다음을 통해 설정됩니다. 아파치 서버 구성 파일.
- SCRIPT_FILENAME- 호출된 스크립트의 물리적 경로.
- QUERY_STRING- 쿼리로 문자열을 가져온 다음 이 문자열을 구문 분석할 수 있는 매우 유용한 값입니다.
- REQUEST_URI- 요청 자체뿐만 아니라 루트에서 호출된 스크립트에 대한 상대 경로도 함께 포함하는 훨씬 더 유용한 값입니다. 이것은 매우 자주 중복을 제거하는 데 사용됩니다. index.php, 즉, 우리가 그러한 URL: "http://mysite.ru/index.php" 그리고 " http://mysite.ru/" 한 페이지로 이동하고 URL따라서 검색 엔진 최적화에 나쁜 영향을 미치는 복제가 다릅니다. 그리고 여기 도움으로 REQUEST_URI다음을 정의할 수 있습니다. index.php또는 스크립트가 호출되지 않았습니다. 그리고 우리는 index.php(그가 참석했다면 REQUEST_URI)없이 index.php. 결과적으로 이러한 요청을 보낼 때: " http://mysite.ru/index.php?id=5"로 리디렉션됩니다. URL: "http://mysite.ru/?id=5". 즉, 에서 제거하여 중복을 제거했습니다. URL이것 index.php.
- SCRIPT_NAME- 호출된 스크립트에 대한 상대 경로.
아마도 이것들은 모든 요소입니다 PHP의 $_SERVER 전역 배열정기적으로 사용되는 것입니다. 그들은 필요할 때 알고 사용할 수 있어야 합니다.
먼저 아바타 업로드 기능을 추가하여 등록 페이지를 개선하겠습니다. 원본 이미지는 jpg, gif 또는 png 형식이어야 합니다. 또한 2MB를 넘지 않아야 합니다. 걱정하지 마세요. 스크립트로 압축하면 아바타의 크기는 약 3kb이고 형식은 jpg가 됩니다. 페이지 열기 등록PHP그리고 태그에 추가 < 형태> 선 enctype="멀티파트/폼 데이터", 예에서와 같이: