Menü
Bedava
giriş
ana  /  Eğitim / PHP oturumlarının depolandığı yer. PHP SCALPEL altındaki oturumlar

PHP oturumlarının depolandığı yer. PHP SCALPEL altındaki oturumlar

İnternette, ihtiyaç duydukları şey için hangi oturumlardan ve onlarla nasıl çalışacağınız binlerce ders bulabilirsiniz. Ancak, ne yazık ki, onları okuduktan sonra birçok soru kalır. Bence, her şeyde çözmenin en kolay yolu, oturumların içeriden nasıl çalıştığını görmek. Şunlar. Tarayıcı ve Web Sunucusu paylaşım günlüklerini inceleyin, yanı sıra, istemci tarafında ve sunucu tarafında hangi verilerin kaydedileceğini görün.

Bundan sonra, birçok an daha net hale gelir ve mekanizmanın kendisi daha şeffaftır.

Oturumlar aşağıdaki standart komut dosyasında incelenecektir:

Aşağıdaki gibi çalışır:

Blok 1. Session_start () özelliği, benzersiz PhsessID oturum tanımlayıcısını kullanarak, yeni bir oturum oluşturur veya eski'yi yükler.

Blok 2. Oturumu geri yüklemeyi başardıysanız, $ _SESSION ["görünümler"] değeri bir tarafından artar. Değilse, bir tarafından başlatılır.

Teoride, pişirme desteği tarayıcıda etkinse, mekanizma çalışmalı ve sayfa güncellenmelidir, sayacın değeri bir tarafından artar.

İlk yükleme komut dosyası

İstek başlıkları

GET / HTTP / 1.1 Host: firingrange.local Kullanıcı Ajan: Mozilla / 5.0 (Windows NT 5.1; RV: 6.0.2) Gecko / 20100101 Firefox / 6.0.2 Kabul Et: Metin / HTML, Uygulama / XHTML + XML, Uygulama / XML; q \u003d 0.9, * / *; Q \u003d 0.8 Kabul-Dil: RU-TR, RU; Q \u003d 0.8, EN-US; Q \u003d 0.5, EN; Q \u003d 0.3 Kabul Kodlama: GZIP, Kupl-Kükrişi Deflat : Windows-1251, UTF-8; q \u003d 0.7, *; Q \u003d 0.7 Bağlantı: Cephe-Alive önbellek kontrolü: max-age \u003d 0

Başlıklar Cevap

Http / 1.1 200 tamam Tarih: Thu, 29 Eyl 2011 20:36:15 GMT Sunucu: Apache / 2.2.13 (Win32) PHP / 5.2.10 X-Powered-by: PHP / 5.2.10 Set-Çerez: PHPSESSID \u003d K33EN6CCGCIA7125MITJ5TE4U6; yol \u003d / Expires: Thu, 19 Kas 1981 08:52:00 GMT Önbellek Kontrolü: Mağaza Yok, Önbellek, Önbellek Olması Gerekenler, Çek Geçici, Çek Sonrası \u003d 0, Ön-Kontrol \u003d 0 PRAGMA: Önbelleksiz içerik uzunluğu: 58 Keep-canlı: zaman aşımı \u003d 5, max \u003d 100 Bağlantı: Kütle-canlı içerik türü: Metin / HTML

Yorum Yap

İlk isteğinde, tarayıcı kendisini hiçbir şekilde tanımlamamıştır, böylece mekanizma oturumlar PHP. Yeni benzersiz bir oturum tanımlayıcısı oluşturuldu ve tarayıcıya bu çok tanımlayıcının depolandığı bir demet oluşturmasını sağladı.

Yan sunucu

Sunucu tarafındaki komut dosyasının bir sonucu olarak, aşağıdaki içeriğin SESS_K33EN6CCGCIA7125MITJ5TCGCCIA7125MITJ5TE4U6 oluşturulur:

Müşteri tarafı

Müşteri tarafında, Oturumun benzersiz tanımlayıcısının değerinin depolandığı, aşçı phpsessId oluşturulur.

Not. İçin pHP ayarları Varsayılan olarak, PHPSESSID'nin ömrü ömrü - tarayıcı kapalıyana kadar. Şunlar. Tarayıcı kapalıymaz, Cook silinir ve oturum buna göre kaybolacaktır. Çerez PHPSESSID'nin ömrü, Session.Cookie_Lifetime'in değerini değiştirerek değiştirilebilir.

Komut dosyasının çalışmasının sonucu

İkinci yükleme komut dosyası

İstek başlıkları

Al / http / 1.1 Host: Ateşingrange.local Kullanıcı Aracısı: Mozilla / 5.0 (Windows NT 5.1; RV: 6.0.2) Gecko / 20100101 Firefox / 6.0.2 Kabul Et: Metin / HTML, Uygulama / XHTML + XML, Uygulama / XML; Q \u003d 0.9, * / *; Q \u003d 0.8 Kabul etme Dili: RU-TR, RU; Q \u003d 0.8, EN-US; Q \u003d 0.5, EN; Q \u003d 0.3 Kabul etme kodlaması: GZIP, Deflate Kabul - Karakterset: Windows-1251, UTF-8; q \u003d 0.7, *; q \u003d 0.7 Bağlantı: Cephe Canlı Çerez: PHPSESSID \u003d K33EN6CCGCIA7125MITJ5TE4U6 Önbellek kontrolü: max-age \u003d 0

Başlıklar Cevap

HTTP / 1.1 200 OK Tarih: THU, 29 Eyl 2011 20:49:41 GMT Sunucusu: Apache / 2.2.13 (Win32) PHP / 5.2.10 X-Powered-by: PHP / 5.2.10 Süresi: Thu, 19 Kasım 1981 08:52:00 GMT Önbellek Kontrolü: Mağaza, NO-CACHE, VERME-Revalidate, Check-Check \u003d 0, Önceden Check \u003d 0 Pragma: Önbellek İçeriği İçerik Uzunluğu: 58 Keep-Canlive: TimeOut \u003d 5, Max \u003d 100 Bağlantı: Cephe Canlı İçerik-Tip: Metin / HTML

Yorum Yap

Tarayıcı, PHP'yi kullanarak PHPSESSID Cook Web Sunucusu, SESS_K33EN6CCGCIA7125MITJ5TE4U6 dosyasındaki değerlerle $ _SESSION dizisini başlatır. Buna göre, 2 blokta ise if (düz) şubesi çalışır.

Yan sunucu

Script işlemi sonucunda SESS_K33EN6CCGCIA7125MITJ5TE4U6 dosyasının içeriği değişiyor:

Müşteri tarafı

Müşteri istemcide değişmez.

Komut dosyasının çalışmasının sonucu

Sıradaki ne?

Tarayıcıyı kapatmadan önce sayfanın müteakip indirmeleri, komut dosyasının ikinci yüklenmesinin nasıl çalıştığı ile analoji tarafından çalışacaktır.

Çünkü Cook'un ömrü, tarayıcının mevcut oturumu ile sınırlıydı, daha sonra kapanmasından sonra, benzersiz oturum tanımlayıcısı kaybolacak ve işlemi yeniden başlatırken yenisine devam edecektir.

Ancak, Kayıtlı Oturum'a, PHSESSID'yi komut dosyası parametresi olarak belirtiyorsanız, kaydedilmiş oturumuna geri dönebilirsiniz:

Oturuma geri dönmek oldukça şartlı, çünkü Bu durumda, komut dosyası işleminin bir sonucu olarak, Cook oluşturulmaz. Sunucu Yanıt Başlıkları:

HTTP / 1.1 200 OK Tarih: Thu, 29 Eyl 2011 21:01:52 GMT Sunucusu: Apache / 2.2.13 (Win32) PHP / 5.2.10 X-Powered-by: PHP / 5.2.10 Süresi Dolgu: Thu, 19 Kasım 1981 08:52:00 GMT Önbellek Kontrolü: Mağaza, NO-CACHE, VERME-Revalidate, Check-Check \u003d 0, Önceden Check \u003d 0 Pragma: Önbellek İçeriği İçerik Uzunluğu: 58 Keep-Canlive: TimeOut \u003d 5, Max \u003d 100 Bağlantı: Cephe Canlı İçerik-Tip: Metin / HTML

Şunlar. İşi sürdürmek için, bu oturumdan, atfedilecek tüm bağlantılara? PHPSESSID \u003d K33EN6CCGCIA7125MITJ5TE4U6.

Not. PHP belirleyebilirsiniz, böylece benzersiz oturum tanımlayıcısının sadece aşçıyla iletilir. Bunu yapmak için, seans.use_only_cookies değerinde 1. Bu durumda, yukarıda gösterilen numara geçmeyecektir.

Çerezler tarayıcıda devre dışı bırakılırsa, oturum kimliğini yukarıda yaptığımız gibi parametreler aracılığıyla iletebilirsiniz. Ayrıca, PHP'de istenen parametreyi bağlantıya ekleyecek ve formda gizli alanlar ekleyecek bir mekanizma var. Operasyon prensibi, çerezlerle olduğu gibi tamamen aynıdır, bu nedenle bu durumu ayrı ayrı sökmeyeceğiz.

Küçük Anket (SSS)

Oturum verileri fiziksel olarak nerede saklanır?

Oturum verileri sunucuda saklanır. Varsayılan olarak, dosyalara kaydedilir, ancak kendi oturum veri depolama mekanizmasını belirleyebilirsiniz (örneğin, bir veritabanı kullanarak). Ayrıntılar istiyorsanız, seeness_set_save_handler özelliğine bakın.

Kim benzersiz bir oturum tanımlayıcısı oluşturur?

Benzersiz bir oturum tanımlayıcısı (PHPSESSID) bir sunucu oluşturur.

Kendi oturum mekanizmasını yazmak mümkün mü?

Evet, bu oldukça mümkün. Gördüğünüz gibi, PHP, süpernatural bir şey kullanmaz - tanımlayıcı, aşçı ile olan istekler arasında kaydedilir, oturum verileri sunucudaki dosyalarda saklanır.

Örneğin, oturumlarla birlikte çalışma mekanizması, popüler çerçeve kaposungununda.

Oturumların mekanizması ne kadar güvenlidir?

Oturum, yalnızca benzersiz bir oturum tanımlayıcısının yardımı ile tanımlanır, bu nedenle genel durumda saldırgan sunucuyu karıştırmak için çalmak için yeterlidir. Yukarıda kullandığımız test komut dosyasını alın. Eğer temyiz başvurusu başka bir IP'den (oluşturduğunuz oturuma göre), ancak phsessID aynı şekilde iletilecektir, ardından oturum başarıyla geri yüklenir ve sayaç önceki kaydedilen değerden artacaktır.

Ek koruma sağlamak, sizin için kendiniz olacak. Örneğin:

  • IP oturumu ve kullanıcı aracısı istemcisinin verilerinde kaydedebilirsiniz (sunucu tarafında saklanır) ve daha sonra her bir kolun, mevcut değerlerin kaydedilen ile çakıştığını doğrulamak için gereklidir. Bu durumda, kullanıcının güvenliği ve rahatlığı arasında bir uzlaşma aramanız gerekir.

    Örneğin, kullanıcının dinamik bir IP'si varsa ve izni sağlamak için oturumu kullanırsanız, ancak aynı zamanda IP'nin navalasyonunu kontrol edin, ardından her adres değişikliğinde, kullanıcı kullanıcı adını ve şifreyi tekrar girmek zorunda kalacaktır.

    Benzer şekilde, kullanıcı aracısı dizesi, tarayıcı sürümünü güncellerken veya bazı eklentileri yüklerken değişebilir.

  • Önerilen oturumdan korunma mekanizmalarından biri, komut dosyası temyiz edildiğinde her bir tanımlayıcıyı yeniden oluşturmaktır (Bkz. Session_Regenere_id işlevi). Komut dosyasını görüntüleyin ve bölümdeki çalışma algoritması aşağıda olabilir.

    Not.Resmi web sitesindeki tartışmaya inanıyorsanız, bir tanımlayıcıyı yeniden oluştururken, verilere paralel erişim ile sorun ortaya çıkabilir.

Bağlamda yeniden üretticinin yeniden üretticisi ile çalışma oturumları

Senaryo


// Blok 1.
session_start ();
eğer.(isset.($ _SESSION ["başlatıldı"]))
session_regenere_id ();
bAŞKA.
$ _SESSION ["başlatıldı"] \u003d doğru.;

// blok 2.
eğer.(isset.($ _SESSION ["görünümler"]))))
$ _SESSION ["görünümler"] ++;
bAŞKA.
$ _SESSION ["görünümler"] \u003d 1;

// blok 3.
eko."
< body>
Görüş sayısı: ". $ _SESSION [" görünümler "]."

" ;

?>

Daha önce bilindiği gibi, HTTP protokolü, Web uygulamalarının "oturumlar" yüklemesini sağlar - istemci ile sunucu arasındaki bir diyalog ve bu diyalogun durumu isteğe bağlı olarak kaydedilir.

Web programlaması için ana dilde olan PHP dili, bu oturumları organize edip saklarken, HTTP oturum mekanizmasını kullanabilme yeteneğini sağlar. Size HTTP oturumlarının mekanizması için çalışmanın gerekli olduğunu hatırlatayım:

  • Sunucu benzersiz bir oturum numarası oluşturmalıdır.
  • Oturum numarası müşteriye (genellikle çerezler aracılığıyla) aktarılmalıdır.
  • Sunucu, oturum verilerini dosyalarda veya veritabanına kaydedebilmelidir, böylece geri yüklenebilirler, böylece müşterinin sunucuyu sonraki talepler sırasında (ayrıca çerezler tarafından) gönderdiği oturum numarasını bilerek.

Aslında, PHP programında alınması gereken tek eylem, böylece oturumların mekanizması bükülmüş dişlilerin tek bir işlevi aramak için: Session_Start (). Bu özellik gerekli tüm eylemleri yapar:

  • Müşterinin zaten mevcut oturumun numarasını çerezde veya istek parametrelerinde gönderip göndermediğini kontrol eder. İstemci oturum numarasını gönderirse, bu oturumun verileri sabit depolamanın (örneğin, dosyayı) belleğe (örneğin, dosyanın) konumundan yüklenir ve program bir dizi $ _SESSION için kullanılabilir hale gelir. Müşteri oturum numarası göndermediyse veya böyle bir oturum sunucuda mevcut değilse - yeni bir oturum yeni bir numarayla oluşturulur ve verileri, yeni bir oturum durumunda bir $ _SESSESSES dizisi aracılığıyla da mevcuttur. boş olacak. Yeni oluşturulan oturumun sayısı Set-Cookie Sunucu Yanıt Başlığına yerleştirilir.
  • Tasarruf oturum verilerini sağlar. PHP programı talebi işledikten sonra, Şu anki durum $ _SESSESSION dizisi, bir sonraki müşteri isteğinde bir kez daha sabit depolamanın bulunduğu yerde saklanır.

Şimdi, Session_Start () için gizlenen detayları bilmek, bu mekanizma ile oynayabiliriz. Aşağıdaki örnek, her müşteri isteğinde biriyle artan oturumda bir numarayı saklar:

Bu sayfaya ilk girdiğinizde, sunucu oturum numarası ile bir demet tarayıcı gönderir:

Kurabiye.: PSYSSID \u003d 4FTVCA7JMMNM04Q95R3SDSK6R6; yol \u003d /

Ve aynı oturum numarası tarayıcısı, sonraki bir talepte sunucuya geri gönderilecektir. Şimdi, tarayıcıda çerezleri temizlerseniz, sunucuda yeni bir oturum oluşturulur ve test betiğimizdeki hesap tekrar başlayacaktır.

Daha Gerçek Bir Örnek: Kullanıcı Girişi

Kullanıcı girişi kullanıldığında çoğu zaman oturumlar kullanılır. Siteye girerken, kullanıcı sunucuyu kontrol eden giriş ve şifreyi girer. Giriş doğruysa, sunucu oturumdaki kullanıcı verilerini hatırlamalıdır, bu yüzden şifreyle daha fazla giriş yapmamak için. En basit durumda, bu örnek şudur:

Dizi ("şifre" \u003d\u003e "123", "başlık" \u003d\u003e "admin", "," user "\u003d\u003e dizi (" şifre "\u003d\u003e" qwe "," başlık "\u003d\u003e" Kullanıcı ",),) ; İade Isset ($ Kullanıcı [$ Oturum Aç])? $ Kullanıcılar [$ giriş]: null; ) Fonksiyon getcurrentuser () ($ user \u003d issas ($ _ seansı ["kullanıcı"])? $ _SESSION ["kullanıcı"]: null; return $ kullanıcı;) fonksiyon setcurrentUser ($ user) ($ _Session ["kullanıcı"] \u003d $ kullanıcı;)?\u003e

Merhaba,!
Link1 referansı2.

Dışarı çıkmak Siteyi ziyaret etmediniz. Giriş ve şifreyi girin:
Oturum aç: Parola:

Bu program bir giriş ve şifre ister ve giriş ile giriş yapabilirsiniz. kullanıcı., qwe. veya yönetici., 123 . İşbirliği yapan kullanıcı bir selamlama gösterir. Mesaj, kullanıcı adı veya şifre yanlışsa mesajı görüntüler.

Bu "siteye" gitmek mümkün olduğunda, oturum açan bir kullanıcı kalırken, bağlantılardan (Link1, Reference2) ile örtebilirsiniz.

Oturumlarda hangi veriler saklanabilir?

Tarafından varsayılan PHP. Oturum verilerini geçici bir dosyada metin olarak saklar. Bunda, geçici olan dizine bakacağınızdan emin olabilirsiniz. pHP dosyaları. Bu dizin, ortamdaki PHPINFO () 'de belirtilmiştir. Bu dizinde spec_ dosyalarını bulacaksınız 4ftvca7JMMNM04Q95R3SDSK6R64ftvca7jmmnm04q95r3sdsk6r6, çereze gönderilen bir oturum numarasıdır. Bu dosyaya bir göz atın: Yukarıdaki ilk örneği başlattıysanız, dosya yaklaşık olarak içeriğe göre tespit edilir: "Değer | I: 2;". Bu metin, oturumun içeriğinin, yalnızca bir değişkenin sayı ile depolandığı serileştirilmiş bir sunumdur.

PHP programının bir oturumda bir oturumda, oturumu kaydederken, bir metin türüne dönüştürülürken ve ardından dosyaya kaydedilecek tüm değerler. Metindeki değişkenleri dönüştürme işlemi "Serileştirme" denir. Böylece, oturumda, PHP'nin seri hale getirebileceği herhangi bir veri yerleştirilebilir.

Neyse ki, PHP'de sadece seri hale getirme basit değerler Sayılar ve çizgiler gibi görünüyor, aynı zamanda diziler ve nesneler gibi karmaşık yapılar:

"; Print_r ($ _ seans); echo""$ _SESSION [" TestArray "] \u003d dizi (1, 2, 3," bir "," iki "," üç "," çocuk "\u003d\u003e dizisi (5, 6, 7),); $ obj \u003d yeni stdclass (); $ Obj-\u003e x \u003d 1234; $ obj-\u003e y \u003d 4567; $ _SESSION ["TestObject"] \u003d $ obj;

Bu örnek, bu verileri oturum dosyasına kaydeder:

TestArray | A: 7: (I: 0; I: 1; I: 1; I: 2; I: 2; I: 3; I: 3; S: 3: "Bir"; I: 4; S: 3 : "İki"; I: 5; S: 5: "Üç"; S: 5: "Çocuk"; A: 3: (I: 0; I: 5; I: 1; I: 6; I: 2; I: 7;)) TestObject | O: 8: "StdClass": 2: (S: 1: "x"; I: 1234; S: 1: "Y"; I: 4567;)

Oturumdaki nesnelerin depolanması

Oturumda, gördüğünüz gibi, nesneleri saklayabilirsiniz. Ancak aynı zamanda, "ev yapımı" sınıflarınıza veya sınıflarınızın örnek nesnelerine başvuran oturum nesnelerinde tutulması, bu sınıfların reklamlarının session_start () kadar yapılması gerektiğidir. ) aramak. Yani, PHP, oturum verilerinin çözülürken söz konusu olduğundan önce sınıfı bilmelidir.

Nesneler kaydedildiğinde, nesnenin standart serileştirilmesinin bir nedenden dolayı kabul edilemez veya mümkün olmadığı durumlar vardır. Bu gibi durumlarda, "sihir" yöntemlerini __sleep () ve __Wakeup () sınıfında "sihir" yöntemlerini bildirerek seri hale getirmeyi elle uygulamak mümkündür.

Bu arada, Seri hale getirme uygulamak ve "manuel olarak" mümkündür ve oturum verilerini kaydetmek / indirmek gerekli değildir. Uygulamadaki bazı veriler daha sonra kullanılmak üzere kaydedilmesi veya ağ üzerinden transfer edildiğinde gerekli olabilir. Serileştirme / Deirialization - Serialize (), Sıralaştırılaması (), JSON_ENCODE (), JSON_DECODE (), JSON_DECODE ().

Oturumda ne saklanamaz?

Oturumda seri hale getirmek imkansız olanı saklamak imkansızdır. Böyle bir kuruluşun bir örneği herhangi bir PHP kaynağına hizmet edebilir. Kaynaklar, ağ bağlantıları, dosya tanımlayıcılarını, veritabanı bağlantıları ve diğer bazı nesnelerdir. PHP kaynağı, doğrudan programdan bulunmayan, ancak çalışabileceğiniz, çeşitli PHP işlevlerine neden olan PHP'nin derinliklerinde dahili nesneye bir referanstır. İçeriğin içerdiği ve seri hale getirilmemesi gereken bir tür "kara kutu".

Ek özellikler

PHP, örneğin veritabanında, kendi oturum veri depolama yönteminizi uygulamak için bir geliştirici sağlar. Bunu yapmak için, oturum verilerini sürekli depolama konumundan kaydettirecek ve indirecek işlevleri uygulamanız gerekir. Ardından, fonksiyonu arayarak bu özellikler PHP'de devreye girmelidir. session_set_save_handler.

Son derece yüklü sitelerde oturum verilerini kaydetme ve indirme sürecini hızlandırmak için, MEMCACACHED sunucusu, verileri hafızaya kaydeder. Bu oturumun desteği depolama yöntemi PHP'ye yerleştirilmiştir ve PHP.INI yapılandırma dosyası aracılığıyla yapılandırılmıştır.

Oturum numarasının adını, ömrünü, etki alanını ve diğer parametrelerin olduğunu gösteren, oturum numarasının geçildiği çerez parametresinin adını ayarlayabilirsiniz.

PHP'de HTTP oturumlarını oluşturmak için bu ve diğer birçok seçenek, Session_ * işlevleriyle kullanılabilir.

PHP'deki oturumlar veya siteye gelen veya alıcıya gelen kullanıcılarla ilgili veriler, site sayfaları arasında çok fazla zorluk çekmeden kaydedilir. Ders çok önemlidir. Sitelerin% 95'ini oluşturmak için alakalı.

PHP'de bir oturum nedir

Oturumlar, bir sitenin sayfaları arasında geçerken geçici veri bilgilerini (örneğin, kullanıcının siteye girmiş) depolamak için kullanılır. Oturumları kullanırken, veriler sunucudaki geçici dosyalarda saklanır.
En sık, oturumlar (ve çerezler de, TOO de) çevrimiçi mağazalar, forumlar, bülten panoları, sosyal ağlar, bloglar ve diğer kaynaklar oluştururken kullanın. Oturum sisteminin rahatlığı, kapalı kullanıcı / alıcının geçici bilgilerini, belirli bir zamanın hızlı erişiminde olanların geçici bilgilerini tutmaktır. Oturumun doğal bir raf ömrüne sahiptir - tarayıcı kapalıyana kadar. Yalnızca sayfayı kapatırsanız, siteyi açarken, kullanıcı / müşteri verileri hala mevcut olacaktır.

Oturumun mantığı

Oturum (veya oturum) bir tür geçici veri depolama alanıdır. Hemen sizi uyarın, az miktarda veri değerindedir. Örneğin, kullanıcı kullanıcısının giriş ve şifresini veritabanında veya seri numarasını kullanın.

İş örneği
1. Kullanıcı giriş ve şifreye girer ve siteye gelir.
2. Giriş ve şifre olan veriler sitenin sayfalarından birinin oturumuna kaydedilir:

Dosya index.php.

Session_start (); // Bu oturumları kullanmak istediğiniz her dosya kodun başında "Başlat oturumu" komutunu içermelidir.

$ login \u003d "admin";
$ şifre \u003d "geçiş";
$ _SESSION ["login"] \u003d $ giriş; // Giriş içeren değişkeni kaydedin
$ _SESSION ["şifre"] \u003d $ şifre; // Şifreyi içeren değişkeni kaydedin

3. Sitenin başka bir sayfasına gittiğinizde, bu veriler de mevcut olacaktır:

Dosya example.php. (veya başka bir sayfa)

