Gunohsiz server php. Superglobal massiv $_SERVER
$HTTP_SERVER_VARS [o'chirildi]
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
$_SERVER -- $HTTP_SERVER_VARS [o'chirildi] — Server va ijro muhiti haqida ma'lumot
Tavsif
$_SERVER o'zgaruvchisi skript sarlavhalari, yo'llari va joylashuvi kabi ma'lumotlarni o'z ichiga olgan massivdir. Ushbu massivdagi yozuvlar veb-server tomonidan yaratilgan. Har bir veb-server ulardan birini taqdim etishiga kafolat yo'q; server ulardan ba'zilarini o'tkazib yuborishi yoki bu erda ro'yxatga olinmagan boshqalarini taqdim etishi mumkin. Biroq, bu o'zgaruvchilarning ko'pchiligi » CGI/1.1 spetsifikatsiyasida mavjud, shuning uchun ularni maxsus veb-serveringizda amalga oshirilishini kutishingiz mumkin.
$HTTP_SERVER_VARS o'zgaruvchisi bir xil dastlabki ma'lumotlarni o'z ichiga oladi, lekin u superglobal emas. (E'tibor bering, $HTTP_SERVER_VARS va $_SERVER turli xil o'zgaruvchilardir, shuning uchun PHP ularga mos ravishda munosabatda bo'ladi). Shuni ham yodda tutingki, "uzun massivlar" PHP 5.4.0 da olib tashlangan, shuning uchun $HTTP_SERVER_VARS endi mavjud emas.
Indekslar
Siz $_SERVER massivida quyidagi elementlardan birini topa olmaysiz yoki topa olmaysiz. E'tibor bering, agar mavjud bo'lsa, PHP buyruq satrida ishlayotgan bo'lsa, bir nechta elementlar mavjud bo'ladi (yoki haqiqatan ham farq qiladi).
"PHP_SELF" Hujjat ildiziga nisbatan hozirda ishlayotgan skript faylining nomi. Misol uchun, http://example.com/foo/bar.php manzilidagi skriptdagi $_SERVER["PHP_SELF"] /foo/bar.php bo'ladi. __FILE__ doimiysi joriy (ya'ni ulangan) faylning to'liq yo'li va fayl nomini o'z ichiga oladi. Agar PHP buyruq satrida ishlayotgan bo'lsa, bu o'zgaruvchi PHP 4.3.0 dan boshlab skript nomini o'z ichiga oladi. Ilgari u mavjud emas edi."argv" Skriptga bir qator argumentlar uzatildi. Skript buyruq satrida ishga tushirilganda, u C-ga o'xshash buyruq qatori parametrlariga kirish imkonini beradi. GET usuli orqali chaqirilganda, bu massiv so'rovlar qatorini o'z ichiga oladi."argc" Skriptga o'tkazilgan parametrlar sonini o'z ichiga oladi (agar buyruq satrida ishga tushirilsa).“GATEWAY_INTERFACE” Server tomonidan ishlatiladigan CGI spetsifikatsiyasining versiyasini o'z ichiga oladi; masalan" CGI/1.1". “SERVER_ADDR” Joriy skript ishlayotgan serverning IP manzili.“SERVER_NAME” Joriy skript ishlayotgan xost nomi. Agar skript virtual xostda ishlayotgan bo'lsa, unda ushbu virtual xost uchun belgilangan nom bo'ladi."SERVER_SOFTWARE" So'rovga javob kelganda sarlavhalarda ko'rsatilgan server identifikatsiya qatori.“SERVER_PROTOCOL” Sahifa so'ralgan axborot protokolining nomi va versiyasi; masalan " HTTP/1.0"; “REQUEST_METHOD” Sahifani so'rash uchun qanday usul ishlatilgan; masalan " OLISH", "BOSH", "POST", "PUT".
“REQUEST_TIME” So'rov boshlanishining vaqt tamg'asi. PHP 5.1.0 dan boshlab mavjud.“REQUEST_TIME_FLOAT” Soʻrov boshlanishining vaqt tamgʻasi, mikrosoniyalargacha aniq. PHP 5.4.0 dan boshlab mavjud.“QUERY_STRING” Agar mavjud bo'lsa, sahifani olgan so'rovlar qatori.“DOCUMENT_ROOT” Joriy skript bajariladigan hujjatning ildiz katalogi aynan server konfiguratsiya faylida ko'rsatilgan katalogdir.“HTTP_ACCEPT” Sarlavha tarkibi Qabul qiling: mavjud so'rovdan, agar mavjud bo'lsa."HTTP_ACCEPT_CHARSET" Sarlavha tarkibi Qabul qilish-Charset: mavjud so'rovdan, agar mavjud bo'lsa. Masalan: " iso-8859-1,*,utf-8". "HTTP_ACCEPT_ENCODING" Sarlavha tarkibi Qabul qilish-kodlash: gzip". "HTTP_ACCEPT_LANGUAGE" Sarlavha tarkibi Qabul qilish tili: mavjud so'rovdan, agar mavjud bo'lsa. Masalan: " uz". “HTTP_CONNECTION” Sarlavha tarkibi Ulanish: mavjud so'rovdan, agar mavjud bo'lsa. Masalan: " Tirik turing". “HTTP_HOST” Sarlavha tarkibi Xost: mavjud so'rovdan, agar mavjud bo'lsa.“HTTP_REFERER” Foydalanuvchining brauzerini ushbu sahifaga olib kelgan sahifaning manzili (agar mavjud bo'lsa). Ushbu sarlavha foydalanuvchining veb-brauzeri tomonidan o'rnatiladi. Uni hamma brauzerlar o‘rnatmaydi va ba’zilari qo‘shimcha funksiya sifatida HTTP_REFERER sarlavhasi mazmunini o‘zgartirishga imkon beradi. Bir so'z bilan aytganda, unga haqiqatan ham ishonish mumkin emas."HTTP_USER_AGENT" Sarlavha tarkibi Foydalanuvchi-Agent: mavjud so'rovdan, agar mavjud bo'lsa. Ushbu qatorda foydalanuvchi ushbu sahifani so'rash uchun foydalangan brauzer mavjud. Oddiy misol - bu qator: Mozilla/4.5 (X11; U; Linux 2.2.9 i586). Boshqa narsalar qatorida, siz ushbu qiymatni funksiya bilan ishlatishingiz mumkin get_browser() sahifangizning chiqishini foydalanuvchi brauzerining imkoniyatlariga moslashtirish uchun"HTTPS" Agar so'rov HTTPS protokoli orqali qilingan bo'lsa, bo'sh bo'lmagan qiymatni qabul qiladi.Izoh:
PHP skripti sarlavhalar yuborilgandan so'ng (ya'ni chiqishni buferlashsiz har qanday chiqishni amalga oshirgandan so'ng) chiqadi, agar so'rov ushbu usul yordamida amalga oshirilgan bo'lsa. BOSH.
“REMOTE_ADDR” Foydalanuvchi joriy sahifani ko'rayotgan IP manzili.“REMOTE_HOST” Foydalanuvchi joriy sahifani ko'rayotgan masofaviy xost. Teskari DNS qidiruvi REMOTE_ADDR o‘zgaruvchisining qiymatiga asoslanadi.Izoh: E'tibor bering, ISAPI-ni IIS bilan ishlatganda qiymat bo'ladi o'chirilgan, agar so'rov HTTPS orqali amalga oshirilmagan bo'lsa.
“REMOTE_PORT” Veb-server bilan aloqa qilish uchun foydalaniladigan masofaviy kompyuterdagi port.“REMOTE_USER” Tasdiqlangan foydalanuvchi.“REDIRECT_REMOTE_USER” Agar so'rov ichki yo'naltirilgan bo'lsa, autentifikatsiya qilingan foydalanuvchi.“SCRIPT_FILENAME”Izoh: Ushbu o'zgaruvchini yaratish uchun veb-serveringiz sozlangan bo'lishi kerak. Misol uchun, Apache'da sizga direktivaning mavjudligi kerak HostnameLookups yoqilgan httpd.conf faylida bu o'zgaruvchi yaratiladi. Shuningdek qarang gethostbyaddr().
Hozirda bajarilayotgan skriptga mutlaq yo'l.
“SERVER_ADMIN” Ushbu o'zgaruvchi o'z qiymatini (Apache uchun) server konfiguratsiya faylidagi direktivadan oladi. Agar skript virtual xostda ishlayotgan bo'lsa, bu virtual xost uchun belgilangan qiymat bo'ladi.“SERVER_PORT” Veb-server ulanish uchun foydalanadigan server kompyuteridagi port. Standart sozlamalar uchun qiymat " bo'ladi. 80 "; SLL-dan foydalangan holda, masalan, bu qiymat xavfsiz HTTP ulanishlari uchun sozlanganidek bo'ladi.Izoh:
Agar skript file.php yoki ../file.php kabi nisbiy yo‘l yordamida buyruq satrida (CLI) ishga tushirilsa, $_SERVER["SCRIPT_FILENAME"] o‘zgaruvchisi foydalanuvchi tomonidan belgilangan nisbiy yo‘lni o‘z ichiga oladi.
“SERVER_SIGNATURE” Agar yoqilgan bo'lsa, server tomonidan yaratilgan sahifalarga qo'shiladigan server versiyasi va virtual xost nomini o'z ichiga olgan qator.“PATH_TRANSLATED” Fayl tizimi (hujjat ildizi emas) asosidagi joriy skriptga yo'l, server virtualdan realga har qanday xaritalashni amalga oshirgandan so'ng.Izoh: Apache 2 da jismoniy (haqiqiy) portni olish uchun siz o'rnatishingiz kerak UseCanonicalName = Yoqilgan Va UseCanonicalPhysicalPort = Yoqilgan, aks holda bu qiymat almashtirilishi mumkin va jismoniy portning haqiqiy qiymatini qaytarmaydi. Kengaytirilgan xavfsizlikni talab qiladigan ilovalar kontekstida bu qiymatga tayanish xavfsiz emas.
“SCRIPT_NAME” Joriy bajarilayotgan skriptga yo'lni o'z ichiga oladi. Bu o'zlariga ishora qilishi kerak bo'lgan sahifalar uchun foydalidir. __FILE__ doimiysi joriy (ya'ni kiritilgan) faylning to'liq yo'li va nomini o'z ichiga oladi.“REQUEST_URI” Ushbu sahifaga kirish uchun yuborilgan URI. Masalan, " /index.html". "PHP_AUTH_DIGEST" HTTP Digest autentifikatsiyasini amalga oshirayotganda, bu o'zgaruvchiga mijoz tomonidan yuboriladigan "Avtorizatsiya" sarlavhasi tayinlanadi (bu keyinchalik tegishli tekshirish uchun ishlatilishi kerak).“PHP_AUTH_USER” HTTP autentifikatsiyasi amalga oshirilganda, bu o'zgaruvchi foydalanuvchi tomonidan taqdim etilgan foydalanuvchi nomiga o'rnatiladi."PHP_AUTH_PW" HTTP autentifikatsiyasi amalga oshirilganda, bu o'zgaruvchi foydalanuvchi tomonidan taqdim etilgan parolga o'rnatiladi.“AUTH_TYPE” HTTP autentifikatsiyasi amalga oshirilganda, bu o'zgaruvchi foydalanilayotgan autentifikatsiya turiga o'rnatiladi.“PATH_INFO” Skript nomidan keyin, lekin agar mavjud bo'lsa, so'rovlar qatoridan oldin bo'lgan foydalanuvchi tomonidan taqdim etilgan har qanday yo'lni o'z ichiga oladi. Misol uchun, agar joriy skript http://www.example.com/php/path_info.php/some/stuff?foo=bar URL orqali so'ralsa, $_SERVER["PATH_INFO"] o'zgaruvchisi o'z ichiga oladi. / ba'zi / narsalar?>Izoh: PHP 4.3.2 dan boshlab, PATH_TRANSLATED o‘zgaruvchisi Apache 1-versiyasi bilan solishtirganda endi Apache 2 SAPI da bilvosita o‘rnatilmaydi, bunda u Apache tomonidan foydalanilmaganda SCRIPT_FILENAME o‘zgaruvchisi bilan bir xil qiymatga o‘rnatilgan edi. Ushbu o'zgartirish CGI spetsifikatsiyasiga muvofiq amalga oshirildi, bunda PATH_TRANSLATED o'zgaruvchisi faqat PATH_INFO aniqlanganda mavjud bo'lishi kerak. Apache 2 foydalanuvchilari direktivadan foydalanishlari mumkin AcceptPathInfo = Yoqilgan PATH_INFO o'zgaruvchisini o'rnatish uchun httpd.conf konfiguratsiya faylida.
Ushbu misolni ishga tushirish natijasi shunga o'xshash bo'ladi.
Birinchidan, biz avatarni yuklash imkoniyatini qo'shish orqali ro'yxatdan o'tish sahifasini yaxshilaymiz. Manba tasviri jpg, gif yoki png formatida bo'lishi kerak. Bundan tashqari, u 2 MB dan oshmasligi kerak. Xavotir olmang, u skript tomonidan siqilgandan so'ng, avatar hajmi taxminan 3 kb va jpg formatida bo'ladi. Sahifani oching reg.php va uni tegga qo'shing < shakl> chiziq enctype = "ko'p qismli/form-ma'lumotlar", misoldagi kabi: