Miyasiz foydalanuvchi ma'lumotlari php.

Kontaktlar / topshirish

Golovna 2 Ajoyib o'quvchi Ko'proq yoki kamroq jiddiy turmush qurganlar 2 Ajoyib o'quvchi PHP bilingki, bitta juda jigarrang global massiv bor, deb ataladi $_SERVER.

. Va o'q bu holatni ushbu massivdagi eng mashhur kalitlarni va ularning qiymatlarini aniqlashni xohlaydi, shuning uchun ularning bilimlari boshidanoq majburiydir. PHP dasturchisi 2 Ajoyib o'quvchi Persh nizh oldin boshlanadi PHPdagi $_SERVER global massivi, Men darhol sizga bir oz maslahat beraman.

Bu mo''jizaviy funksiya, ilhomlantirilgan
?>

, deyilganidek phpinfo(). Men darhol ushbu wiki misolini ko'rsataman: phpinfo(); PHPdagi $_SERVER global massivi Ushbu oddiy skript natijasida siz turli xil katta jadvalga ega bo'lasiz

PHP tarjimonini sozlash , bu raqam, oxiriga yaqinroq qiymatlar jadvali bo'ladi:

  • $_SERVER global massivi.
  • U erda barcha kalitlar va barcha tegishli qiymatlar qayta himoyalanadi. Sizga qanday yordam berishim mumkin? Va agar sizga boshqa qiymatlar kerak bo'lsa va kalit nima deb nomlanganini unutsangiz, qo'shimcha funktsiyadan foydalaning Siz uning nomini oldindan taxmin qilishingiz mumkin., Zagalom, siz ushbu skriptni yuklab oling va darhol tushunasiz. Endi eng mashhurlariga o'tamiz $_SERVER massivining kalitlari HTTP_USER_AGENT
  • - Bu kalit mijozning xususiyatlarini bilish imkonini beradi. - Muammolarning aksariyati bu, aqldan ozgan, brauzerga ega, ammo boshqa hech qachon. Va yana, brauzer sifatida, keyin bu jarayonning qaysi o'qi aniqlanishi mumkin.
  • HTTP_REFERER - Muammolarning aksariyati bu, aqldan ozgan, brauzerga ega, ammo boshqa hech qachon.- Ushbu faylga mutlaq yo'ldan o'ch oling (
  • PHP skripti HTML tomoni ), nima uchun ular o'tishdi.
  • Daniya yozuvi.
  • Taxminan aytganda, mijozning kelishi yulduzlari. SERVER_ADDR
  • IP manzillar server. REMOTE_ADDR mijoz. DOCUMENT_ROOT: "- saytning asosiy katalogiga jismoniy yo'l."і" Ushbu parametr orqali o'rnatilishi mumkin Apache server konfiguratsiya fayli DOCUMENT_ROOT SCRIPT_FILENAME - Bosilgan skriptga jismoniy yo'l. QUERY_STRING IP manzillar- Qatordan qatorni olib tashlash imkonini beruvchi yangi qiymat qo'shing va keyin siz ushbu qatorni tahlil qilishni boshlashingiz mumkin. REMOTE_ADDR REQUEST_URI REMOTE_ADDR(da bo'lgani kabi IP manzillar) holda REMOTE_ADDR. Natijada, bunday buyruq berilganda: " http://mysite.ru/index.php?id=5 DOCUMENT_ROOT: "", biz yo'naltirishga ega bo'lamiz http://mysite.ru/?id=5 DOCUMENT_ROOT". Shunday qilib, biz dublyaj qilishni boshladik REMOTE_ADDR.
  • tsey SCRIPT_NAME

- keyingi qadam chaqirilgan skriptga o'tadi. Ehtimol, barcha elementlar PHPdagi $_SERVER global massivi

, muntazam ravishda vikoristlar sifatida.

Siz bilishingiz va kerak bo'lganda hushyor bo'lishingiz kerak.

