PHP'ye kayıt yazın. PHP ve MySQL için basit bir kullanıcı kayıt sistemi oluşturma
Saha ziyaretçilerini sitedeki bazı gruplara bölmek için küçük bir sistem kurduğunuzdan emin olun. pHP ile kayıt.. Böylece, geleneksel olarak ziyaretçileri sadece rastgele ziyaretçi grubuna ayrılırsınız ve daha değerli bilgi veren daha ayrıcalıklı bir kullanıcı grubuna ayrılırsınız.
Çoğu durumda, PHP'de bir dosyada yazılan daha basitleştirilmiş bir kayıt sistemi kullanın. kayıt.php..
Öyleyse, biraz dikkatini dağıttık ve şimdi kayıt dosyasını daha ayrıntılı olarak düşünün.
Dosya kaydı.php.
Sizin için zamanın kütlesini almadığınız için, kullanıcıları toplayacak bir sistem oluşturun, onlardan minimum iletişim bilgilerini alarak. Bu durumda, herkes MySQL veritabanına gönderilecektir. En yüksek taban hızı için, MyISAM formatında ve UTF-8 kodlamasında bir kullanıcı tablosu oluşturacağız.
Not! Tüm komut dosyalarını bir kodlamada yazmanız gerekir. Tüm site dosyaları ve MySQL veritabanı tek bir kodlamada olmalıdır. En yaygın UTF-8 ve Windows-1251 kodlamaları.
Bir kodlamada her şeyi yazmak için gerekenler için bir şekilde konuşacağız. Bu arada, bu bilgiyi, fransif kurallar oluşturan, aksi takdirde, komut dosyalarının çalışmasıyla ilgili sorunlar olacaktır. Tabii ki korkunç bir şey yok, ancak komut dosyasında hataları bulmak için zamanın kilounu kaybetmek.
Komut dosyasının kendisi nasıl çalışır?
Her şeyi basitleştirmek ve hızlı bir sonuç almak istiyoruz. Bu nedenle, yalnızca Oturum açma, e-posta ve şifresini kullanıcılardan alacağız. Ve spam robotlarına karşı korumak için küçük bir captcha kurun. Aksi takdirde, Londra'dan herhangi bir çocuk, tüm üssü kireç kullanıcıları ile birkaç dakika içinde dolduracak küçük bir robot ayrıştırıcı yazacak ve dahisinde ve cezasızlığında sevinir.
İşte komut dosyası kendisi. Her şey bir dosyada yazılır. kayıt.php.:
!
`; // kırmızı soru işareti $ sha \u003d $ sh. "Scripts / Pro /"; // ana klasöre giden yolu $ BG \u003d `bgcolor \u003d" # e1ffeb "`; // arka plan renk çizgileri?\u003e Kayıt komut dosyası örneği Registry.php style.cssssssssssssssss
Bu durumda, komut dosyası kendime hitap ediyor. Ve kaydedilen verilerin bir formu ve işleyicisidir. Dosyanın zip arşivi tarafından sıkıştırıldığına dikkatinizi çekiyorum ve Config.php, kullanıcı veritabanı dökümü dosyasını, yardımcı fonksiyonlar fonksiyonlarını içeren dosyayı, stil dosyası stili.css ve register.php dosyasını içeren dosyayı içeren konfigürasyon dosyasını içerir. kendisi. Ayrıca, çalışmalardan ve kapatma karakterlerinden sorumlu olan birkaç dosya.
REG.RU: Etki Alanları ve Hosting
Rusya'daki en büyük kaydedici ve barındırma sağlayıcısı.
Bakım için 2 milyondan fazla alan adı.
Promosyon, bir etki alanı, iş çözümleri için posta.
Dünya çapında 700 bin'den fazla müşteri seçimi yaptılar.
* Kaydırmayı askıya almak için fare.
İleri geri
PHP ve MySQL için basit bir kullanıcı kayıt sistemi oluşturma
Bir kayıt sistemi oluşturmak büyük bir iştir. E-posta adreslerini yürüten bir kod yazmanız gerekir, posta onayı için bir mesaj gönderir ve ayrıca kalan form alanlarının doğrulanmasını ve daha fazlasını gerçekleştirir.
Bütün bunları yazdıktan sonra bile, kullanıcılar isteksizce kayıt yaptıracak, çünkü Bu, kendi taraflarında bazı çabalar gerektirir.
Bu derste, genel olarak şifreleri saklamayan ve saklamayan çok basit bir kayıt sistemi yaratacağız! Sonuç, mevcut bir PHP sitesine değiştirmek ve eklemek kolay olacaktır. Nasıl çalıştığını bulmak ister misin? Alttarafı oku.
Süper basit sistemimizin nasıl çalışacağını işte:
Yetkilendirme ve kayıt biçimini birleştiriyoruz. Bu formda bir e-posta adresi ve bir kayıt düğmesini girmek için bir alan olacaktır; - E-posta adresi alanını doldururken, Kayıt düğmesine tıklayarak yeni bir kullanıcı oluşturulur, ancak yalnızca girilen e-posta adresi veritabanında bulunmazsa oluşturulur.
Bundan sonra, kullanıcı tarafından belirtilen kullanıcının 10 dakika içinde alakalı olacak şekilde belirtilen kullanıcıya gönderilen belirli bir rastgele benzersiz karakter (belirteç) oluşturulur; - Bağlantıya göre, kullanıcı sitemize gider. Sistem bir belirteç varlığını belirler ve kullanıcıyı yetkilendirir;
Bu yaklaşımın avantajları:
Şifreleri saklamanız ve alan doğrulamasını yapmanız gerekmez; - Şifreyi, gizli soruları vb. Geri yüklemeye gerek yok; - Kullanıcının kayıtlı / yetkilendirdiği andan itibaren, bu kullanıcının erişim alanınızda olacağından (e-posta adresi doğru) olduğundan her zaman emin olabilirsiniz; - İnanılmaz derecede basit kayıt işlemi;
Dezavantajları:
Kullanıcı Hesabı Güvenliği. Birinin postaya erişimi varsa, giriş yapabilir. - E-posta korunmaz ve ele geçirilebilir. Bu sorunun ilgili olup olmadığını ve şifrenin unutulduğunda ve geri yüklendiğinde veya veri aktarımı için HTTPS kullanmayan herhangi bir yetkilendirme sisteminde (giriş / şifre) kullanmasının durumunda aklınızda bulundurun; - Bir posta sunucusuna nasıl ihtiyacınız olduğunu yapılandırırken, yetkilendirme bağlantılarına sahip mesajların spam içinde olacağı bir şans var;
Sistemimizin avantaj ve dezavantajlarının karşılaştırılması, sistemin yüksek yasaklığı (son kullanıcı için en uygun) olduğu ve aynı zamanda düşük bir güvenlik göstergesine sahip olduğu söylenebilir.
Bu nedenle, önemli bilgilerle çalışmayan forumlar ve hizmetler için kayıtlar için sunulur.
Bu Sistem Nasıl Kullanılır
Sitenizdeki kullanıcıları yetkilendirmek için sistemi kullanmanız gerektiğinde ve bu dersi kemikler üzerinde sökmek istemeniz durumunda, yapmanız gereken şey budur:
Dersine ekli kaynakları indirmeniz gerekir. - Arşivdeki dosyayı bulun tables.sql. PHPMYADMIN'deki İçe Aktar seçeneğini kullanarak veritabanınıza alın. Alternatif bir yol: Bu dosyayı bir metin düzenleyiciden açın, SQL sorgusunu kopyalayın ve çalıştırın; - açık / Main.php içerir. ve iletişim ayarlarını veritabanınızla doldurun (tabanla ve tabanın ana bilgisayarı ve adıyla iletişim kurmak için bir kullanıcı ve şifre belirleyin). Aynı dosyada, sistem tarafından gönderilen mesajlar için orijinal adres olarak kullanılacak e-posta belirtmeniz gerekir. Bazı ana bilgisayarlar, ana bilgisayar kontrol panelinden oluşturulan bu e-posta adresini belirtmezken giden postaları engellerken, bu nedenle gerçek adresi belirtin; - Tüm dosyaları yükleyin index.php., korumalı.php. Ve varlıklar ve ev sahibinizde FTP üzerinden klasörler içerir; - Yetkilendirme formunu görüntülemek için gereken her PHP sayfasına kodu ekleyin;
Request_once "içerir / main.php"; $ User \u003d yeni kullanıcı (); if (! $ user- & gtloggedin ()) (yönlendirme ("index.php");) - Hazır!
İlgilenenler için, hepsi nasıl çalışır - aşağıda okumak için ileri!
İlk adım, yetkilendirme formunun HTM kodunu yazmaktır. Bu kod dosyada bulunur. index.php.. Bu dosya ayrıca, form verilerini ve yetkilendirme sisteminin diğer faydalı işlevlerini içeren bir PHP kodu içerir. PHP kod incelemesine adanmış aşağıdaki bölümde daha fazla bilgi edinebilirsiniz.
index.php.
Eğitim: PHP ve MySQL ile Süper Basit Kayıt Sistemi
Baş bölümünde (Etiketler arasında)
ve) Ana stilleri bağladım (bu derste anlamıyorlar, böylece onları kendiniz görebilirsiniz. Varlıklar / CSS / Style.css klasörü). Kapanış etiketine
JQuery Kütüphanesini ve yazacağımız ve hemen aşağıda merak edeceğimiz Script.js dosyasını bağladım.
Javascript.
jQuery, işlevi kullanan "Kayıt / Yetkili" düğmesinin durumunu izler e.preventDefault () Ve Ajax isteklerini gönderir. Sunucu yanıtına bağlı olarak, bunu veya bu mesajı görüntüler ve daha fazla eylemi belirler /
AJAX isteğinin geçerli durumunu görüntülemek için forma eklendi (bu yöntemler nedeniyle mümkün oldu. ajaxstart ()) BEN. ajaxcomplete ()Dosyanın sonuna daha yakın bulabilirsiniz).
Bu sınıf bir dönen animasyonlu GIF dosyasını gösterir (isteğin işlendiğini işaretler gibi) ve ayrıca yeniden gönderme biçimini önleyen bir bayrak olarak işlev görür (kayıt düğmesi bir kez basıldığında). Sınıf .giriş. - Bu başka bir bayrak, e-posta gönderildiğinde ayarlanır. Bu bayrak anında herhangi bir işlemi formla engeller.
Veritabanı şeması
İnanılmaz derecede basit kayıt sistemimiz 2 MySQL tablosu kullanır (SQL kodu dosyada tables.sql.). İlk önce kullanıcı hesaplarındaki verileri depolar. İkinci, giriş girişimlerinin sayısı hakkındaki bilgileri depolar.
Kullanıcı tablosu devresi.
Sistem, diyagramda görünen şifreleri kullanmaz. Sütunu görebilirsiniz jeton. sütuna bitişik belirteçlerle token_Validity. Kullanıcı sisteme bağlandığında belirteç kurulur, bir mesaj göndermek için e-postasını ayarlar (bir sonraki blokta bu konuda biraz daha fazla). Sütun token_Validity Saati 10 dakika sonra ayarlar, sonra belirteç alakalı olmaktan vazgeçer.
Yetkilendirme girişimlerinin sayısını dikkate alan masa devresi.
Her iki tabloda da IP adresi, tamsayı alanındaki IP2Long işlevini kullanarak işlenmiş biçimde saklanır.
Şimdi biraz php kodu yazabiliriz. Sistemin temel işlevselliği, sınıfa emanet edilir. User.class.php.aşağıda görebileceğiniz.
Bu sınıf aktif olarak İdorm (DOCS) kullanır, bu kitaplıklar veritabanlarıyla çalışmak için minimal olarak gerekli araçlardır. Veritabanına erişim, jenerasyon oluşturma ve doğrulamaları sağlar. PHP kullanıyorsa, kayıt sistemini sitenize kolayca bağlamanıza izin veren basit bir arayüzdür.
User.class.php.
Sınıf kullanıcı (// özel orm vaka özel $ orm; / ** * ** * Tocken'de bir kullanıcı bulun. Sadece geçerli belirteçler dikkate alınır. TOCKEN, MOTUE * @param string $ belirteçten 10 dakika boyunca üretilir. Bu İstenilen Tecken * @return kullanıcısı. Kullanıcı işlevinin değerini iade edin * / Halk Statik Fonksiyon FindByToken ($ TOKEN) (// Veritabanında bir belirteç bulun ve geçerli zaman damgası $ Sonuç \u003d Orm :: for_table (" Reg_users ") -\u003e nerede (" belirteç ", $ belirteç) -\u003e where_raw (" Token_Validity\u003e şimdi () ") -\u003e find_one (); eğer (! $ Sonuç) (false dönüş;) Yeni kullanıcı ($ sonuç) iade edin ($ sonuç) ;) / ** * Bir kullanıcıya * @param string $ e-posta adresini yazın veya kaydettirin. Özel e-posta adresi * @return Kullanıcı * / Genel Adres ($ e-posta) (// Böyle bir kullanıcı zaten varsa, kullanıcı işlevinin değerini döndürürse Veritabanında depolanan belirtilen e-posta adresinden (kullanıcı :: ($ e-posta)) ($ e-posta)) (Yeni Kullanıcı ($ e-posta) iade edin;) // Aksi takdirde yeni bir kullanıcı oluşturun Veritabanındaki TV ve Kullanıcı işlevinin değerini döndürün :: Belirtilen e-posta adresinden oluşturun Kullanıcı :: Oluştur ($ e-posta); ) / ** * Yeni bir kullanıcı oluşturun ve Veritabanını * @param String $ e-posta adresinden kaydedin. Kullanıcı e-posta adresi * @return Kullanıcı * / Özel statik fonksiyon oluşturun ($ e-posta) (// Yeni bir kullanıcı yazın ve kullanıcı işlevinin sonucunu bu değerlerden iade edin $ Sonuç \u003d Orm :: for_table ("reg_users") - \u003e Oluştur (); $ Sonuç-\u003e E-posta \u003d $ e-posta; $ Sonuç-\u003e Kaydet (); Yeni Kullanıcı ($ Sonuç);) / ** * Böyle bir kullanıcının veritabanında bulunduğunu kontrol edin ve değişken değerini iade edin Değişken * @param string $ e-posta. Özel e-posta adresi * @return boolean * / kamu statik fonksiyonu ($ e-posta) (// veritabanında bir kullanıcı var mı? $ Sonuç \u003d Orm :: for_table ("reg_users") -\u003e nerede ("e-posta", $ e-posta ) -\u003e say (); $ sonuç \u003d\u003d 1;) / ** * Yeni bir kullanıcı nesnesi * @param örneği oluşturma * @param örneği $ param orm, kimliği, e-posta veya 0 * @return Kullanıcı * / Genel İşlev __Construct ($ Param \u003d null) (eğer ($ param örneği ORM) (// orm kontrolü, $ 'ya-\u003e orm \u003d $ parfüze geçerse) başka bir şey varsa (is_string ($ param)) (// e-posta kontrol $ this-\u003e om \u003d Om :: for_table ("reg_users") -\u003e nerede ("e-posta", $ param) -\u003e find_one ();) başka ($ id \u003d 0; ise (iS_Numeric ($ param)) (// kullanıcı tanımlayıcısı, değerine iletilir $ parametreli $ kimlik değeri \u003d $ param;) eğer (issas ($ _ seansı ["loginid"])))) (// aksi takdirde $ ID \u003d $ _SESSION ["loginid"];) $ Bu-\u003e Orm \u003d orm :: for_table ("reg_users") -\u003e nerede ("kimlik", $ kimliği) -\u003e find_one ();))) / ** * Yeni SHA1 yetkilendirme belirteci, yazıyor Veritabanında ve değerini döndürür * @ Return String * / Kamu İşlevi Generatetoken () () (// Yetkili bir kullanıcı için bir belirteç oluşturun ve $ TONEN \u003d SHA1'e kaydedin ($ this-\u003e e-posta.Time (). Rand (0 , 1000000)); // Veritabanında belirteçleri kaydedin // Aşağıdaki dakikalardan sadece 10'unda ("belirteç", $ belirteci) yalnızca 10'da alakalı olduğunu işaretleyin; $ this-\u003e orm-\u003e set_expr ("Token_Validity", "AddTime (Şimdi ()," 0:10 ")"); $ Bu-\u003e Om-\u003e Kaydet (); $ Belirteç iade; ) / ** * Kullanıcı * @return Void * / Halk işlevi girişi () (// bir kullanıcıyı yetkili $ _SESSION ["loginid"] \u003d $ this-\u003e Orm-\u003e ID; // değerini yenileyin Last_login taban alanı $ BU-\u003e OM-\u003e SET_EXPR ("last_login", "şimdi ()"); $ Bu-\u003e Orm-\u003e Kaydet ();) / ** * Oturumu imha edin ve kullanıcıyı * @return Void * / Halk Fonksiyonu Logout () ($ _SESSION \u003d dizi ()); UnSet ($ _ seans);) / ** * Kullanıcı gelip gelmediğini kontrol edin * @return Boolean * / Genel işlev loggedin () () BU-\u003e ORM-\u003e ID) && $ _SESSION ["LOGITID"] \u003d\u003d $ BU-\u003e ORM-\u003e ID;) / ** * Kontrol, Kullanıcı Yöneticisi * @return Boolean * / Halk Fonksiyonu ISADMIN () $ this-\u003e rank () \u003d \u003d "yönetici";) / ** * Bir kullanıcı türünü bulun, belki de Yönetici veya Düzenli * @return String * / Genel İşlev Sıralaması () (eğer ($ this-\u003e orm-\u003e sıralaması \u003d\u003d 1) ("Yönetici" i'ye döndürün;) "Normal" döndürün;) / ** * Yöntem özel bilgi almanıza izin verir Kullanıcı Hesabı Kullanıcının Kalite Özellikleri * @Param String $ Key Özellik Özelliği Access * @return Karışık * / Genel İşlev __Get ($ tuş) (eğer (ISSET ($ this-\u003e Ор -\u003e $ tuş)) $ this-\u003e orm -\u003e $ anahtar; ) Null dönüş; ))
Jetonlar SHA1 algoritması kullanılarak üretilir ve veritabanında saklanır. Tokeny'nin alaka düzeyinin 10 dakikalık kısıtlama ayarlamak için MySQL zaman işlevlerini kullanıyorum.
Belirteç doğrulama prosedürünü geçtiğinde, doğrudan tken_validy sütununda depolanan son kullanma tarihi olmayan belirteçleri düşündüğümüz işleyiciyle doğrudan konuşuyoruz.
Sihirli yöntemi kullandığımı unutmayın __almak. DOCS Kütüphaneleri, kullanıcı nesnesinin özelliklerine erişimi engellemek için dosyanın sonunda.
Bundan dolayı, özellikler sayesinde veritabanında depolanan bilgilere erişmek mümkün hale gelir. $ Kullanıcı-\u003e E-posta, $ Kullanıcı-\u003e Token et al. Aşağıdaki kod parçasında, bir örnek olarak, bu sınıfları nasıl kullanacağınızı düşünün.
Korumalı sayfa
Faydalı ve gerekli işlevleri saklayan başka bir dosya bir dosyadır. fonksiyonlar.php.. Diğer dosyalarda daha temiz ve okunabilen bir kod oluşturmanıza olanak sağlayan birkaç yardımcı yardımcılığa sahiptir.
fonksiyonlar.php.
Send_Email ($, $ 'dan, $ konusu, $ mesajı) (// Helper, e-posta gönderme $ başlıkları \u003d "MIME-Version: 1.0". "\\ R \\ n"; $ Başlıklar. \u003d "İçerik türü: Metin / Ova; Charset \u003d UTF-8 "." \\ R \\ n "; $ Başlıklar. \u003d" Dan: ". $ 'Dan." \\ R \\ n "; iade postası ($' ı, $ konusu, $ mesaj, $ başlıklar );) Fonksiyon get_page_url () (// ABD PHP dosyasını URL \u003d "http" belirleyin. (Boş ($ _ Sunucu ["https"])? "": "S"). ": //" $ _ Sunucu ["Server_name"]; eğer (ISSET ($ _ SUNUCUKI ["Request_uri"]) && $ _Server ["Request_uri"]! \u003d "") ($ URL. \u003d $ _Server ["Request_uri"];) başka ($ URL) . \u003d $ _Server ["path_info"];) $ URL;) fonksiyon rate_limit ($ ip, $ limit_hour \u003d 20, $ limit_10_min \u003d 10) (// bu IP adresindeki son saat için giriş denemesi sayısı $ $ count_hour \u003d Orm :: for_table ("reg_login_attemptenm") -\u003e nerede ("ip", sprintf ("% u", IP2Long ($ IP))) -\u003e where_raw ("TS\u003e Subtime (şimdi ()," 1:00 " ) ") -\u003e Count (); // Bu IP adresindeki son 10 dakikada giriş girişimlerinin sayısı $ COUNT_10_MIN \u003d Orm :: for_table (" reg_login_attempt ") -\u003e nerede (" ip ", sprint F ("% u", IP2Long ($ IP)))) -\u003e where_raw ("TS\u003e SUBTE (şimdi (şimdi ()," 0:10 ")") -\u003e Count (); if ($ count_hour\u003e $ Limit_hour || $ count_10_min\u003e $ limit_10_min) (yeni bir istisna atın ("Çok fazla oturum açma denemesi!");)) işlevi Puan_limit_tick ($ ip, $ e-posta) (// Tabloda yeni bir giriş oluştur) Bu, giriş denemesi sayısını kabul eden $ login_attempt \u003d Orm :: for_table ("reg_login_attemptent") -\u003e Oluştur (); $ login_attempt-\u003e e-posta \u003d $ e-posta; $ login_attempt-\u003e ip \u003d sprintf ("% u", IP2Long ($ IP )); $ login_attempt-\u003e kaydet ();) Function Redirect ($ URL) (Başlık ("Konum: $ URL"); çıkış;)
Fonksiyonlar rate_limit. ve rate_limit_tick. Bunu, ilk girişimin anından itibaren süresi dolmuş bir süre için yetkilendirme girişimlerinin sayısını takip ederler. Giriş girişimi, Veritabanında REG_LOGIN_Atptement sütununda kaydedilir. Bu işlevler, bir sonraki kod parçasından görebileceğiniz şekilde form verilerini işleme koyarken ve gönderirken çağrılır.
Kod aşağıdaki dosyadan alınır. index.php. Ve formun gönderilmesini işler. Bu, dosyada jquery tarafından işlendiği bir JSON tepkisi döndürür. varlıklar / JS / Script.jsdaha önce zaten demonte ettiğimiz.
index.php.
Deneyin (eğer (! Boş ($ _ posta) && isset ($ _ Sunucu ["http_x_requested_with"]))) (// bir JSON başlık başlığı ("İçerik tipi: Uygulama / JSON"); // bu e-posta adresidir Geçerli ise (! İsset ($ _ post ["e-posta"]) ||! Filter_var ($ _ sonrası ["e-posta"], filter_validate_email)) (yeni bir istisna atın ("Lütfen geçerli bir e-posta girin");) // kontrol . Kullanıcının giriş yapmasına izin verilir mi, izin verilen bağlantıların sayısını aştırır mı? (Daha fazla bilgi için fonksiyonlar.php dosyası) RATE_LIMIT ($ _ SUNUCU ["Remote_addr"]); // Puan_limit_tick ($) yetkilendirmek için bu girişimi kaydedin _ Sunucu ["remote_addr"], $ _POST ["e-posta"]); // $ mesaj \u003d "", $ e-posta \u003d $ _post ["e-posta"]; $ konu \u003d "Giriş bağlantınız"]; eğer (! Kullanıcı :: var ($ e-posta)) ($ e-posta)) ($ konu \u003d "Kayıt olduğunuz için teşekkür ederiz!"; $ MESAJ \u003d "Sitemize kayıt olduğunuz için teşekkür ederiz! \\ n \\ n";) // yetkilendirme denemesi veya USER $ user \u003d user :: loginansister ($ _ sonrası ["e-posta"]); $ mesaj. \u003d "Bu URL'den giriş yapabilirsiniz: \\ n" ; $ mesaj. \u003d get_page_url (). "? TKN \u003d". $ User-\u003e Generatetoken (). "\\ n \\ n"; $ Mesaj. \u003d "Bağlantı 10 dakika sonra otomatik olarak sona eriyor."; $ Sonuç \u003d send_email ($ fripail, $ _POST ["e-posta"], $ konu, $ mesaj); İf (! $ Sonuç) (yeni bir istisna attı ("e-postanızı gönderen bir hata oluştu. Lütfen tekrar deneyin.");) Ölün (JSON_ENCODE (Dizi ("mesajı" \u003d\u003e "Teşekkürler! Gelen kutunuza. ") SPAM klasörünüzü de kontrol edin.")));) Yakalamak (JSON_ENCODE (Dizi (hata "\u003d\u003e 1," Mesaj "\u003d\u003e $ e-\u003e getmessage ())));)
Başarılı Yetkilendirme / Kayıt Kodu'ndan sonra, kullanıcı kullanıcıya yetkilendirmek için bir bağlantı gönderir. Tocken ekonomik hale gelir, çünkü Oluşturulan bağlantı yönteminde bir değişken olarak iletilir. $ _GET. Tkn marker ile
index.php.
İf (isset ($ _ almak ["tn"]))) (// bu belirteç, yetkilendirme için geçerli midir? $ User \u003d user :: findbyton ($ _ almak ["tkn"]); if ($ user) (//) Evet. $ Kullanıcı-\u003e login () 'nin korunan sayfasına yönlendirilmesi için, yönlendirme ("protected.php");) // hayır, belirteç geçerli değil. Formla sayfada bir yönlendirme uygulamak Yönlendirme yetkisi / kaydı ("index.php");)
$ Kullanıcı-\u003e Giriş ()
oturum için gerekli değişkenleri oluşturun, böylece kullanıcı, sonraki site sayfalarına bakacak şekilde, her zaman yetkilendirilecektir.
Benzer şekilde, sistemden çıkma işlevinin işlenmesi de düzenlenir.
index.php.
İf (isset ($ _ almak ["logout"]))) ($ user \u003d yeni kullanıcı (); eğer ($ user-\u003e loggedin ()) ($ user-\u003e logout ()) ($ user-\u003e logout ();) yönlendirme ("index.php" );)
Kodun sonunda, tekrar index.php, böylece parametre bir yönlendirme koydum. ? LOGOUT \u003d 1 URL tarafından gerekli değildir gerekli değildir.
Dosyamız. index.php. Ekleme gerektirir. Koruma - Sistemde oturum açtığımızda, bir kez daha kayıt olan kişilerin kayıt formunu görmesini istemiyoruz. Bu amaçlar için yöntemi kullanıyoruz $ Kullanıcı-\u003e LogGIN ().
index.php.
$ User \u003d yeni kullanıcı (); if ($ user-\u003e loggedin ()) (yönlendirme ("protected.php");)
Son olarak, burada sitenizin sayfalarını korumanıza ve yalnızca yetkilendirmeden sonra kullanılabilir hale getirmenizi sağlayan bir kod parçası.
korumalı.php.
// Sitenizdeki her sayfayı korumak için // main.php dosyasını bağlayın ve yeni bir kullanıcı nesnesi oluşturun. Bu kadar kolay! Request_once "içerir / main.php"; $ User \u003d yeni kullanıcı (); İf (! $ User-\u003e loggedin ()) (yönlendirme ("index.php");)
Bu kontrolden sonra, kullanıcının başarıyla yetkilendirildiğinden emin olabilirsiniz. Ayrıca, nesne özelliklerini kullanarak veritabanındaki depolanan bilgilere de erişebilirsiniz. $ Kullanıcı.. E-posta ve kullanıcıyı ve durumunu görüntülemek için bu kodu kullanın:
Yöntem rütbe () Burada kullanılan, çünkü veritabanı genellikle saklanır (normal bir kullanıcı için 0, yönetici için 1) ve bu verileri bizimle ilgili durumlara dönüştürmemiz gerekir ve bu yöntem yardımcı olur.
Bir yönetici düzenli bir kullanıcıdan yapmak için, kullanıcı girişini phpmyadmin (veya veritabanlarını yönetmenize izin veren herhangi bir program) aracılığıyla düzenleyin. Yönetici durumu herhangi bir ayrıcalık vermez, bu örnekte sayfadaki bir yönetici olduğunuz için görüntülenecektir - ve bu kadar.
Fakat bununla ne yapmalı - bu sizin takdirinize bağlı olarak kalır, yöneticiler için belirli ayrıcalıkları ve fırsatları tanımlayan bir kod yazabilir ve oluşturabilirsiniz.
Bitirdik!
Bu inanılmaz süper quasi basit formu ile bittik! PHP sitelerinizde kullanabilirsiniz, yeterince kolaydır. Ayrıca kendinizin altında da değiştirebilir ve istediğiniz gibi yapabilirsiniz.
Site sitesi için özel olarak Denis Bebek hazırlanan malzeme
P.S. PHP ve OOP ustalaşmada ilerlemek ister misiniz? PHP programlaması dahil olmak üzere, PHP programlaması dahil olmak üzere, PHP programlaması dahil olmak üzere, Site binalarının çeşitli yönleriyle ilgili birinci sınıf derslere dikkat edin.
Malzemeyi beğendiniz ve teşekkür etmek ister misiniz? Sadece arkadaşlarınızla ve meslektaşlarınızla paylaşın!
1. Veritabanında kullanıcıların oluşturulmasıyla başlayalım. Kullanıcı verileri (giriş ve şifre) içerecektir. PhpmyAdmin'e gidelim (PC'nizde bir veritabanı oluşturursanız http: // localhost / phpmyadmin /). Bir masa oluştur kullanıcılar.3 alanı olacak.
MySQL veritabanında yaratıyorum, başka bir veritabanında oluşturabilirsiniz. Sonra, değerleri resimdeki gibi ayarlayın:
Tıklayın " Kayıt etmek"Peki bir masamız var. 2. Bu tabloya bağlanmak gerekir. Bir dosya oluşturalım bd.php.. Bu içerik:
Benim durumumda şöyle görünüyor:
BD.php'u kaydet. Mükemmel! Veritabanında bir masamız var, bununla bağlantı. Artık kullanıcıların verilerini bırakacağı bir sayfa oluşturmaya başlayabilirsiniz. 3. Bir dosya oluşturun reg.php. İçeriği ile (içerideki tüm yorumlar):