Echo "Oturum açma". $ _ Oturumu ["Giriş"]; // "Giriş Yönetici'niz" çıkacak, ancak bu sayfada veri yazmadık!
Bak, her şey basit!

4. Oturum verilerini silmek istiyorsanız, o zaman yeterli:

Dosya example.php.

Session_start (); // oturumu tekrar tekrar çalıştırın

Unsem ($ _ seansı ["giriş"]); // bu yüzden değişkeni yeniden düzenlediler veya "yok edildi"
Echo "Oturum açma". $ _ Oturumu ["Giriş"]; // "Giriş bilgileriniz" çıkartın. Son satırda imha ettiğimizden beri, veri yok.

Session_destroy (); // oturumu yok et. $ _SESSION ["şifre" de dahil olmak üzere tüm veriler artık değil. Sorgulandıklarında bir hata gösteriliyor
Genel olarak, bu iletim posta yöntemine benzer, ancak yalnızca artık fazla kod yazmamalısınız, ancak sayfadan sayfaya iletilen tüm veriler sunucudaki geçici dosyalarda depolanır. Seansları tekrarlarım az miktarda veri içermelidir, bu nedenle giriş / şifrenin, alıcının sepetini ve diğer küçük hacimlerin depolanması için uygundurlar.

PHP oturumu kullanarak değerleri veya diziyi aktarın

Oturumda, yalnızca dizeyi değil, aynı zamanda bir dizi veri dizisini kaydedebilirsiniz. Sadece dizinin hacmiyle abartmayın, çünkü tüm bunlar, sunucudaki oruç ve işgal altındaki alanını etkileyecektir.

Tekrar bazı başlangıç \u200b\u200bsayfası kullanıyoruz index.php.

Session_start ();

$ r \u003d dizi ("bir", "iki", "üç");

$ _SESSION ["arr"] \u003d $ r;

Her şeyin gösterileceği sayfada
Verileri oturumlarda kaydedin ve tüm verilerin tüm verilerin çıkacak olan başka bir sayfaya bağlanın.

Dosya alıcısı, sayfa test.php. Bir diziyi nerede açacağız

Session_start ();
Print_r ($ _ oturumu ["arr"]);
// Kaldırmak
/*
Dizi.
\u003d\u003e Bir tane.
\u003d\u003e İki.
\u003d\u003e Üç.
*/
?>
Dersi bellekte yenilemek isteyebilirsiniz. Genel olarak, her şey açık olmalıdır.

Oturumlarla çalışmak için diğer özellikler

session_unregister (Dize) - Oturum, belirli bir küresel değişkenin değerini unutur;
session_destroy () - Oturum yok edilir (örneğin, kullanıcı, çıkış düğmesine basarak sistemden ayrılırsa);
session_set_cookie_params (int ömür boyu [, string yolu [, dize alanı]]) - Bu özellikle, oturumun ne kadar süreceğini, oturumun ölüm süresini belirleyen Unix_Timestamp'ı ayarlayabilir.

PHP'de oturumlarla (oturum) çalışma özelliklerinin listesi
Session_Cache_expire - Geçerli önbellek eyleminin sonunu döndürür
Session_Cache_Limiter - Cashel Cashet Sınırlayıcısını alır ve / veya setler
Session_Commit - Alias \u200b\u200bsece_write_close ()
Session_deCode - Oturum verilerini satırdan çözer
Session_destroy - oturum için kayıtlı tüm verileri yok eder
Session_encode - Geçerli oturumun verilerini bir dize olarak şifreler
Session_get_cookie_params - Cook Ayarları Oturumu Getir
Session_ID - mevcut oturum kimliğini alır ve / veya ayarlar
Session_IS_Registered - Değişkenin oturumda kayıtlı olup olmadığını belirler.
Session_Module_Name - Geçerli oturum modülünü alır ve / veya ayarlar
Session_Name - mevcut oturumun adını alır ve / veya ayarlar
session_regenere_id - Yakın zamanda oluşturulan geçerli oturum tanımlayıcısını değiştirir.
Session_Register - Mevcut oturum için bir veya daha fazla değişkeni kaydeder.
session_save_path - mevcut oturumu kaydetme yolunu alır ve / veya ayarlar
Session_Set_Cookie_Params - Aşçı oturumunun parametrelerini ayarlar
Session_SET_SAVE_HANDLER - Kullanıcı seviyesi oturumunun depolama özelliklerini ayarlar
Session_Start - Oturum verilerini başlatır
Session_Unregister - Mevcut oturumdan bir değişkeni kabul eder
Session_unset - Tüm Değişkenler Oturumunu Freed
Session_write_close - Oturum verilerini ve son oturumunu yazıyor

Oturum örnekleri

Oturum sırasında sayfa görünümü sayacı. Vite örneği. Ancak, tarayıcıyı kapattıktan sonra geri sayım tekrar başlayacaktır.

Bazı sayfa bir oturumun parçası olarak metreyi ziyaret eder.

// kurabiye olmadan oturumları kullanma basit bir örneği.
session_name ("Test");
session_start ();
$ _SESSION ["COUNT"] \u003d @ $ _ Oturum ["Sayım"] + 1;
?>

