Menü
Bedava
kayıt
ev  /  Eğitim/ Düşüncesizlik. $ _SERVER - Sunucu ve çalışma zamanı bilgisi Düşüncesiz kullanıcı bilgisi php

Düşüncesizlik. $ _SERVER - Sunucu ve çalışma zamanı bilgisi Düşüncesiz kullanıcı bilgisi php

Düşüncesizlik - bu, tutkunun düşüncelere bağlı olmadığı zamandır.

komik sözler

Düşüncesizlik kişilik özelliği olarak - eylemlerinin sonuçlarını düşünmeme eğilimi; yeterince kasıtlı, aptalca, anlamsızca davranmak; derin ve derinlemesine düşünememe, bir şeyi doğru anlayamama.

Sert bir kışta ailede yakacak odun tükendi. Baba varoşlara gitti, ölü bir ağaç buldu ve onu kesti. İlkbaharda, kestiği bir ağaç kütüğünden sürgünlerin çıktığını gördü. - Emindim, - dedi baba, - bu ağaç öldü. O zaman hava o kadar soğuktu ki don, dallarının çatlamasına, kırılmasına ve köklerinde bir damla hayat kalmamış gibi yere düşmesine neden oldu. Şimdi görüyorum ki hayat hala bu sandıkta parlıyormuş.

Ve oğluna dönerek şöyle dedi: - Bu dersi hatırla. Kışın asla ağaç kesmeyin. Yanlış zamanda veya kötü bir ruh halindeyken asla düşünerek karar vermeyin. Beklemek. Sabırlı olun, kötü zamanlar geçecek. Baharın geri geleceğini unutmayın.

Düşüncesizlik, aptallığın ve aptallığın kızıdır. Herhangi bir akıl varlığının yokluğudur. Düşüncesizlik, dikkatsizlikten ve insanlara saygısızlıktan bahseder. Kimi sevdiğimiz ve saygı duyduğumuz, onu önemsiyoruz, endişeleniyor ve endişe duyuyoruz, bu nedenle ona zarar verebilecek veya yaşamasını engelleyebilecek tüm nüansları, tüm küçük şeyleri varsayıyoruz. Saygı duymadığımız ve değer vermediğimiz kişilere de düşüncesizlik gösteriyoruz.

Düşüncesizlik aptallık, aptallık, aptallık ve akılsızlığın bir müttefikidir.

Meraklı oynayan adam, güzel hostes sorar: - Kız, TU-154-2B ne anlama geliyor? - Kendin düşünemez misin? Eh, TU, uçağın tasarımcı Tupolev tarafından üretildiği anlamına gelir, 150, kabindeki koltuk sayısıdır ve 4, kaç mürettebat üyesidir. - Ve 2B? - Hobinin düşüncesizliğini görebilirsin! Bu ben ve Marinka.

Düşüncesizlik, bir kişinin her eyleminin hesabını vermesi gerektiğini anlamadan yaşamasıdır. Bir bumerang gibi, eylemlerinin sonuçlarının karma yasasına göre kendisine geri döneceği aklına gelmez. Hem iyi hem de kötü kesinlikle tekrar geri gelecek.

Düşüncesizlik, çevrenizi rahatsız etmenin kanıtlanmış bir yoludur.

V. Shlakhter, düşüncesizliği sıklıkla aptallık olarak algıladığımızı söylüyor. Ya da hayvanlık için bile. Örneğin, sürücü yoğun bir kavşağa girdi. Yan yolda duran ve yeşil bir trafik ışığı bekleyen herkese trafiği kapattı. Ama bundan, büyük olasılıkla, öfkeden değil, aptal bir kaba olduğu için değil. Sonuçları düşünmek için zavallı küçük kafasını rahatsız etmedi. Şimdi herkes onu (daha sık ona!)

- Kediye bol su bırak, üç gün orada olmayacağım, - diyor anne. Oğlum da kediye bir buçuk litrelik plastik şişelerden oluşan bir paket getiriyor. İç, kedi! Kedinin şişeyi açıp içemeyeceği, oğlunun aklına bile gelmez. Daha fazla su istediler - daha fazlasını getirdi, problemler neler? Bunu aptallığından yapmamıştı. Ve talihsiz kediye olan nefretimden değil. Düşüncesizlikten!

Düşüncesizlik akıldan çok daha önce akla gelir. Her zaman aceleci kararlar eşlik eder.

Öğretmen, öğrencilerini her zaman düşüncesizliğe, yani insanlar hakkında aceleci yargılara ve hatta düşüncesiz tavsiyelere karşı uyardı. Bunu söyledi: - Kalbinizde ve zihninizde, sorunun özüne indiğinizi hissedene ve doğru olanı yaptığınıza dair en ufak bir şüphe sizi terk etmeyecek, en iyi eyleminizin eylemsizlik olmasına izin verin ve en emin olun. kelime - sessizlik ... Aksi takdirde, tavsiyeniz insanları düşüncesizlikten muzdarip bir köylünün kaderini tekrar etmeye zorlayacaktır.