$HTTP_SERVER_VARS [ko'rilgan] , muntazam ravishda vikoristlar sifatida.(PHP 4>=4.1.0, PHP 5, PHP 7)

$_SERVER --

Server va Vikonannyning o'rtasi haqida ma'lumot

Tavsif

$_SERVER nomi sarlavhalar, yo'llar va skriptni ishlab chiqish kabi ma'lumotlarni saqlash uchun massivdir.

Ushbu massivdagi yozuvlar veb-server tomonidan yaratilgan.

Veb-server ulardan birontasini yetkazib berishiga kafolat yo'q; server ulardan qadam tashlab qo'yishi yoki bu erda ro'yxatga olinmagan boshqalarini qo'shishi mumkin. CGI/1.1 spetsifikatsiyasida juda ko'p o'zgarishlar mavjud, shuning uchun ularning amalga oshirilishini ma'lum bir veb-serverda ko'rishingiz mumkin. $HTTP_SERVER_VARS ni bir xil kob ma'lumotlarini o'z ichiga olishi uchun o'zgartiring, lekin super global emas.(Iltimos, $HTTP_SERVER_VARS va $_SERVER boshqacha ekanligini unutmang, shuning uchun PHP ularni doimiy ravishda qayta ishlaydi.) Shuni ham yodda tutingki, PHP 5.4.0 da uzun massivlar olib tashlangan, shuning uchun $HTTP_SERVER_VARS endi mavjud emas. indeks Siz $_SERVER massivida qaysi elementlar borligini bilishingiz yoki bilmasligingiz mumkin. Iltimos, PHP buyruq satrida ishlayotgan bo'lsa, o'tmishda topilgan har qanday elementlar mavjud bo'lishini (yoki mazmunli bo'lishi mumkin) unutmang."PHP_SELF" Menda hujjat ildiziga bog'langan skript fayli bor. Masalan, http://example.com/foo/bar.php manzilidagi skript uchun $_SERVER["PHP_SELF"] /foo/bar.php bo'ladi.". __FILE__ konstantasi asl fayl nomini oqim (yoki ulangan) faylga joylashtiradi. PHP qayerda ishlaydi buyruq qatori Xost nomi - joriy skript ko'rsatiladigan joy. Agar skript virtual xostda bajarilgan bo'lsa, bu erda ushbu virtual xostga tayinlangan nom ko'rsatiladi. "SERVER_SOFTWARE" Serverni identifikatsiya qilish tartibi, sarlavha ko'rsatkichlari, so'rovga javob olinganda. “SERVER_PROTOCOL” Bu sahifa so'ralgan axborot protokolining versiyasi;"; masalan" HTTP/1.0 “REQUEST_METHOD”", "Hikoyani saqlash uchun Wikorista usuli nima;", "masalan"", "OLISH".

BOSH:

POST Hikoyani saqlash uchun Wikorista usuli nima;.

PUT Hurmat PHP skripti sarlavhalar yuklangandan so'ng (ya'ni chiqishni buferlashsiz har qanday chiqish bajarilgandan so'ng) tugaydi, bu usul bilan to'ldiriladi. “REQUEST_TIME” Timchasovning nishoni boshoqda yuviladi. PHP 5.1.0 dan boshlab mavjud.“REQUEST_TIME_FLOAT” Soat belgisi mikrosekundlargacha aniqlik bilan yozib olinadi. PHP 5.4.0 dan boshlab mavjud. Va yana, brauzer sifatida, keyin bu jarayonning qaysi o'qi aniqlanishi mumkin.“QUERY_STRING” Shu kabi bir qator so'zlar, keyin ikkinchisi, yon tomonga o'chirildi. “DOCUMENT_ROOT” Joriy skript tuzilgan hujjat ildizining katalogi xuddi shu hujjatda ko'rsatilgandek konfiguratsiya fayli Shu kabi bir qator so'zlar, keyin ikkinchisi, yon tomonga o'chirildi. “HTTP_ACCEPT” Sarlavha o'rniga Qabul qiling:". In-line quvvat manbai, xuddi shunday. Shu kabi bir qator so'zlar, keyin ikkinchisi, yon tomonga o'chirildi. "HTTP_ACCEPT_CHARSET" Qabul qilish-Charset:". In-line quvvat manbai, xuddi shunday. Shu kabi bir qator so'zlar, keyin ikkinchisi, yon tomonga o'chirildi. Masalan: " Sarlavha o'rniga iso-8859-1,*,utf-8". "HTTP_ACCEPT_ENCODING" Shu kabi bir qator so'zlar, keyin ikkinchisi, yon tomonga o'chirildi. Qabul qilish-kodlash: Sarlavha o'rniga gzip". "HTTP_ACCEPT_LANGUAGE" Shu kabi bir qator so'zlar, keyin ikkinchisi, yon tomonga o'chirildi. Qabul qilish tili: Joriy skript tuzilgan hujjat ildizining katalogi xuddi shu hujjatda ko'rsatilgandek uz “HTTP_CONNECTION” Ulanish: Shu kabi bir qator so'zlar, keyin ikkinchisi, yon tomonga o'chirildi. Tirik turing“HTTP_HOST” Xost:“HTTP_REFERER” Mijoz brauzerini ushbu saytga ko'rsatgan sayt manzillari (xuddi shunday). Ushbu sarlavha foydalanuvchining veb-brauzeri tomonidan kiritilgan. Buni hamma brauzerlar ham oʻrnatmaydi va buning oʻrniga HTTP_REFERER sarlavhasini oʻzgartirishga ruxsat berishi mumkin. Bir so'z bilan aytganda, siz unga ishonolmaysiz.

BOSH: "HTTP_USER_AGENT" Foydalanuvchi-Agent: In-line quvvat manbai, xuddi shunday.

Ushbu qatorda brauzer belgisini ushbu sahifani so'ragan joyga qo'ying. Oddiy dumba quyidagi qatordir: Mozilla/4.5 (X11; U; Linux 2.2.9 i586) . Bundan tashqari, siz funktsiyaning ma'nosini o'zgartirishingiz mumkin get_browser()

BOSH: Ushbu o'zgartirishni amalga oshirish uchun veb-serveringiz o'zgartirishlar kiritishi kerak bo'lishi mumkin. Misol uchun, Apache'da sizga direktivning mavjudligi kerak HostnameLookups yoqilgan httpd.conf faylida bu o'zgarish amalga oshiriladi..

Div. shuningdek gethostbyaddr()“REMOTE_PORT” Veb-server bilan aloqa qilish uchun foydalaniladigan masofaviy kompyuterdagi port.“REMOTE_USER” Tasdiqlangan koristuvach.“REDIRECT_REMOTE_USER”

Autentifikatsiya koristuvach, chunki so'rov o'rtadan yo'naltiriladi.

BOSH:

“SCRIPT_FILENAME”

Darhol ta'qib qilinadigan skriptga mutlaq yo'l. Agar skript buyruq satrida (CLI), vikoristuyu va vydnosnyj tarzda ishga tushirilsa, masalan, file.php yoki ../file.php , o'zgartirish $_SERVER["SCRIPT_FILENAME"] mystimí vídnosnyj shlyah, ko'rsatkichlar koristuvach.“SERVER_ADMIN” Ushbu o'zgarish o'z ma'nosini (Apache uchun) server konfiguratsiya faylidagi direktivalardan oladi. 80 Agar skript virtual xostda ishlayotgan bo'lsa, bu virtual xost uchun muhim bo'ladi.

BOSH: “SERVER_PORT” Ulanish uchun veb-server tomonidan ishlatiladigan server kompyuteridagi port.і O'rnatish uchun "ma'nosi" bo'ladi."; vikoryst SLL, masalan, xavfsiz HTTP ulanishlari uchun tuzilgani uchun juda muhim bo'ladi.

Jismoniy (haqiqiy) Apache 2 portini olib tashlash uchun siz o'rnatishingiz kerak UseCanonicalName = Yoqilgan UseCanonicalPhysicalPort = Yoqilgan , aks holda bu qiymat bekor qilinishi va jismoniy portning haqiqiy qiymatini o'zgartirmasligi mumkin.

BOSH: Ushbu qiymatga tayanish kuchliroq xavfsizlikni talab qiladigan qo'shimchalar kontekstida xavfsiz emas. “SERVER_SIGNATURE” Server tomonidan yaratilgan sahifalarga qo'shiladigan server versiyasi va virtual xost nomini joylashtirish tartibi yoqilgan.“PATH_TRANSLATED”

Fayl tizimi- (hujjat ildizi yo'q) tishli skriptga asoslanadi, shundan so'ng server teri darajasidagi virtual-real xaritalashni amalga oshiradi. PHP 4.3.2 dan boshlab, PATH_TRANSLATED o'zgarishi endi Apache 1-versiyasidan yangilangan Apache 2 SAPI-da bilvosita o'rnatilmaydi, buning o'rniga u Apache-da o'zgartirilmagan bo'lsa, SCRIPT_FILENAME o'zgarishi bilan bir xil qiymatlarga o'rnatiladi. Bu oʻzgartirish CGI spetsifikatsiyasiga muvofiqligi uchun qilingan va PATH_TRANSLATED oʻzgarishi faqat PATH_INFO oʻrnatilgan boʻlsa amal qiladi. Ushbu sahifaga kirishni rad etish uchun yuborilgan URI. Masalan, "". /index.html "PHP_AUTH_DIGEST" HTTP Digest autentifikatsiyasidan foydalanilganda, mijoz tomonidan qo'llaniladigan "Avtorizatsiya" sarlavhasi qo'shiladi (keyin uni to'g'ri tekshirish uchun o'zgartirish kerak). “PHP_AUTH_USER” Agar HTTP autentifikatsiyasi o'chirilgan bo'lsa, bu o'zgartirish foydalanuvchi nomiga kiritiladi va foydalanuvchiga beriladi. "PHP_AUTH_PW" HTTP autentifikatsiyasi tugagach, mijoz sizdan parolni o'zgartirishingizni so'raydi. “AUTH_TYPE” HTTP autentifikatsiyasi yoqilganda, tekshirilayotgan autentifikatsiya turi o'zgartiriladi. “PATH_INFO” Ssenariy nomidan keyin nima qilish kerakligini bilishning hojati yo'q, yoki men qanday bo'lsa, shunday tartibda yozaman.?>

Misol uchun, agar http://www.example.com/php/path_info.php/some/stuff?foo=bar URL uchun oqim so'rovi skripti bo'lsa, $_SERVER["PATH_INFO"] qiymati bo'ladi.

/ ba'zi / narsalar

Bu dumba natijasi shunga o'xshash narsa bo'ladi.

Boshqa darsda biz yana ikkita dars yozamiz va nihoyat skriptning ichki qismini tugatamiz.

Reja

Ushbu darslar seriyasi mijozlarga ro'yxatdan o'tish, tizimga kirish, tizimdan chiqish va sozlamalarni o'zgartirish imkonini beruvchi oddiy qo'shimchani yaratadi.

Mijoz haqidagi barcha ma'lumotlarni o'z ichiga olgan sinf User deb nomlanadi va User.class.php faylida topiladi.

Kirish/chiqarish uchun mas'ul bo'lgan sinf UserTools (UserTools.class.php) deb nomlanadi.

Sinflarning nomi haqida bir oz To'g'ri ohang sinfni tavsiflovchi fayllarni sinfning o'zi bilan bir xil nomlar bilan nomlashdir. Shu tarzda, sinflar bilan jilddagi teri faylining nomini aniqlash oson.

Bundan tashqari, masalan, sinf fayliga nom bering va .class yoki .inc qo'shing.

Shunday qilib, biz faylning tayinlanishini aniq ko'rsatamiz va qo'shimcha yordam so'rashimiz mumkin. htaccess bir nechta fayllarga kirishni cheklaydi.

Klas Koristuvachiv (User.class.php)
Bu sinf teri koristuvach uchun muhim ahamiyatga ega.
//Yangi ob'ekt yaratilganda konstruktor faollashadi//Argument sifatida JB qatori bilan assotsiativ massiv.
funktsiya __construct($data) ( $this->id = (isset($data["id"])) ? $data["id"] : ""; $this->username = (isset($data[" username"])) ? $data["username"] : ""; $this->hashedPassword = (isset($data["password"])) ? $ma'lumotlar["parol"] : ""; >email = (isset($data["email"])) $data["email"] : ""; $this->joinDate = (isset($data["join_date"])) $data["join_date"] : "")
umumiy funktsiya save($isNewUser = false) ( //yangi maʼlumotlar bazasi obyektini yarating. $db = new DB(); //agar foydalanuvchi allaqachon roʻyxatdan oʻtgan boʻlsa va biz //faqatgina uning maʼlumotlarini yangilayapmiz. if(!$isNewUser) ) ( //ma'lumotlar massivini o'rnating $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"",
"email" => ""$this->email"");

//ma'lumotlar bazasidagi qatorni yangilash $db->update($data, "users", "id = ".$this->id);

)else ( //agar foydalanuvchi birinchi marta roʻyxatdan oʻtayotgan boʻlsa. $data = array("username" => ""$this->username"", "password" => ""$this->hashedPassword"" , "email" => ""$this->email"", "join_date" => """.date("Y-m-d H:i:s",time())."""); $data, "foydalanuvchilar"); $this->joinDate = time();

) ?>

Tushuntirish

Kodning birinchi qismi zona klassi sinfning ma'lumotlar bazasiga ulanishini ta'minlaydi (Foydalanuvchi sinfida ushbu sinfni qo'llab-quvvatlaydigan funksiya mavjud).

"Himoyalangan" sinfini o'zgartirish o'rniga (1-darsda muhokama qilingan) biz ularni "ommaviy" deb tushunamiz.", ні - $ value = "Bu shuni anglatadiki, har qanday kod yoki sinf User ob'ekti bilan ishlash jarayonida ko'plab o'zgarishlarga kirishi mumkin.". У прикладі результат $value = “B”.!}

Konstruktor jadval ustunlari kalit bo'lgan massivni oladi.

Saqlash funktsiyasi foydalanuvchi ob'ektidagi aniq qiymatlar bilan ma'lumotlar bazasi jadvaliga o'zgartirishlar kiritish uchun ishlatiladi.

Bu funksiya biz birinchi darsda yaratgan ma'lumotlar bazasining vikoryst klassidir.

Vikorist o'zgartirish sinflari, $ma'lumotlar massivi o'rnatilgan.

Avval foydalanuvchi haqidagi ma'lumotlar saqlanganligi sababli, $isNewUser $true (promolar uchun noto'g'ri) sifatida uzatiladi.
Agar $isNewUser = $true bo'lsa, u holda ma'lumotlar bazasi sinfida insert() funksiyasi chaqiriladi.
Aks holda update() funksiyasi chaqiriladi.
Ikkala holatda ham mijozning ob'ekti haqidagi ma'lumotlar ma'lumotlar bazasida saqlanadi.
{
Class UserTools.class.php
Bu sinf koristuvachev tomonidan ishlatiladigan funktsiyalarni o'z ichiga oladi: login(), logout(), checkUsernameExists() va get().
}
Ushbu kengaytirilgan dasturlarga qo'shimcha ravishda siz yana ko'p narsalarni qo'shishingiz mumkin.
?>

//UserTools.class.php require_once "User.class.php";

login() funktsiyasi uning nomiga to'g'ri keladi.

Foydalanuvchi nomi va $parol argumentlarini oling va ularning haqiqiyligini tekshiring.

Hamma narsa joyida bo'lgandan so'ng, Foydalanuvchi ob'ekti barcha ma'lumotlar bilan yaratiladi va sessiyada saqlanadi.

Biz PHP serialize() funksiyasidan foydalanayotganimizni unutmang.

Bu unserialize() bilan ishlatilishi mumkin bo'lgan ob'ekt uchun saqlash opsiyasini yaratadi.

Kirish vaqti ham saqlanadi.

Bu erda siz vikoristlarga saytga tashrif buyurish bilan bog'liq muammolar haqida ma'lumot berish uchun vikorist bilan bog'lanishingiz mumkin.

Shuni ham ta'kidlashingiz mumkinki, biz $_SESSION["logged_in"] ni 1 ga o'rnatdik. Bu bizga har bir sahifada foydalanuvchi tizimga kirganligini osongina tekshirish imkonini beradi.

Bu o'zgarishni tekshirish kifoya.

Funktsiyadan chiqish()
Bu ham eng oddiy funksiya.

PHP unset() funktsiyasi xotira xotirasini tozalaydi, xuddi session_destroy() seansni o'chiradi.

Funktsiyani tekshirishUsernameMavjud()

Ingliz tilini biladigan har bir kishi ushbu funktsiyani osongina tushunishi mumkin.

Bu shunchaki ma'lumotlar bazasini so'raydi, u erda siz shunga o'xshash loginni qidirasiz yoki yo'q.
get() funktsiyasi
Bu funksiya mijozning noyob identifikatorini oladi va ma'lumotlar bazasi bilan qo'shimcha DB klassi va select() funksiyasining o'zi bilan ishlaydi.
Buning o'rniga, foydalanuvchi haqidagi kam ma'lumotdan assotsiativ massivni oling va massivni konstruktorga o'tkazib, yangi User ob'ektini yarating.
Qayerda vikorist bo'lish mumkin?
//agar tizimga kirgan bo'lsa, sessiya o'zgaruvchilarini yangilang if(isset($_SESSION["logged_in"])) ( $user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($user->id));) ?>

Nima qilishimiz kerak?

Bu erda juda ko'p nutqlar bo'ladi.

Bizning oldimizda biz taglik bilan kavisli aloqaga egamiz.

Biz ulanganimizdan so'ng, biz session_start() funksiyasidan boshlaymiz.

Funktsiya sessiya yaratadi yoki agar ro'yxatdan o'tishlar mavjud bo'lsa, oqimni davom ettiradi.

Natijada, bizning dasturimiz kirishi kerak bo'lganlar uchun mo'ljallangan, bu funktsiya teri tomonida majburiydir.

© 2022 androidas.ru - Android haqida hamma narsa