Sayaç


Tarayıcı ile geçerli çalışma oturumunda bu sayfayı açtınız.
Birkez).
Bu sayaç sıfırlamak için tarayıcıyı kapatın.
Sayfayı güncellemek için buraya tıklayın!
Her geçişte, sayaç 1 tarafından artacaktır)

Dikkatiniz için teşekkürler! Çabalarda iyi şanslar!

PHP'deki oturumlar, müşterinin bilgisayar bilgileri sunucu tarafında tasarruf için bir mekanizmadır. Aslında, PHP'deki oturum böyle zor bir konu değildir, ancak anlayışı için PHP'de çalışma kurabiyelerinin ilkesini bilmeniz gerekir. Öyleyse, çerezin PHP'de nasıl çalıştığını bilmiyorsanız, önce uygun makaleyi okudunuz ve sonra buraya dönün.

İngilizce'den gelen kelime oturumu oturum olarak çevrilir, bu nedenle PHP'deki oturumların anlamı daha anlaşılır hale gelir, ancak "oturum" terimi ve bu makalede kullanacağız.

PHP'deki oturumlar çerezime çok benzer, aynı çiftler anahtar \u003d\u003e değeridir, yalnızca sunucu tarafında saklanır.

Session_start ()

Başlatmamız gereken oturum, bunun için bir session_start () işlevi var. Bu özellik bir oturum başlatır veya arayabileceğiniz bir oturum.

Session_start () işlevi, sayfanın başlangıcında aramak için arzu edilir, ancak örneklerimde bunu yapmıyorum.

Array $ _SESSION.

Oturumlar, sunucuda depolanan değişken gruplarıdır, ancak benzersiz bir ziyaretçiye aittir. Tekrar ediyorum, bu anahtar nokta: sunumlar sunucuda saklanır.

Her ziyaretçinin verilerinin oturumundan etkileşimini sağlamak için kullanılır Çerez dosyası., PHP'nin kendisine verdiği yaratılışı, bu konuda endişelenmenize gerek yok. Bu çerez sadece sunucu için önemlidir ve kullanıcı verilerini elde etmek için kullanılamaz.

Sunucuda, oturum verileri depolanır metin dosyası PHP programında $ _SESSESSESION dizisindeki mevcuttur. Oturumdaki değişkeni korumak için, bu dizide bir değer atamanız gerekir.

Sonunda örnekleri kullanmaya başlayalım. Her şey çok basit.

PHP'deki oturumlar. değer. ";?\u003e

Şimdi bir dizi $ _SESSESES'den başka bir örnekte değer almaya çalışalım.

PHP'deki oturumlar.

Not, ikinci örnekte ise, Session_Start () işlevini sileriz, o zaman $ _SESSESSESION dizi verilerine erişemeyiz.

OTURUM KİMLİĞİ ()

Oturum oluşturulduktan sonra, Session_ID () işlevini kullanarak benzersiz oturum tanımlayıcısına otomatik olarak erişirsiniz. Bu özellik, oturum tanımlayıcısının değerini belirtmenize ve almanızı sağlar.

PHP'deki oturumlar.