Ona ne oldu? - öğrencilere sordu. - Bir kürsü üzerinde duran evi, her taraftan şiddetli rüzgarlarla savruldu. Köylü, düşüncesizlikten, saf bir şekilde, evi çevreleyen uzun ağaçların bir yandan diğer yana sallanması nedeniyle rüzgarın ortaya çıktığına inanıyordu. Bir gün sinirlendi ve bütün ağaçları kesti. Sonuç olarak, son korumasını kaybeden ev daha da soğuk ve rüzgarlı hale geldi.

Düşüncesizlik, sadece kendi çıkarlarını düşünen insanların belasıdır.

Teğmen askere sorar: - Nükleer bir patlamanın patlak vermesi durumunda ne yapılmalı? - Ayaklarınızla flaşa uzanın ve ellerinizle kendinizi örtün - cevap veriyor. - Doğru değil. Erimiş metalin resmi botların üzerine damlamaması için kollarınızı bir makineli tüfekle öne doğru uzatmanız gerekir.

Düşüncesizlik insanı belirsizlik ortamına iter. Bir kişi birkaç dakika içinde ne olacağını tahmin edemiyorsa, tam bir belirsizlik halinde yaşıyor demektir.

Kocası bir iş gezisinden döndü. Evde kimse yok. Karımı şaşırtmak için saklanmaya karar verdim. Aniden karısının bir adamla daireye girdiğini görür. Yatak odasına girerler. Kapı kapanır, kocanın anahtar deliğine gitmesi daha olasıdır. Ve karısının bu adamı öptüğünü görür, bütün kıyafetlerini çıkarır, ikisi birden yatağa koşar, o kıyafetlerini çıkarır ve külotunu kocanın saklandığı ön kapıya doğru fırlatır ve onlar da asılı dururlar. tut, kocanın anahtarını iyi kapat ve genel bakış. Ve sonra koca sıkıntıyla düşünüyor: - Eh, bir günümü boşa harcadım, yine tam bir belirsizlik!

Petr Kovalev

İçindekiler

$ kullanıcı bilgisi

Bunlar, loadUserSettings () içinde $ user_info için tanımlanan tüm anahtarlardır. Bazıları kesinlikle açıklayıcıdır.

gruplar

dizi. Tüm olası üye grupları da bir kullanıcı ekledi. Anahtarlar önemli değil. Değerler, her ihtimale karşı int olarak sterilize edilmiş gruplardır. Bu içerir:

  • Birincil grup
  • Gönderi sayısı grubu
  • Ek gruplar. Bunlar veritabanında virgülle ayrılmış bir dize olarak saklanır.

muhtemelen_robot

bool. Özellik etkinleştirilirse aracı bilinen bir örümcekle eşleşirse doğrudur ve devre dışı bırakılırsa bilinçli bir tahminde bulunur.

İD