Tarayıcı geliştiricileriniz için araç çubuğuna bakabilirsiniz (bunu yapacak Chrome'da, Ctrl + Shift + I tuşlarına, ardından kaynaklar, ardından bir çerez bulur), bu etki alanı, çerez tarayıcınızı PHSessID adıyla ve yaklaşık olarak böyle bir değerle yerleştirin: "7G5DF9RKD1HHVR33LQ1K6C72P7".

Tarayıcınızı tanımlayacak ve daha önce yazıldığı gibi, tarayıcınızı tanımlayacak ve betiğin $ _SESSESSE dizisi aracılığıyla kullanılacak olan karşılık gelen değişkenleriyle çalışacak olan phpseSID değerine göredir.

Session_name () işlevi

Session_ID () işlevleri oturum tanımlayıcı değerini almanıza izin verirse, Session_Name () işlevi oturum adını bulmanızı sağlar.

PHP'deki oturumlar.

Session_start () işlevi hakkında bir kez daha

Şimdi, PHP'deki oturumların prozhanizmi hakkında daha fazla bilgi ediniriz ve Session_Start () işlevine tekrar geri dönmeniz gerekir. Bu özellik, geçerli kullanıcı için oturum mekanizmasını başlatır. Tam olarak bunun nasıl olacağı:

  • Kullanıcı siteyi ilk kez başlattıysa, Seence_Start () çerezi istemciden ayarlar ve kullanıcı kimliğiyle ilişkili sunucuda geçici bir depolama oluşturur.
  • İletilen akım tanımlayıcısıyla ilişkili depoyu belirtir.
  • Sunucudaki depoda veri varsa, bir $ _SESSESSION dizisine yerleştirilirler.
  • PHP.INI Dosyasından register_globals ise, $ _SESSESSESS dizisinin tüm öğeleri küresel değişkenlere dönüştürülür.

Oturumu kullanma örneği

Şimdi, oturumlarla küçük deneylere izin verecek bir örneğe bakacağız.

PHP'deki oturumlar.

Sayaç

Geçerli oturumda sayfayı açtınız zaman.

"\u003e Bu sekmeyi bir örnek açın.

Tüm oturumların çalışmaları bir dizi $ _Session'a dayanır, bu örnekte açıkça görülür.

Tarayıcı penceresini kapatırsanız, oturum durur, sayaçımız sıfırlanır. PHP'deki oturumların bu davranışı değiştirilebilir, bu konuya makalede biraz daha geri döneceğiz.

Oturumun Tamamlanması

Oturumu tamamlamak için ihtiyacımız var:

  1. $ _SESSESSION dizisini temizleyin.
  2. Sunucudaki geçici depolamayı silin.
  3. Oturum çerezini silin.

Clear Massive $ _SESSION, Session_Unset () işlevini kullanabilir.

Session_Destroy () özelliği, sunucudaki geçici depoyu siler. Bu arada, o başka bir şey yapmaz.

PHP'de çerezle bir stüdyoda okuduğumuz Setcookie () işlevini kullanarak bir oturum çerezini silmeniz gerekir.

Oturumun tamamlanması örneği:

Oturumun Tamamlanması

Oturum tamamlandı.

Şimdi bir deney yapabilirsiniz: bir örneğe sahip bir örneği bir pencerede çalıştırın, sayacı rüzgarlayın ve ardından oturumun silinmesi ve sayfayı sayaçla yenileyin.

Çerezler dosyasını çıkarın, böyle yapılabilir:

setcookie (Session_Name (), "", Saat () - 60 * 60 * 24 * 32, "/")

Session_Name () ve Session_ID () işlevleri hakkında bir kez daha

Session_Name () ve Session_ID () işlevleri pratikte nadirdir, ancak makalenin PHP'deki oturumların çalışma mekanizması ile ortaya çıkması gerektiği için onlar hakkında yazıyorum.

Bu işlevleri kullanarak kendi adlarınızı ve oturumların tanımlayıcılarınızı belirleyebilirsiniz, ancak bunu yapmanız önerilmez. Onları ayarlamak istiyorsanız, aşağıdaki örnekte olduğu gibi, Session_Start () işlevinden önce bu işlevleri yazın:

PHP'deki oturumlar.

Bu örneği kullanırken, tüm kullanıcılar aynı oturum tanımlayıcısına atanır.

Session_Name () işlevi (burada bağlantı) farklı tarayıcılardaki (örneğin, Chrome ve Internet Explorer'da) bölümünden bir örnek başlatırsanız daha fazla ayrıntı durduracağız (örneğin, Chrome ve Internet Explorer'da), daha sonra her tarayıcıya kendi benzersiz oturumuna sahip olacaktır. tanımlayıcı. Tarayıcılar her biri klasörlerinde çerezleri saklayın, böylece session_start () işlevi, her tarayıcıyı kendi, benzersiz tanımlayıcınızı oluşturacak ve buna göre, her bir tarayıcı için sunucuda benzersiz bir depolama oluşturulacaktır. Bu nedenle, her tarayıcıda bir metre (bu) bir örnek birbirinden bağımsız olarak çalışacaktır.

Tüm kullanıcılar için aynı oturum tanımlayıcısını belirtirseniz, sunucuda bir depo ile çalışacaktır. İşte farklı tarayıcılardan ziyaretleri göz önünde bulunduracak bir sayaç örneği:

100) (session_unset (); session_destroy ();)?\u003e PHP'deki oturumlar.

Sayaç Numarası 2.

Sayfayı farklı tarayıcılarda açtı zaman.

"\u003e Bu sekmeyi bir örnek açın.

Bu örneği çalıştırırsanız, orada bir birim göreceğiniz bir gerçek değildir. Diğer ziyaretçiler, sunucudaki oturum deposundaki değerleri zaten değiştirebilir. Bu durumda, sunucu depoyu siler - bilmiyorum, bu yüzden sayaç aşıldığında, 100 değeri oturumu tamamlar.

Bekleme süresini ayarlama

Varsayılan olarak, ziyaretçi tarayıcı penceresini kapatıncaya kadar "hayatlar" oturumu. Bu, Session_Start () işlevinin müşteriden böyle bir çerezle yattığı gerçeğinden kaynaklanmaktadır.

Oturumun ömrü, oturum_set_cookie_params () işlevi kullanılarak değiştirilebilir, burada sözdizimi.

session_set_cookie_params (int ömür boyu [, string yolu [, dize alanı [, bool Secure]]]))

Uygulamada, yalnızca birinci parametreyi (ömür boyu) kullanmak yeterlidir, saat cinsinden saati yazın; bu, tarayıcı kapalıydıktan sonra kaç sunucunun durumunu hatırlamalıdır.

Session_set_cookie_params () işlevi yalnızca komut dosyası süresi için uygulanır.

İşte bu özelliği kullanmanın bir örneği:

PHP'deki oturumlar.

Sayaç numarası 3.

Sayaç değeri:.

"\u003e Bu sekmeyi açın.

Saylığı vidalayın ve tarayıcıyı kapatın, tekrar 30 Sukund'dan sonra bu örneği açın. Oturumunuz devam edecek.