int Üyenin "veritabanı değerine" karşılık gelir (! LANG: id_member".!}

Kullanıcı adı

isim

sicim. Görüntülenen adları.

e-posta

şifre

dilim

is_guest

is_admin

tema

son giriş

int. Unix zaman damgası.

ip

$ _SERVER ["UZAKTAN_ADDR"]

ip2

$ _SERVER ["BAN_CHECK_IP"]

gönderiler

int. Mesaj sayısı.

zaman formatı

sicim. strtftime () için özel biçim.

time_offset

int. Kullanıcının forum zamanından saatlik farkı.

avatar

  • url: dize
  • dosya adı: dize
  • custom_dir: bool
  • id_attach: int

gülen_set

mesajlar

int. Sahip oldukları PM sayısı.

unread_messages

int. Sahip oldukları okunmamış PM'lerin sayısı.

total_time_logged_in

arkadaşlar

Sicim. Virgülle ayrılmış arkadaşlarının listesi.

yok sayma panoları

Sicim. Yok saydıkları panoların listesi virgülle ayrılmış.

yok sayan kullanıcılar

Sicim. Yok saymayı seçtikleri kullanıcıların listesi virgülle ayrılmış.

  • SMF 1.1.x'te yalnızca PM'ler yoksayılır.
  • SMF 2.0.x ve sonraki sürümlerde bu özellik, yok sayılan kullanıcının gönderilerini de gizlemek için geliştirildi.

uyarı

int. Uyarı noktaları.

izinler

sorgu_see_board

Hazırlanmış bir SQL ifadesinin parçası olarak görebilecekleri tüm panoların listesi.

sorgu_wanna_see_board

Hazırlanmış bir SQL ifadesinin parçası olarak görmek İSTEDİKLERİ panoların listesi.

mod_cache

is_mod

Boole. Üyenin moderatör olduğu kurullar dışında yanlıştır. Her zaman ayarlanır.

İkinci derste iki sınıf daha yazacağız ve senaryonun iç kısmını tamamen bitireceğiz.

Plan

Bu eğitim serisinin amacı, kullanıcıların kaydolmasına, oturum açmasına, oturumu kapatmasına ve ayarları değiştirmesine olanak tanıyan basit bir uygulama oluşturmaktır. Kullanıcı ile ilgili tüm bilgileri içerecek olan sınıfa User adı verilecek ve User.class.php dosyasında tanımlanacaktır. Girmek / çıkmaktan sorumlu olacak sınıf, UserTools (UserTools.class.php) olarak adlandırılacaktır.

Sınıf adlandırma hakkında biraz

Sınıf tanımlarına sahip dosyaları sınıfın kendisiyle aynı adla adlandırmak iyi bir uygulamadır. Bu, sınıf klasöründeki her dosyanın amacını belirlemeyi kolaylaştırır.

Sınıf dosya adının sonuna .class veya .inc eklemek de yaygındır. Böylece, dosyanın amacını net bir şekilde tanımlarız ve bu dosyalara erişimi kısıtlamak için .htaccess kullanabiliriz.

Kullanıcı Sınıfı (User.class.php)

Bu sınıf her kullanıcıyı tanımlayacaktır. büyüme ile bu uygulamanın"Kullanıcı" tanımı önemli ölçüde değişebilir. Neyse ki, OOP programlama, ek kullanıcı özellikleri eklemeyi kolaylaştırır.

yapıcı

Bu sınıfta bir kurucu kullanacağız - bu, sınıfın başka bir kopyası oluşturulduğunda otomatik olarak çağrılan bir fonksiyondur. Bu, projeyi oluşturduktan sonra bazı nitelikleri otomatik olarak yayınlamamıza izin verir. Bu sınıfta, yapıcı tek bir argüman alacaktır: ilişkisel dizi veritabanımızın users tablosundan bir satır içeren.

require_once "DB.class.php"; sınıf Kullanıcı (public $ id; public $ kullanıcı adı; public $ hashedPassword; public $ email;
public $ joinDate;
//Yeni bir nesne oluşturulduğunda yapıcı çağrılır// Argüman olarak DB satırı ile ilişkisel bir dizi alır. function __construct ($ data) ($ this-> id = (isset ($ data ["id"]))? $ data ["id"]: ""; $ this-> kullanıcı adı = (isset ($ data [" kullanıcı adı "]))? $ data [" kullanıcı adı "]:" "; $ this-> hashedPassword = (isset ($ data [" şifre "]))? $ data [" şifre "]:" "; $ this- > email = (isset ($ data ["email"]))? $ data ["email"]: ""; $ this-> joinDate = (isset ($ data ["join_date"]))? $ data [" birleştirme_tarihi "]:" ";)
public function save ($ isNewUser = false) (// yeni bir veritabanı nesnesi oluşturun. $ db = new DB (); // kullanıcı zaten kayıtlıysa ve bilgilerini // güncelliyoruz. if (! $ isNewUser ) (// veri dizisini ayarlayın $ data = dizi ("username" => "" $ this-> username "", "password" => "" $ this-> hashedPassword "",
"email" => "" $ this-> email "");
// veritabanındaki satırı güncelle $ db-> update ($ data, "users", "id =". $ this-> id); ) else (// kullanıcı ilk kez kayıt oluyorsa. $ data = array ("username" => "" $ this-> username "", "password" => "" $ this-> hashedPassword "" , "email" => "" $ this-> email "", "join_date" => "" ".date (" Ymd H: i: s ", time ())." ""); $ this-> id = $ db-> insert ($ data, "users"); $ this-> joinDate = time ();) return true; ))?>

Açıklama

Kodun sınıf bölgesi dışındaki ilk kısmı, sınıfın veritabanına bağlantısını sağlar (çünkü User sınıfında bu sınıfı gerektiren bir fonksiyon vardır).

“Korumalı” (ders 1'de kullanılan) sınıf değişkenleri yerine onları “genel” olarak tanımlarız. Bu, User nesnesiyle çalışırken sınıfın dışındaki herhangi bir kodun bu değişkenlere erişimi olduğu anlamına gelir.

Yapıcı, tablodaki sütunların anahtar olduğu bir dizi alır. Sınıf değişkenini $ this-> değişkenadı kullanarak belirledik. Bu sınıfın örneğinde, önce belirli bir anahtarın değerinin olup olmadığını kontrol ediyoruz. Eğer öyleyse, o zaman sınıf değişkenini bu değere ayarladık. Aksi takdirde, boş bir dizedir. Kod, if cirosu için kısa bir gösterim biçimi kullanır:

$ değeri = (3 == 4)? "A": "B";

Bu örnekte, 3'ün dörde eşit olup olmadığını kontrol ediyoruz! Evet ise - o zaman $ değeri = “A”, hayır - $ değeri = “B”. Örneğimizde sonuç $ değeri = “B”dir.

Kullanıcılarla ilgili bilgileri veritabanına kaydederiz

Save işlevi, User nesnesindeki mevcut değerlerle veritabanı tablosunda değişiklik yapmak için kullanılır. Bu fonksiyon ilk derste oluşturduğumuz DB sınıfını kullanır. Sınıf değişkenleri kullanılarak $ veri dizisi ayarlanır. Kullanıcı verileri ilk kez kaydediliyorsa, $ isNewUser, $ true olarak geçirilir (varsayılan yanlıştır). $ isNewUser = $ true ise, DB sınıfının insert() işlevi çağrılır. Aksi takdirde update() fonksiyonu çağrılır. Her iki durumda da, kullanıcı nesnesinden gelen bilgiler veritabanına kaydedilecektir.

UserTools.class.php sınıfı

Bu sınıf, kullanıcılarla ilgili işlevleri içerecektir: login (), logout (), checkUsernameExists () ve get (). Ancak bu uygulamanın genişletilmesi ile daha fazlasını ekleyebilirsiniz.

//UserTools.class.php require_once "User.class.php"; require_once "DB.class.php";
sınıf Kullanıcı Araçları (
// Kullanıcının oturumunu açın. Önce // kullanıcı adı ve parolanın veritabanındaki bir satırla eşleşip eşleşmediğini kontrol eder. // Başarılı olursa, oturum değişkenlerini ayarlayın // ve kullanıcı nesnesini içinde saklayın.
genel işlev girişi ($ kullanıcı adı, $ şifre)
{
$ hashedPassword = md5 ($ şifre); $ sonuç = mysql_query ("SELECT * FROM users WHERE kullanıcı adı =" $ kullanıcı adı "VE parola =" $ hashedPassword ""); if (mysql_num_rows ($ sonuç) == 1) ($ _SESSION ["user"] = serileştirme (yeni Kullanıcı (mysql_fetch_assoc ($ sonuç))); $ _SESSION ["login_time"] = zaman (); $ _SESSION ["logged_in "] = 1; true döndür;) başka (yanlış döndür;))
// Kullanıcının oturumunu kapat. Oturum değişkenlerini yok edin. public function çıkış () (unset ($ _ SESSION ["user"]); unset ($ _ SESSION ["login_time"]); unset ($ _ SESSION ["logged_in"]); session_destroy ();) // Kontrol bir kullanıcı adı olup olmadığını görmek için. // Bu, tüm kullanıcı adlarının benzersiz olduğundan emin olmak için kayıt sırasında çağrılır. public function checkUsernameExists ($ kullanıcı adı) ($ sonuç = mysql_query ("kullanıcı adı =" $ kullanıcı adı "" olan kullanıcılardan kimliği seçin); if (mysql_num_rows ($ sonuç) == 0) (yanlış döndür;) başka (doğru dönüş;)
}
// bir kullanıcı al // bir Kullanıcı nesnesi döndürür. Kullanıcı kimliğini girdi olarak alır genel işlev get ($ id) ($ db = yeni DB (); $ sonuç = $ db-> seçin ("kullanıcılar", "id = $ id"); yeni Kullanıcı döndür ($ sonuç );))
?>

Giriş () işlevi

login () işlevi kendini açıklayıcıdır. Kullanıcının $ username ve $ password argümanlarını alır ve eşleşip eşleşmediğini kontrol eder. Her şey eşleşirse, tüm bilgileri içeren bir Kullanıcı nesnesi oluşturur ve bunu oturumda saklar. Lütfen yalnızca PHP'nin serialize () işlevini kullandığımızı unutmayın. Unserialize () işlevini kullanarak kolayca geri alabileceğiniz nesnenin kaydedilmiş bir sürümünü oluşturur. Ayrıca, oturum açma süresi kaydedilecektir. Bu, gelecekte kullanıcılara sitede kalış süreleri hakkında bilgi sağlamak için kullanılabilir.

Ayrıca $ _SESSION ["logged_in"]'i 1 olarak ayarladığımızı fark edebilirsiniz. Bu, kullanıcının her sayfada oturum açıp açmadığını kolayca kontrol etmemizi sağlar. Sadece bu değişkeni kontrol etmek yeterlidir.

Çıkış () işlevi

Ayrıca basit bir işlev. PHP'nin unset() işlevi bellekteki değişkenleri temizler, session_destroy() ise oturumu siler.

CheckUsernameExists () İşlev

İngilizce bilen herkes işlevi kolayca anlayacaktır. Veritabanına benzer bir giriş kullanılıp kullanılmadığını sorar.

() işlevini al

Bu işlev benzersiz bir kullanıcı kimliği alır ve DB sınıfını, yani select () işlevini kullanarak veritabanına bir sorgu yapar. Bir dizi kullanıcı bilgisi içeren bir ilişkisel dizi alacak ve diziyi yapıcıya ileterek yeni bir Kullanıcı nesnesi oluşturacaktır.

Nerede kullanabilirsiniz? Örneğin, belirli kullanıcı profillerini göstermesi gereken bir sayfa oluşturursanız, bu bilgileri dinamik olarak almanız gerekir. Bunu şu şekilde yapabilirsiniz: (URL http://www.website.com/profile.php?userID=3 diyelim)

// not: önce bir veritabanı bağlantısı açmanız gerekecek. // Bunu yapmakla ilgili daha fazla bilgi için Bölüm 1'e bakın. // "Ayrıca" sınıf dosyalarını eklediğinizden emin olmalısınız.
$ araçlar = yeni Kullanıcı Araçları (); $ kullanıcı = $ araçlar-> get ($ _ REQUEST ["userID"]); echo "Kullanıcı Adı:". $ kullanıcı-> kullanıcı adı. ""; echo "Katılım Tarihi:". $ user-> joinDate. "";

Kolayca! Hakikat?

Sunucu tarafı son dokunuş: global.inc.php

global.inc.php sitedeki her sayfa için gereklidir. Niye ya? Bu şekilde ihtiyacımız olan tüm olağan işlemleri sayfaya yerleştireceğiz. Örneğin, session_start()'ı başlatacağız. DB bağlantısı da açılacaktır.

require_once "sınıflar / UserTools.class.php";
require_once "sınıflar / DB.class.php";
// veritabanına bağlanın $ db = yeni DB(); $ db-> bağlan ();
// UserTools nesnesini başlat $ userTools = new UserTools (); // oturumu başlat
oturum_başlangıç();
// oturum açıldıysa oturum değişkenlerini yenile if (isset ($ _ SESSION ["logged_in"])) ($ user = unserialize ($ _ SESSION ["user"]); $ _SESSION ["user"] = serialize ($ userTools -> al ($ user-> id));)?>

O ne yapıyor?

Burada birkaç şey oluyor. Öncelikle baza bir bağlantı açıyoruz.

Bağlandıktan sonra session_start() fonksiyonunu başlatıyoruz. İşlev, bir oturum oluşturur veya kullanıcı zaten oturum açmışsa mevcut oturumu devam ettirir. Uygulamamız kullanıcıların giriş/çıkış yapması için tasarlandığından her sayfada bu özellik gereklidir.

Ardından, kullanıcının oturum açıp açmadığını kontrol ediyoruz. Eğer öyleyse, en son kullanıcı bilgilerini görüntülemek için $ _SESSION ["user"] güncelleyeceğiz. Örneğin, bir kullanıcı e-postasını değiştirirse, eskisi oturumda saklanır. Ancak bu otomatik güncelleme ile olmayacak.

Bu, ikinci bölümü tamamlıyor! Yarın bu konuyla ilgili son bir ders bekleyin.

Herşey gönlünce olsun!

$ HTTP_SERVER_VARS [kaldırıldı]

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

$ _SERVER - $ HTTP_SERVER_VARS [kaldırıldı]Sunucu ve Çalışma Zamanı Bilgileri

Açıklama

$ _SERVER değişkeni, başlıklar, yollar ve komut dosyası konumları gibi bilgileri içeren bir dizidir. Bu dizideki girişler web sunucusu tarafından oluşturulur. Her web sunucusunun bunlardan herhangi birini sağlayacağının garantisi yoktur; sunucu bazılarını atlayabilir veya burada listelenmeyen bazılarını sağlayabilir. Ancak, bu değişkenlerin çoğu »CGI / 1.1 spesifikasyonunda mevcuttur, dolayısıyla bunların belirli bir web sunucusunda uygulanmalarını bekleyebilirsiniz.

$ HTTP_SERVER_VARS değişkeni aynı başlangıç ​​bilgilerini içerir, ancak süper küresel değildir. ($ HTTP_SERVER_VARS ve $ _SERVER değişkenlerinin farklı değişkenler olduğuna dikkat edin, bu nedenle PHP bunları uygun şekilde işler). Ayrıca PHP 5.4.0'da "uzun diziler"in kaldırıldığını ve dolayısıyla $ HTTP_SERVER_VARS artık mevcut olmadığını unutmayın.

dizinler

$ _SERVER dizisinde aşağıdaki öğelerden herhangi birini bulabilir veya bulamayabilirsiniz. PHP komut satırında çalıştırıldığında, varsa, birkaç öğenin kullanılabilir (veya gerçekten anlamlı) olacağını unutmayın.

"PHP_SELF" Belge köküne göre şu anda yürütülmekte olan komut dosyasının adı. Örneğin, http://example.com/foo/bar.php adresindeki komut dosyasındaki $ _SERVER ["PHP_SELF"], /foo/bar.php olacaktır. __FILE__ sabiti, geçerli (yani bağlı) dosyanın tam yolunu ve dosya adını içerir. PHP komut satırında çalışıyorsa, bu değişken PHP 4.3.0'dan beri komut dosyasının adını içerir. Daha önce mevcut değildi."argv" Komut dosyasına iletilen bir dizi bağımsız değişken. Komut satırı komut satırında çalıştırıldığında, komut satırı parametrelerine C benzeri erişim sağlar. GET yöntemiyle çağrıldığında, bu dizi sorgu dizesini içerecektir."argc" Komut dosyasına iletilen parametre sayısını içerir (komut satırında başlatıldıysa)."GATEWAY_ARAYÜZ" Sunucu tarafından kullanılan CGI belirtiminin sürümünü içerir; Örneğin" CGI / 1.1". "SERVER_ADDR" Geçerli komut dosyasının üzerinde çalıştığı sunucunun IP adresi."SUNUCU ADI" Geçerli komut dosyasının üzerinde çalıştığı ana bilgisayar adı. Komut dosyası bir sanal ana bilgisayarda yürütülürse, bu, o sanal ana bilgisayar için tanımlanan adı içerecektir."SUNUCU_YAZILIMI" İstek yanıtlandığında başlıklarda belirtilen sunucu tanımlama dizesi."SUNUCU_PROTOKOL" Sayfanın talep edildiği bilgi protokolünün adı ve versiyonu; Örneğin " HTTP / 1.0"; "İSTEK_YÖNTEM" Sayfayı istemek için hangi yöntemin kullanıldığı; Örneğin " ELDE ETMEK", "KAFA", "İLETİ", "KOYMAK".

Yorum Yap:

PHP betiği, istek yöntem tarafından yapılmışsa, başlıkları gönderdikten sonra (yani, çıktıyı arabelleğe almadan herhangi bir çıktı yaptıktan sonra) sona erer. KAFA.

"İSTEK ZAMANI" İsteğin başlangıcının zaman damgası. PHP 5.1.0'dan beri mevcuttur."İSTEK_ZAMAN_FLOAT" Mikrosaniye hassasiyetinde, isteğin başlangıcının zaman damgası. PHP 5.4.0'dan beri mevcuttur."QUERY_STRING" Varsa, sayfanın alındığı sorgu dizesi."DOKÜMAN KAYNAĞI" Geçerli komut dosyasının yürütüldüğü belge kök dizini, tam olarak sunucu yapılandırma dosyasında belirtilendir."HTTP_KABUL" Başlık içeriği Kabul etmek: varsa, mevcut istekten."HTTP_ACCEPT_CHARSET" Başlık içeriği Kabul Et-Karakter Seti: varsa, mevcut istekten. Örneğin: " iso-8859-1, *, utf-8". "HTTP_ACCEPT_ENCODING" Başlık içeriği Kabul-Kodlama: gzip". "HTTP_ACCEPT_LANGUAGE" Başlık içeriği Kabul Et-Dil: varsa, mevcut istekten. Örneğin: " ru". "HTTP_CONNECTION" Başlık içeriği Bağlantı: varsa, mevcut istekten. Örneğin: " Hayatta kal". "HTTP_HOST" Başlık içeriği Ev sahibi: varsa, mevcut istekten."HTTP_YÖNLENDİRİCİ" Kullanıcının tarayıcısını bu sayfaya yönlendiren sayfanın (varsa) adresi. Bu başlık, kullanıcının web tarayıcısı tarafından belirlenir. Tüm tarayıcılar bunu yüklemez ve bazıları HTTP_REFERER başlığının içeriğini bir seçenek olarak değiştirmenize izin verir. Kısacası, gerçekten güvenilemez."HTTP_USER_AGENT" Başlık içeriği Kullanıcı Aracısı: varsa, mevcut istekten. Bu dize, kullanıcının bu sayfayı istediği tarayıcının adını içerir. Tipik bir örnek şu satırdır: Mozilla / 4.5 (X11; U; Linux 2.2.9 i586)... Diğer şeylerin yanı sıra, bu değeri işlevle birlikte kullanabilirsiniz. get_browser() sayfanızın çıktısını kullanıcının tarayıcısının yeteneklerine uyarlamak için"HTTP" İstek HTTPS protokolü üzerinden yapılmışsa boş değildir.

Yorum Yap: ISAPI'yi IIS ile kullanırken değerin şu şekilde olacağını unutmayın: kapalı istek HTTPS protokolü üzerinden yapılmadıysa.

"UZAKTAN_ADDR" Kullanıcının mevcut sayfayı görüntülediği IP adresi."UZAKTAN_HOST" Kullanıcının geçerli sayfayı görüntülediği uzak ana bilgisayar. Ters DNS araması, REMOTE_ADDR değişkeninin değerini temel alır.

Yorum Yap: Web sunucunuz bu değişkeni oluşturacak şekilde yapılandırılmalıdır. Örneğin, Apache'de yönergeye ihtiyacınız var Ana Bilgisayar AdıAramalar Açık httpd.conf dosyasında oluşturulacak bu değişken için. Ayrıca bakınız gethostbyaddr ().

"UZAKTAN_PORT" Web sunucusuyla iletişim kurmak için kullanılan uzak makinedeki bağlantı noktası."UZAK KULLANICI" Doğrulanmış kullanıcı."YÖNLENDİRME_UZAK_KULLANICI" İstek içeriden yönlendirildiyse kimliği doğrulanmış kullanıcı."SCRIPT_FILENAME"

Şu anda yürütülmekte olan komut dosyasının mutlak yolu.

Yorum Yap:

Komut dosyası, file.php veya ../ file.php gibi göreli bir yol kullanılarak komut satırında (CLI) çalıştırılırsa, $ _SERVER ["SCRIPT_FILENAME"] değişkeni, kullanıcı tarafından belirtilen göreli yolu içerecektir.

"SUNUCU_YÖNETİCİSİ" Bu değişken, değerini (Apache için) sunucu yapılandırma dosyasındaki yönergeden alır. Komut dosyası bir sanal ana bilgisayarda çalıştırılıyorsa, bu, o sanal ana bilgisayar için tanımlanan değer olacaktır."SUNUCU PORTU" Web sunucusu tarafından bağlanmak için kullanılan sunucu bilgisayardaki bağlantı noktası. Varsayılan ayarlar için değer " 80 "; örneğin, SLL kullanıldığında bu değer, güvenli HTTP bağlantıları için yapılandırılan değer olacaktır.

Yorum Yap: Apache 2'de fiziksel (gerçek) bağlantı noktasını almak için yüklemeniz gerekir UseCanonicalName = Açık ve UseCanonicalPhysicalPort = Açık aksi takdirde bu değer geçersiz kılınabilir ve gerçek fiziksel bağlantı noktası değerini döndürmeyebilir. Sertleştirilmiş güvenlik gerektiren uygulamalar bağlamında bu değere güvenmek güvenli değildir.

"SUNUCU_İMZA" Etkinleştirilmişse, sunucu tarafından oluşturulan sayfalara eklenecek sunucu sürümünü ve sanal ana bilgisayar adını içeren bir dize."PATH_TRANSLATED" Sunucu herhangi bir sanal-gerçek eşleme yaptıktan sonra, dosya sistemi- (belge kökü değil) tabanlı mevcut komut dosyasına giden yol.

Yorum Yap: PHP 4.3.2'den itibaren PATH_TRANSLATED değişkeni, Apache tarafından kullanılmadığında SCRIPT_FILENAME değişkeni ile aynı değere ayarlandığı Apache sürüm 1 ile karşılaştırıldığında artık Apache 2 SAPI'de örtük olarak ayarlanmamaktadır. Bu değişiklik, PATH_TRANSLATED değişkeninin yalnızca PATH_INFO tanımlandığında mevcut olması gereken CGI belirtimine uymak için yapılmıştır. Apache 2 kullanıcıları yönergeyi kullanabilir KabulPathInfo = Açık PATH_INFO değişkenini ayarlamak için httpd.conf yapılandırma dosyasında.

"SCRIPT_NAME" Geçerli yürütülebilir komut dosyasının yolunu içerir. Bu, kendilerini işaret etmesi gereken sayfalar için kullanışlıdır. __FILE__ sabiti, geçerli (yani dahil edilen) dosyanın tam yolunu ve adını içerir."İSTEK_URI" Bu sayfaya erişmek için geçirilen URI. Örneğin, " /index.html". "PHP_AUTH_DIGEST" HTTP Özeti kimlik doğrulamasını gerçekleştirirken, bu değişkene istemci tarafından gönderilen "Yetkilendirme" başlığı atanır (daha sonra uygun doğrulama için kullanılmalıdır)."PHP_AUTH_USER" HTTP kimlik doğrulaması gerçekleştirildiğinde, bu değişken kullanıcı tarafından sağlanan kullanıcı adına ayarlanır."PHP_AUTH_PW" HTTP kimlik doğrulaması gerçekleştirildiğinde, bu değişken kullanıcı tarafından sağlanan parolaya ayarlanır."AUTH_TYPE" HTTP kimlik doğrulaması gerçekleştirildiğinde, bu değişken kullanılan kimlik doğrulama türüne ayarlanır."YOL_BİLGİ" Komut dosyası adından sonra, ancak varsa sorgu dizesinden önce, kullanıcı tarafından sağlanan herhangi bir yolu içerir. Örneğin, geçerli komut dosyası http://www.example.com/php/path_info.php/some/stuff?foo=bar URL'sinden istenirse, $ _SERVER ["PATH_INFO"] değişkeni şunları içerecektir: / bazı şeyler?>

Bu örnek, bunun gibi bir şeye yol açacaktır.

Az ya da çok ciddi olarak okuyanlar PHP içinde çok kullanışlı bir global dizi olduğunu bilin PHP hangi denir $ _SERVER... Ve bu yüzden bu makalede, bilgileri yeni başlayanlar için bile gerekli olduğundan, bu dizideki en popüler anahtarları ve değerlerini ayrıştırmak istiyorum. PHP programcısı.

devam etmeden önce PHP'de küresel dizi $ _SERVER, hemen küçük bir ipucu yapacağım. Dahili harika bir özellik var PHP denilen phpinfo ()... Hemen kullanımına bir örnek verelim:

phpinfo();
?>

Bu basit betiği çalıştırmanın bir sonucu olarak, çeşitli PHP yorumlayıcı ayarları dahil, sonuna doğru bir değerler tablosu olacak küresel dizi $ _SERVER... Tüm anahtarlar ve karşılık gelen tüm değerler burada listelenecektir. Bu size nasıl yardımcı olabilir? Ve şu veya bu değere ihtiyacınız varsa ve anahtarın adını unutursanız, o zaman işlevi kullanın phpinfo () Adını her zaman hatırlayabilirsiniz. Genel olarak, bu betiği çalıştırırsınız ve beni hemen anlarsınız.

Şimdi en popüler olana geçelim. $ _SERVER dizisinin anahtarları:

  • HTTP_USER_AGENT- bu anahtar, müşterinin özelliklerini bulmanızı sağlar. Çoğu durumda, bu kesinlikle bir tarayıcıdır, ancak her zaman değil. Ve yine, eğer tarayıcı, o zaman hangisiyse, bu değişkende bunu öğrenebilirsiniz.
  • HTTP_REFERER- o dosyanın mutlak yolunu içerir ( PHP betiği, HTML sayfası) bu komut dosyasına geçtik. Kabaca konuşursak, müşterinin nereden geldiği.
  • SERVER_ADDR - IP adresi sunucu.
  • UZAKTAN_ADDR - IP adresi müşteri.
  • DOKÜMAN KAYNAĞI- sitenin kök dizinine giden fiziksel yol. Bu seçenek aracılığıyla ayarlanır yapılandırma dosyası Apache sunucusu.
  • SCRIPT_FILENAME- çağrılan komut dosyasının fiziksel yolu.
  • QUERY_STRING- bir istekle bir dizi elde etmenizi sağlayan çok kullanışlı bir değer ve ardından bu diziyi ayrıştırabilirsiniz.
  • REQUEST_URI- yalnızca isteğin kendisini değil, aynı zamanda kökten çağrılan komut dosyasının göreli yolunu da içeren daha da kullanışlı bir değer. Bu, çoğaltmayı kaldırmak için çok sık kullanılır. index.php, yani, böyle bir şeye sahip olduğumuzda URL'si: "http://mysite.ru/index.php" ve " http://mysite.ru/"bir sayfaya yönlendirin ve URL'ler farklı, bu nedenle, üzerinde kötü bir etkisi olacak çoğaltma Arama motoru optimizasyonu... Ve şimdi yardımla REQUEST_URI tanımlayabiliriz: ile index.php ya da komut dosyası çağrılmadı. Ve ile bir yönlendirme yapabiliriz index.php(eğer o orada olsaydı REQUEST_URI) olmadan index.php... Sonuç olarak, böyle bir istek iletirken: " http://mysite.ru/index.php?id=5", bir yönlendirmemiz olacak URL'si: "http://mysite.ru/?id=5". Yani duplikasyondan çıkararak kurtulduk. URL'si Bugün nasılsın index.php.
  • SCRIPT_NAME- çağrılan komut dosyasına göreli yol.

Belki de bunların hepsi elementtir PHP'de küresel dizi $ _SERVER düzenli olarak kullanılanlar. Bunları bilmeniz ve gerektiğinde kullanabilmeniz gerekir.