CodeIgniter - Hızlı Kılavuz
CodeIgniter, PHP kullanarak web siteleri geliştirmek için kullanılabilecek bir uygulama geliştirme çerçevesidir. Açık Kaynak çerçevesidir. Web sitesi geliştirme çalışmalarının hızını artıracak çok zengin bir işlevsellik kümesine sahiptir.
PHP'yi iyi biliyorsanız, CodeIgniter işinizi kolaylaştıracaktır. Çok zengin bir kütüphane ve yardımcılara sahiptir. Sıfırdan bir web sitesi geliştiriyorsanız, CodeIgniter'ı kullanarak çok zaman kazanacaksınız. Sadece bu değil, CodeIgniter'da oluşturulmuş bir web sitesi de güvenlidir, çünkü web siteleri aracılığıyla gerçekleşen çeşitli saldırıları önleme yeteneğine sahiptir.
CodeIgniter Özellikleri
CodeIgniter'ın bazı önemli özellikleri aşağıda listelenmiştir -
Model-Görünüm-Denetleyici Tabanlı Sistem
Son derece Hafif
Çeşitli platformları destekleyen Tam Özellikli veritabanı sınıfları.
Query Builder Veritabanı Desteği
Form ve Veri Doğrulama
Güvenlik ve XSS Filtreleme
Oturum Yönetimi
E-posta Gönderme Sınıfı. Ekleri, HTML / Metin e-postasını, çoklu protokolleri (sendmail, SMTP ve Posta) ve daha fazlasını destekler.
Görüntü İşleme Kitaplığı (kırpma, yeniden boyutlandırma, döndürme, vb.). GD, ImageMagick ve NetPBM'yi destekler
Dosya Yükleme Sınıfı
FTP Sınıfı
Localization
Pagination
Veri şifreleme
Benchmarking
Tam Sayfa Önbelleğe Alma
Hata Günlüğü
Uygulama Profili Oluşturma
Takvim Sınıfı
Kullanıcı Aracısı Sınıfı
Zip Kodlama Sınıfı
Template Engine Sınıfı
Geri İzleme Sınıfı
XML-RPC Kitaplığı
Birim Test Sınıfı
Arama motoru Dostu URL'ler
Esnek URI Yönlendirme
Kancalar ve Sınıf Uzantıları Desteği
Geniş "yardımcı" işlevler kitaplığı
CodeIgniter'ı kurmak çok kolaydır. Sadece aşağıda verilen adımları izleyin -
Step-1- bağlantısından CodeIgniter'ı indirin CodeIgniter
Step-2 - Klasörü açın.
Step-3 - Tüm dosya ve klasörleri sunucunuza yükleyin.
Step-4 - Tüm dosyaları sunucunuza yükledikten sonra, sunucunuzun URL'sini ziyaret edin, örn. Www.domain-name.com.
URL'yi ziyaret ettiğinizde, aşağıdaki ekranı göreceksiniz -
CodeIgniter uygulamasının mimarisi aşağıda gösterilmiştir.
Şekilde gösterildiği gibi, CodeIgniter'a bir talep geldiğinde, ilk olarak index.php sayfa.
İkinci adımda, Routing bu isteği önbelleğe almak için 3. adıma mı yoksa güvenlik kontrolü için bu isteği 4. adıma mı geçireceğine karar verecektir.
İstenen sayfa zaten içindeyse Caching, sonra Routing isteği 3. adıma iletecek ve yanıt kullanıcıya geri dönecektir.
İstenen sayfa şurada yoksa Caching, sonra Routing istenen sayfayı 4. adıma geçirecek Security kontroller.
İsteği iletmeden önce Application Controller, SecurityGönderilen verilerin% 50'si kontrol edilir. SonraSecurity kontrol edin Application Controller gerekli yükler Models, Libraries, Helpers, Plugins ve Scripts ve ona aktar View.
View Sayfayı mevcut verilerle işleyecek ve Caching. İstenen sayfa daha önce önbelleğe alınmadığı için bu sefer önbelleğe alınacakCaching, bu sayfayı gelecekteki istekler için hızlı bir şekilde işlemek için.
Dizin Yapısı
Aşağıda verilen resim, CodeIgniter'ın dizin yapısını göstermektedir.
CodeIgniter dizin yapısı 3 klasöre bölünmüştür -
- Application
- System
- User_guide
Uygulama
Adından da anlaşılacağı gibi Uygulama klasörü, oluşturduğunuz uygulamanızın tüm kodunu içerir. Bu, projenizi geliştireceğiniz klasördür. Uygulama klasörü, aşağıda açıklanan birkaç başka klasör içerir -
Cache- Bu klasör, uygulamanızın önbelleğe alınmış tüm sayfalarını içerir. Önbelleğe alınan bu sayfalar, sayfalara erişimin genel hızını artıracaktır.
Config- Bu klasör, uygulamayı yapılandırmak için çeşitli dosyalar içerir. Yardımıylaconfig.phpdosya, kullanıcı uygulamayı yapılandırabilir. Kullanmadatabase.php dosyası, kullanıcı uygulamanın veritabanını yapılandırabilir.
Controllers- Bu klasör, uygulamanızın denetleyicilerini içerir. Başvurunuzun temel kısmıdır.
Core - Bu klasör, uygulamanızın temel sınıfını içerecektir.
Helpers - Bu klasöre uygulamanızın yardımcı sınıfını koyabilirsiniz.
Hooks - Bu klasördeki dosyalar, çekirdek dosyaları hacklemeden çerçevenin iç işleyişine erişmek ve bunları değiştirmek için bir yol sağlar.
Language - Bu klasör, dil ile ilgili dosyaları içerir.
Libraries - Bu klasör, uygulamanız için geliştirilmiş kitaplıkların dosyalarını içerir.
Logs - Bu klasör, sistemin günlüğü ile ilgili dosyaları içerir.
Models - Veritabanı girişi bu klasöre yerleştirilecektir.
Third_party - Bu klasöre uygulamanız için kullanılacak herhangi bir eklentiyi yerleştirebilirsiniz.
Views - Uygulamanın HTML dosyaları bu klasöre yerleştirilecektir.
Sistem
Bu klasör, kodlamayı kolaylaştırmaya yardımcı olan CodeIgniter çekirdek kodlarını, kitaplıkları, yardımcıları ve diğer dosyaları içerir. Bu kitaplıklar ve yardımcılar web uygulaması geliştirmede yüklenir ve kullanılır.
Bu klasör, çeşitli klasörler halinde düzenlenmiş tüm CodeIgniter sonuç kodunu içerir -
Core- Bu klasör, CodeIgniter'ın çekirdek sınıfını içerir. Burada hiçbir şeyi değiştirmeyin. Tüm çalışmalarınız uygulama klasöründe yer alacaktır. Amacınız CodeIgniter çekirdeğini genişletmek olsa bile, bunu kancalarla yapmanız gerekir ve uygulama klasöründeki kancalar canlıdır.
Database - Veritabanı klasörü, temel veritabanı sürücülerini ve diğer veritabanı yardımcı programlarını içerir.
Fonts - Fontlar klasörü, fontla ilgili bilgileri ve yardımcı programları içerir.
Helpers - yardımcılar klasörü, standart CodeIgniter yardımcıları (tarih, çerez ve URL yardımcıları gibi) içerir.
Language- Dil klasörü, dil dosyalarını içerir. Şimdilik görmezden gelebilirsin.
Libraries- Kitaplıklar klasörü standart CodeIgniter kitaplıkları içerir (size e-posta, takvimler, dosya yüklemeleri ve daha fazlası konusunda yardımcı olmak için). Kendi kitaplıklarınızı oluşturabilir veya standart olanları genişletebilir (ve hatta değiştirebilirsiniz), ancak bunlarapplication/libraries onları bu klasörde kaydedilen standart CodeIgniter kitaplıklarından ayrı tutmak için dizin.
Kullanici rehberi
Bu, CodeIgniter kullanıcı kılavuzunuzdur. Temel olarak, CodeIgniter web sitesindeki kullanım kılavuzunun çevrimdışı sürümüdür. Bunu kullanarak çeşitli kütüphanelerin, yardımcıların ve sınıfların işlevlerini öğrenebilirsiniz. CodeIgniter'da ilk web uygulamanızı oluşturmadan önce bu kullanıcı kılavuzunu incelemeniz önerilir.
Bu üç klasörün yanında, "index.php”. Bu dosyada uygulama ortamını ve hata seviyesini ayarlayabilir, sistem ve uygulama klasör adını tanımlayabiliriz. Ne yapacağınız hakkında yeterli bilginiz yoksa bu ayarları değiştirmemeniz önerilir.
CodeIgniter, Model-View-Controller (MVC) development pattern. MVC, uygulama mantığını sunumdan ayıran bir yazılım yaklaşımıdır. Uygulamada, sunum PHP komut dosyasından ayrı olduğundan web sayfalarınızın minimum komut dosyası içermesine izin verir.
Modelveri yapılarınızı temsil eder. Tipik olarak, model sınıflarınız, veritabanınızdaki bilgileri almanıza, eklemenize ve güncellemenize yardımcı olan işlevler içerir.
Viewbir kullanıcıya sunulan bilgidir. Görünüm normalde bir web sayfası olacaktır, ancak CodeIgniter'da bir görünüm, üstbilgi veya altbilgi gibi bir sayfa parçası da olabilir. Aynı zamanda bir RSS sayfası veya başka bir "sayfa" türü de olabilir.
Controller Model, Görünüm ve HTTP isteğini işlemek ve bir web sayfası oluşturmak için gereken diğer kaynaklar arasında bir aracı görevi görür.
Kontrolörler
Bir denetleyici, basit bir sınıf dosyasıdır. Adından da anlaşılacağı gibi, tüm uygulamayı URI ile kontrol eder.
Bir Denetleyici Oluşturma
İlk önce gidin application/controllersKlasör. Orada iki dosya bulacaksınız.index.html ve Welcome.php. Bu dosyalar CodeIgniter ile birlikte gelir.
Bu dosyaları oldukları gibi saklayın. Aynı yol altında yeni bir dosya oluşturun "Test.php”. Bu dosyaya aşağıdaki kodu yazın -
<?php
class Test extends CI_Controller {
public function index() {
echo "Hello World!";
}
}
?>
Test sınıf, adı verilen yerleşik bir sınıfı genişletir CI_Controller. Kendi Controller sınıfınızı oluşturmak istediğinizde bu sınıf genişletilmelidir.
Bir Denetleyiciyi Çağırma
Yukarıdaki denetleyici URI tarafından aşağıdaki şekilde çağrılabilir -
http://www.your-domain.com/index.php/test
"test"İndex.php'den sonraki URI'de. Bu, denetleyicinin sınıf adını gösterir. Denetleyicinin adını verdiğimiz gibi "Test", yazıyoruz "test"İndex.php'den sonra. Sınıf adı ile başlamalıdıruppercase letter ama yazmamız gerek lowercase letterBu denetleyiciyi URI ile çağırdığımızda. Denetleyiciyi çağırmak için genel sözdizimi aşağıdaki gibidir -
http://www.your-domain.com/index.php/controller/method-name
Oluşturucu Yöntemi Oluşturma ve Çağırma
Yukarıdaki sınıfı değiştirelim ve "merhaba" adında başka bir yöntem oluşturalım.
<?php
class Test extends CI_Controller {
public function index() {
echo "This is default function.";
}
public function hello() {
echo "This is hello function.";
}
}
?>
Yukarıdaki denetleyiciyi aşağıdaki üç şekilde çalıştırabiliriz -
- http://www.your-domain.com/index.php/test
- http://www.your-domain.com/index.php/test/index
- http://www.your-domain.com/index.php/test/hello
Tarayıcıda ilk URI'yi ziyaret ettikten sonra aşağıdaki resimde gösterildiği gibi çıktıyı alıyoruz. Gördüğünüz gibi, yöntemin çıktısını aldık "index”, Yöntemin adını URI'den geçirmemiş olsak da. URI'de sadece kontrolör adını kullandık. Bu gibi durumlarda, CodeIgniter varsayılan yöntemi "index”.
Tarayıcıda ikinci URI'yi ziyaret ederek, yukarıdaki resimde gösterilenle aynı çıktıyı elde ederiz. Burada, URI'deki controller isminden sonra metodun ismini geçtik. Yöntemin adı "index”, Aynı çıktıyı alıyoruz.
Tarayıcıda üçüncü URI'yi ziyaret ederek, çıktıyı aşağıda verilen resimde gösterildiği gibi elde ederiz. Gördüğünüz gibi, yöntemin çıktısını alıyoruz "hello"Çünkü geçtik"hello"Yöntem adı olarak, denetleyicinin adından sonra"testURI'de ".
Hatırlanacak noktalar
Denetleyici sınıfının adı büyük harfle başlamalıdır.
Denetleyici küçük harfle çağrılmalıdır.
Üst sınıfın işlevselliğini geçersiz kılacağından, ana sınıfınızla aynı yöntemin adını kullanmayın.
Görüntüleme
Bu, denetleyici tarafından çağrılabilen basit veya karmaşık bir web sayfası olabilir. Web sayfası üstbilgi, altbilgi, kenar çubuğu vb. İçerebilir. Görünüm doğrudan çağrılamaz. Basit bir görünüm oluşturalım. Altında yeni bir dosya oluşturapplication/views "adıylatest.php”Ve aşağıdaki kodu o dosyaya kopyalayın.
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter View Example</title>
</head>
<body>
CodeIgniter View Example
</body>
</html>
Kodunu değiştirin application/controllers/test.php dosya aşağıda gösterildiği gibi.
Görünümü Yükleme
Görünüm aşağıdaki sözdizimi ile yüklenebilir -
$this->load->view('name');
Burada adı, işlenmekte olan görünüm dosyasıdır. Görünüm dosyasını bir dizinde depolamayı planladıysanız, aşağıdaki sözdizimini kullanabilirsiniz -
$this->load->view('directory-name/name');
.Php dışında bir şey kullanılmadıkça, uzantıyı php olarak belirtmek gerekli değildir.
İndex () yöntemi, view yöntemini çağırıyor ve "test" i argüman olarak view () yöntemine geçiriyor çünkü html kodlamasını "test.php"Altındaki dosya application/views/test.php.
<?php
class Test extends CI_Controller {
public function index() {
$this->load->view('test');
}
}
?>
İşte yukarıdaki kodun çıktısı -
Aşağıdaki akış şeması, her şeyin nasıl çalıştığını göstermektedir -
Modeller
Model sınıfları, veritabanındaki bilgilerle çalışmak üzere tasarlanmıştır. Örnek olarak, uygulamanızdaki kullanıcıları yönetmek için CodeIgniter kullanıyorsanız, kullanıcılarınızın verilerini eklemek, silmek, güncellemek ve almak için işlevler içeren model sınıfına sahip olmanız gerekir.
Model Sınıfı Oluşturma
Model sınıfları şurada saklanır: application/modelsdizin. Aşağıdaki kod, CodeIgniter'da model sınıfının nasıl oluşturulacağını gösterir.
<?php
Class Model_name extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
Model_name vermek istediğiniz model sınıfının adıdır. Her model sınıfı, CodeIgniter'in CI_Model sınıfını miras almalıdır. Model sınıfının ilk harfi büyük harfle yazılmalıdır. Kullanıcıların model sınıfının kodu aşağıdadır.
<?php
Class User_model extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
Yukarıdaki model sınıfı User_model.php olarak kaydedilmelidir. Sınıf adı ve dosya adı aynı olmalıdır.
Yükleme Modeli
Model denetleyicide çağrılabilir. Herhangi bir modeli yüklemek için aşağıdaki kod kullanılabilir.
$this->load->model('model_name');
Model_name, yüklenecek modelin adıdır. Modeli yükledikten sonra, aşağıda gösterildiği gibi basitçe yöntemini çağırabilirsiniz.
$this->model_name->method();
Otomatik Yüklenen Modeller
Uygulamanız boyunca bazı model sınıfları istediğiniz durumlar olabilir. Bu tür durumlarda, onu otomatik olarak yüklememiz daha iyidir.
/*
| ---------------------------------------------------------------
| Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
| $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|
| $autoload['model'] = array('first_model' => 'first'); */ $autoload['model'] = array();
Yukarıdaki şekilde gösterildiği gibi, otomatik olarak yüklemek istediğiniz dizideki modelin adını iletin ve sistem başlatma durumundayken ve uygulama boyunca erişilebilir durumdayken otomatik olarak yüklenecektir.
Yardımcıları
Adından da anlaşılacağı gibi, sisteminizi kurmanıza yardımcı olacaktır. Farklı işlevlere hizmet etmek için küçük işlevlere bölünmüştür. CodeIgniter'da aşağıdaki tabloda listelenen bir dizi yardımcı bulunmaktadır. Kendi yardımcılarımızı da oluşturabiliriz.
Yardımcıları tipik olarak sizin system/helpersveya application/helpers directory. Özel yardımcılar şurada saklanır:application/helpers dizin ve sistem yardımcıları şurada saklanır: system/helpersdizin. CodeIgniter ilk olarakapplication/helpers directory. Dizin yoksa veya belirtilen yardımcı bulunmazsa, CodeIgniter bunun yerine globalsystem/helpers/ directory. İster özel ister sistem yardımcısı olsun, her yardımcı kullanmadan önce yüklenmelidir.
SN | Yardımcı Adı ve Açıklaması |
---|---|
1 | Array Helper Dizi Yardımcısı dosyası, dizilerle çalışmaya yardımcı olan işlevler içerir. |
2 | CAPTCHA Helper CAPTCHA Helper dosyası, CAPTCHA görüntüleri oluşturmaya yardımcı olan işlevleri içerir. |
3 | Cookie Helper Çerez Yardımcısı dosyası, çerezlerle çalışmaya yardımcı olan işlevler içerir. |
4 | Date Helper Tarih Yardımcısı dosyası, tarihlerle çalışmanıza yardımcı olan işlevleri içerir. |
5 | Directory Helper Dizin Yardımcısı dosyası, dizinlerle çalışmaya yardımcı olan işlevler içerir. |
6 | Download Helper İndirme Yardımcısı, verileri masaüstünüze indirmenize izin verir. |
7 | Email Helper E-posta Yardımcısı, E-posta ile çalışmak için bazı yardımcı işlevler sağlar. Daha sağlam bir e-posta çözümü için CodeIgniter'in E-posta Sınıfına bakın. |
8 | File Helper Dosya Yardımcısı dosyası, dosyalarla çalışmaya yardımcı olan işlevler içerir. |
9 | Form Helper Form Helper dosyası, formlarla çalışmaya yardımcı olan işlevler içerir. |
10 | HTML Helper HTML Yardımcısı dosyası, HTML ile çalışmaya yardımcı olan işlevler içerir. |
11 | Inflector Helper Inflector Helper dosyası, kelimeleri çoğul, tekil, deve durumu vb. Olarak değiştirmenize izin veren işlevler içerir. |
12 | Language Helper Dil Yardımcısı dosyası, dil dosyalarıyla çalışmaya yardımcı olan işlevler içerir. |
13 | Number Helper Sayı Yardımcısı dosyası, sayısal verilerle çalışmanıza yardımcı olan işlevler içerir. |
14 | Path Helper Yol Yardımcısı dosyası, sunucudaki dosya yollarıyla çalışmanıza izin veren işlevleri içerir. |
15 | Security Helper Güvenlik Yardımcısı dosyası, güvenlikle ilgili işlevleri içerir. |
16 | Smiley Helper Smiley Helper dosyası, gülen yüzleri (ifadeleri) yönetmenize izin veren işlevler içerir. |
17 | String Helper Dize Yardımcısı dosyası, dizelerle çalışmaya yardımcı olan işlevleri içerir. |
18 | Text Helper Metin Yardımcısı dosyası, metinle çalışmaya yardımcı olan işlevler içerir. |
19 | Typography Helper Tipografi Yardımcısı dosyası, metninizi anlamsal olarak uygun şekillerde biçimlendirmenize yardımcı olan işlevler içerir. |
20 | URL Helper URL Yardımcısı dosyası, URL'lerle çalışmaya yardımcı olan işlevler içerir. |
21 | XML Helper XML Helper dosyası, XML verileriyle çalışmaya yardımcı olan işlevleri içerir. |
Bir Yardımcı Yükleme
Aşağıda gösterildiği gibi bir yardımcı yüklenebilir -
$this->load->helper('name');
Ad, yardımcının adıdır. Örneğin, URL Yardımcısı'nı yüklemek istiyorsanız, şu şekilde yüklenebilir -
$this->load->helper('url');
Yönlendirme
CodeIgniter, URL'yi kolayca yeniden yönlendirebilmeniz için kullanıcı dostu URI yönlendirme sistemine sahiptir. Tipik olarak, bir URL dizesi ile karşılık gelen denetleyici sınıfı / yöntemi arasında bire bir ilişki vardır. Bir URI'deki segmentler normalde bu modeli izler -
your-domain.com/class/method/id/
first segment çağrılması gereken denetleyici sınıfını temsil eder.
second segment çağrılması gereken sınıf işlevini veya yöntemi temsil eder.
thirdve herhangi bir ek segment, kimliği ve denetleyiciye iletilecek tüm değişkenleri temsil eder.
Bazı durumlarda, bu varsayılan yönlendirme mekanizmasını değiştirmek isteyebilirsiniz. CodeIgniter, kendi yönlendirme kurallarınızı belirleyebileceğiniz kolaylık sağlar.
Yönlendirme Kurallarını Özelleştirin
Tüm bunları halledebileceğiniz belirli bir dosya var. Dosya application / config / route.php adresinde bulunur. Adlı bir dizi bulacaksınız$route in which you can customize your routing rules. The key in the $rota dizisi neyin yönlendirileceğine karar verir ve değer nereye yönlendirileceğine karar verir. CodeIgniter'da üç ayrılmış yol vardır.
SN | Ayrılmış Rotalar ve Açıklama |
---|---|
1 | $route['default_controller'] Bu rota, eğer URI veri içermiyorsa hangi denetleyici sınıfının yüklenmesi gerektiğini belirtir; bu, insanlar kök URL'nizi yüklediğinde böyle olacaktır. Varsayılan bir rotanız olması teşvik edilir, aksi takdirde varsayılan olarak bir 404 sayfası görüntülenir. Burada web sitesinin ana sayfasını ayarlayabiliriz, böylece varsayılan olarak yüklenecektir. |
2 | $route['404_override'] Bu yol, istenen denetleyici bulunamazsa hangi denetleyici sınıfının yüklenmesi gerektiğini belirtir. Varsayılan 404 hata sayfasını geçersiz kılar. Etkilemezshow_404() işlevi, varsayılanı yüklemeye devam edecek error_404.php dosyasında application/views/errors/error_404.php. |
3 | $route['translate_uri_dashes'] Boolean değerinden de anlaşılacağı gibi, bu tam olarak bir rota değildir. Bu seçenek, kontrolörde ve yöntem URI segmentlerinde kısa çizgileri ('-') alt çizgilerle otomatik olarak değiştirmenize olanak tanır, böylece bunu yapmanız gerekirse ek yol girişlerinden tasarruf etmenizi sağlar. Bu, tire geçerli bir sınıf veya yöntem adı karakteri olmadığından ve kullanmaya çalışırsanız önemli bir hataya neden olacağı için gereklidir. |
Rotalar özelleştirilebilir wildcards veya kullanarak regular expressions ancak bu özelleştirilmiş yönlendirme kurallarının ayrılmış kurallardan sonra gelmesi gerektiğini unutmayın.
Joker karakterler
Aşağıda açıklandığı gibi iki joker karakter kullanabiliriz -
(:num) - Yalnızca sayı içeren bir segmentle eşleşecektir.
(:any) - Herhangi bir karakter içeren bir segmentle eşleşecektir.
Example
$route['product/:num']='catalog/product_lookup';
Yukarıdaki örnekte, URL'nin ilk segmentinde "ürün" kelimesi ve ikinci segmentte bir numara bulunursa, bunun yerine "katalog" sınıfı ve "ürün_bak" yöntemi kullanılır.
Düzenli ifadeler
Joker karakterler gibi, normal ifadeleri de kullanabiliriz $route array keyBölüm. Herhangi bir URI normal ifadeyle eşleşirse, o zaman $ rota dizisine ayarlanan değer kısmına yönlendirilir.
Example
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
Yukarıdaki örnekte, ürünler / ayakkabılar / 123'e benzer bir URI, bunun yerine "shoes"Denetleyici sınıfı ve"id_123" yöntem.
Siteyi kurduktan sonra yapmamız gereken bir sonraki şey siteyi yapılandırmaktır. Application / config klasörü, sitenizin temel yapılandırmasını ayarlayan bir grup dosya içerir.
Temel URL'yi Yapılandırma
Sitenin temel URL'si application / config / config.php dosyasında yapılandırılabilir. CodeIgniter kökünüzün URL'sidir. Tipik olarak bu, eğik çizgiyle birlikte temel URL'niz olur, ör.
http://example.com/
Bu ayarlanmazsa, CodeIgniter kurulumunuzun protokolünü, etki alanını ve yolunu tahmin etmeye çalışır. Ancak, bunu her zaman açık bir şekilde yapılandırmalı ve özellikle üretim ortamlarında asla otomatik tahmine güvenmemelisiniz. $ Config dizisindeki temel URL'yi aşağıda gösterildiği gibi "base_url" anahtarıyla yapılandırabilirsiniz -
$config['base_url'] = 'http://your-domain.com';
Veritabanı Yapılandırması
Sitenin veritabanı application / config / database.php dosyasında yapılandırılabilir. Genellikle geliştirme ve üretim gibi farklı ortamlar için veritabanı kurmamız gerekir. CodeIgniter'da sağlanan çok boyutlu dizi ile farklı ortamlar için veritabanı kurabiliriz. Yapılandırma ayarları, aşağıda gösterildiği gibi dizide saklanır -
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
Ana bilgisayar adı, kullanıcı adı, şifre, veritabanı ve dbdriver dışında birkaç seçeneği varsayılan değerlerine bırakabilirsiniz.
hostname - Veritabanınızın konumunu burada belirtin, örn. Localhost veya IP adresi
username - Veritabanınızın kullanıcı adını burada ayarlayın.
password - Veritabanınızın şifresini burada ayarlayın.
database - Veritabanının adını burada ayarlayın.
dbdriver - Kullandığınız veritabanı türünü ayarlayın, örneğin MySQL, MySQLi, Postgre SQL, ODBC ve MS SQL.
Dizinin anahtarını değiştirerek $db, diğer veritabanı yapılandırmasını aşağıda gösterildiği gibi ayarlayabilirsiniz. Burada anahtarı şu şekilde ayarladık:‘test’ diğer veritabanı ortamını olduğu gibi tutarak veritabanını test ortamı için ayarlamak.
$db['test'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
Aşağıda gösterildiği gibi bir değişkenin değerini değiştirerek farklı bir ortama geçebilirsiniz -
$active_group = ‘default’; //This will set the default environment
$active_group = ‘test’; //This will set the test environment
Otomatik Yükleme Yapılandırması
Bu dosya, varsayılan olarak hangi sistemlerin yüklenmesi gerektiğini belirtir. Çerçeveyi olabildiğince hafif tutmak için, varsayılan olarak yalnızca mutlak minimum kaynaklar yüklenir. Sık kullanılan sistemi tekrar tekrar yerel düzeyde yüklemek yerine otomatik olarak yüklemeniz gerekir. Otomatik olarak yükleyebileceğiniz şeyler aşağıdadır -
Libraries- Otomatik olarak yüklenmesi gereken kitaplıkların bir listesidir. CodeIgniter tarafından otomatik olarak yüklenmek üzere aşağıda gösterildiği gibi bir dizide kitaplıkların bir listesini sağlayın. Bu örnekte, veritabanı, e-posta ve oturum kitaplıklarını otomatik olarak yüklüyoruz.
$autoload['libraries'] = array('database', 'email', 'session');
Drivers- Bu sınıflar system / libraries / veya uygulamanız / libraries / dizininizde bulunur, ancak kendi alt dizinlerine de yerleştirilirler ve CI_Driver_Library sınıfını genişletirler. Birden çok değiştirilebilir sürücü seçeneği sunarlar. Aşağıda, önbellek sürücülerini otomatik olarak yüklemek için bir örnek verilmiştir.
$autoload['drivers'] = array('cache');
Helper files- Otomatik yüklenecek yardımcı dosyaların listesidir. Aşağıda gösterildiği gibi, CodeIgniter tarafından otomatik olarak yüklenecek dizideki kitaplıkların bir listesini sağlayın. Verilen örnekte, URL'yi ve dosya yardımcılarını otomatik yüklüyoruz.
$autoload['helper'] = array('url', 'file');
Custom config files- Bu dosyalar, yalnızca özel yapılandırma dosyaları oluşturduysanız kullanıma yöneliktir. Aksi takdirde boş bırakın. Aşağıda, birden fazla yapılandırma dosyasının nasıl otomatik olarak yükleneceğine dair bir örnek verilmiştir.
$autoload['config'] = array('config1', 'config2');
Language files- Otomatik olarak yüklenmesi gereken dil dosyalarının bir listesidir. Aşağıda verilen örneğe bakın. CodeIgniter tarafından otomatik olarak yüklenmek üzere aşağıda gösterildiği gibi bir dizide dillerin bir listesini sağlayın. Dosyanızın "_lang" kısmını içermediğini unutmayın. Örneğin, "codeigniter_lang.php", array ('codeigniter') olarak belirtilir;
Models- Otomatik olarak yüklenmesi gereken modeller dosyasıdır. CodeIgniter tarafından otomatik olarak yüklenecek aşağıda gösterildiği gibi bir dizideki modellerin bir listesini sağlayın. Birden fazla model dosyasının otomatik olarak nasıl yükleneceği aşağıda verilmiştir.
$autoload['model'] = array('first_model', 'second_model');
Diğer herhangi bir çerçeve gibi, veritabanıyla çok sık etkileşim kurmamız gerekiyor ve CodeIgniter bu işi bizim için kolaylaştırıyor. Veritabanıyla etkileşim için zengin işlevler sağlar.
Bu bölümde CRUD (Oluştur, Oku, Güncelle, Sil) işlevlerinin CodeIgniter ile nasıl çalıştığını anlayacağız. Kullanacağızstud verileri seçmek, güncellemek, silmek ve eklemek için tablo stud tablo.
Tablo Adı: saplama | |
---|---|
roll_no | int (11) |
isim | varchar (30) |
Bir Veritabanına Bağlanma
Veritabanına aşağıdaki iki şekilde bağlanabiliriz -
Automatic Connecting- Application / config / autoload.php dosyası kullanılarak otomatik bağlantı yapılabilir. Otomatik bağlantı, her sayfa için veritabanını yükleyecektir. Veritabanı kitaplığını aşağıda gösterildiği gibi eklememiz gerekiyor -
$autoload['libraries'] = array(‘database’);
Manual Connecting- Yalnızca bazı sayfalar için veritabanı bağlantısı istiyorsanız, manuel bağlantıya geçebiliriz. Herhangi bir sınıfa aşağıdaki satırı ekleyerek veritabanına manuel olarak bağlanabiliriz.
$this->load->database();
Burada herhangi bir argüman iletmiyoruz çünkü her şey veritabanı yapılandırma dosyasında application / config / database.php olarak ayarlanmıştır.
Kayıt Ekleme
Veritabanına bir kayıt eklemek için aşağıdaki tabloda gösterildiği gibi insert () işlevi kullanılır -
Syntax |
ekle ([ $ tablo = '' [, $ set = NULL [, $ escape = NULL ]]]) |
Parameters |
|
Returns |
Başarıda DOĞRU, başarısızlıkta YANLIŞ |
Return Type |
bool |
Aşağıdaki örnek, bir kaydın nasıl ekleneceğini gösterir. studtablo. $ Veri, verileri ayarladığımız ve bu verileri tabloya eklediğimiz bir dizidir.stud, bu diziyi 2. argümandaki insert işlevine geçirmemiz gerekiyor .
$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->insert("stud", $data);
Bir Kaydı Güncelleme
Veritabanındaki bir kaydı güncellemek için, update() işlevi ile birlikte kullanılır set() ve where()aşağıdaki tablolarda gösterildiği gibi çalışır. set() işlevi güncellenecek verileri ayarlayacaktır.
Syntax |
set ( $ anahtar [, $ değer = '' [, $ kaçış = NULL ]]) |
Parameters |
|
Returns |
CI_DB_query_builder örneği (yöntem zinciri) |
Return Type |
CI_DB_query_builder |
where() fonksiyon hangi kaydın güncelleneceğine karar verecektir.
Syntax |
nerede ( $ anahtar [, $ değer = NULL [, $ kaçış = NULL ]]) |
Parameters |
|
Returns |
DB_query_builder örneği |
Return Type |
nesne |
Son olarak update() işlevi veri tabanındaki verileri güncelleyecektir.
Syntax |
güncelleme ([ $ tablo = '' [, $ set = NULL [,$where = NULL[, $limit = NULL ]]]]) |
Parameters |
|
Returns |
Başarıda DOĞRU, başarısızlıkta YANLIŞ |
Return Type |
bool |
$data = array( 'roll_no' => ‘1’, 'name' => ‘Virat’ ); $this->db->set($data); $this->db->where("roll_no", ‘1’);
$this->db->update("stud", $data);
Bir Kaydı Silme
Veritabanındaki bir kaydı silmek için aşağıdaki tabloda gösterildiği gibi delete () işlevi kullanılır -
Syntax |
sil ([ $ tablo = '' [, $ nerede = '' [,$limit = NULL[, $reset_data = DOĞRU ]]]]) |
Parameters |
|
Returns |
CI_DB_query_builder örneği (yöntem zinciri) veya başarısızlık durumunda FALSE |
Return Type |
karışık |
İçindeki bir kaydı silmek için aşağıdaki kodu kullanın. studtablo. İlk bağımsız değişken, kayıt silinecek tablonun adını belirtir ve ikinci bağımsız değişken, hangi kaydın silineceğine karar verir.
$this->db->delete("stud", "roll_no = 1");
Bir Kayıt Seçme
Veritabanında bir kayıt seçmek için, get işlevi aşağıdaki tabloda gösterildiği gibi kullanılır -
Syntax |
get ([ $ tablo = '' [, $ limit = NULL [, $ offset = NULL ]]]) |
Parameters |
|
Returns |
CI_DB_result örneği (yöntem zinciri) |
Return Type |
CI_DB_result |
Veritabanından tüm kayıtları almak için aşağıdaki kodu kullanın. İlk ifade "stud" tablosundaki tüm kayıtları getirir ve $ query nesnesinde saklanacak olan nesneyi döndürür. İkinci ifade,result() Tüm kayıtları dizi olarak almak için $ query nesnesiyle işlev.
$query = $this->db->get("stud"); $data['records'] = $query->result();
Bir Bağlantıyı Kapatma
Aşağıdaki kod çalıştırılarak veritabanı bağlantısı manuel olarak kapatılabilir -
$this->db->close();
Misal
Adlı bir denetleyici sınıfı oluşturun Stud_controller.php ve kaydet application/controller/Stud_controller.php
İşte yukarıda bahsedilen işlemlerin tamamının gerçekleştirildiği eksiksiz bir örnek. Aşağıdaki örneği çalıştırmadan önce, bu bölümün başında belirtildiği gibi bir veritabanı ve tablo oluşturun ve şu adreste depolanan veritabanı yapılandırma dosyasında gerekli değişiklikleri yapın.application/config/database.php
<?php
class Stud_controller extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->helper('url'); $this->load->database();
}
public function index() {
$query = $this->db->get("stud");
$data['records'] = $query->result();
$this->load->helper('url'); $this->load->view('Stud_view',$data); } public function add_student_view() { $this->load->helper('form');
$this->load->view('Stud_add'); } public function add_student() { $this->load->model('Stud_Model');
$data = array( 'roll_no' => $this->input->post('roll_no'),
'name' => $this->input->post('name') ); $this->Stud_Model->insert($data); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data); } public function update_student_view() { $this->load->helper('form');
$roll_no = $this->uri->segment('3');
$query = $this->db->get_where("stud",array("roll_no"=>$roll_no)); $data['records'] = $query->result(); $data['old_roll_no'] = $roll_no; $this->load->view('Stud_edit',$data); } public function update_student(){ $this->load->model('Stud_Model');
$data = array( 'roll_no' => $this->input->post('roll_no'),
'name' => $this->input->post('name') ); $old_roll_no = $this->input->post('old_roll_no'); $this->Stud_Model->update($data,$old_roll_no);
$query = $this->db->get("stud");
$data['records'] = $query->result();
$this->load->view('Stud_view',$data);
}
public function delete_student() {
$this->load->model('Stud_Model'); $roll_no = $this->uri->segment('3'); $this->Stud_Model->delete($roll_no); $query = $this->db->get("stud"); $data['records'] = $query->result(); $this->load->view('Stud_view',$data);
}
}
?>
Adlı bir model sınıfı oluşturun Stud_Model.php ve içine kaydet application/models/Stud_Model.php
<?php
class Stud_Model extends CI_Model {
function __construct() {
parent::__construct();
}
public function insert($data) {
if ($this->db->insert("stud", $data)) {
return true;
}
}
public function delete($roll_no) { if ($this->db->delete("stud", "roll_no = ".$roll_no)) { return true; } } public function update($data,$old_roll_no) { $this->db->set($data); $this->db->where("roll_no", $old_roll_no); $this->db->update("stud", $data);
}
}
?>
Adlı bir görünüm dosyası oluşturun Stud_add.php ve içine kaydet application/views/Stud_add.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>Students Example</title>
</head>
<body>
<form method = "" action = "">
<?php
echo form_open('Stud_controller/add_student');
echo form_label('Roll No.');
echo form_input(array('id'=>'roll_no','name'=>'roll_no'));
echo "<br/>";
echo form_label('Name');
echo form_input(array('id'=>'name','name'=>'name'));
echo "<br/>";
echo form_submit(array('id'=>'submit','value'=>'Add'));
echo form_close();
?>
</form>
</body>
</html>
Adlı bir görünüm dosyası oluşturun Stud_edit.php ve içine kaydet application/views/Stud_edit.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>Students Example</title>
</head>
<body>
<form method = "" action = "">
<?php
echo form_open('Stud_controller/update_student');
echo form_hidden('old_roll_no',$old_roll_no);
echo form_label('Roll No.');
echo form_input(array('id'⇒'roll_no',
'name'⇒'roll_no','value'⇒$records[0]→roll_no)); echo " "; echo form_label('Name'); echo form_input(array('id'⇒'name','name'⇒'name', 'value'⇒$records[0]→name));
echo "
";
echo form_submit(array('id'⇒'sub mit','value'⇒'Edit'));
echo form_close();
?>
</form>
</body>
</html>
Adlı bir görünüm dosyası oluşturun Stud_view.php ve içine kaydet application/views/Stud_view.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>Students Example</title>
</head>
<body>
<a href = "<?php echo base_url(); ?>
index.php/stud/add_view">Add</a>
<table border = "1">
<?php
$i = 1; echo "<tr>"; echo "<td>Sr#</td>"; echo "<td>Roll No.</td>"; echo "<td>Name</td>"; echo "<td>Edit</td>"; echo "<td>Delete</td>"; echo "<tr>"; foreach($records as $r) { echo "<tr>"; echo "<td>".$i++."</td>";
echo "<td>".$r->roll_no."</td>"; echo "<td>".$r->name."</td>";
echo "<td><a href = '".base_url()."index.php/stud/edit/"
.$r->roll_no."'>Edit</a></td>"; echo "<td><a href = '".base_url()."index.php/stud/delete/" .$r->roll_no."'>Delete</a></td>";
echo "<tr>";
}
?>
</table>
</body>
</html>
Yol dosyasında aşağıdaki değişikliği yapın application/config/routes.php ve aşağıdaki satırı dosyanın sonuna ekleyin.
$route['stud'] = "Stud_controller"; $route['stud/add'] = 'Stud_controller/add_student';
$route['stud/add_view'] = 'Stud_controller/add_student_view'; $route['stud/edit/(\d+)'] = 'Stud_controller/update_student_view/$1'; $route['stud/delete/(\d+)'] = 'Stud_controller/delete_student/$1';
Şimdi, tarayıcıda aşağıdaki URL'yi ziyaret ederek bu örneği yürütelim. Siteniz.com'u URL'nizle değiştirin.
http://yoursite.com/index.php/stud
CodeIgniter çerçevesinin temel parçası kütüphaneleridir. Bir uygulama geliştirme hızını dolaylı olarak artıran zengin bir kitaplık kümesi sağlar. Sistem kitaplığı sistemde / kitaplıklarda bulunur. Tek yapmamız gereken, kullanmak istediğimiz kütüphaneyi yüklemek. Kitaplık aşağıda gösterildiği gibi yüklenebilir -
$this->load->library('class name');
Nerede class nameyüklemek istediğimiz kütüphanenin adıdır. Birden fazla kitaplık yüklemek istiyorsak, bir diziyi argüman olarak basitçe iletebiliriz.library() aşağıda gösterildiği gibi işlev -
$this->load->library(array('email', 'table'));
Kütüphane Sınıfları
Kütüphane sınıfları şurada bulunur: system/libraries. Her sınıfın, gelişen çalışmayı basitleştirmek için çeşitli işlevleri vardır. Aşağıdaki tablo, kütüphane sınıfının isimlerini ve açıklamasını göstermektedir.
SN | Kütüphane Sınıfı ve Tanımı |
---|---|
1 | Benchmarking Class Kıyaslama sınıfı her zaman etkindir ve herhangi iki işaretli nokta arasındaki zaman farkının hesaplanmasını sağlar. |
2 | Caching Class Bu sınıf, sayfa hızına hızlı bir şekilde erişmek için sayfaları önbelleğe alacaktır. |
3 | Calendaring Class Bu sınıfı kullanarak dinamik olarak takvimler oluşturabilirsiniz. |
4 | Shopping Cart Class Bu sınıfı kullanarak, Alışveriş Sepetinden ürün ekleyebilir veya çıkarabilirsiniz. Öğeler oturumda kaydedilir ve kullanıcı siteye göz atana kadar aktif kalır. |
5 | Config Class Bu sınıf kullanılarak konfigürasyon tercihleri alınabilir. Bu sınıf otomatik olarak başlatılır. |
6 | Email Class Bu sınıf, e-posta gönderme veya yanıtlama gibi e-postayla ilgili işlevler sağlar. |
7 | Encryption Class Bu sınıf, iki yönlü veri şifreleme işlevi sağlar. |
8 | File Uploading Class Bu sınıf, dosya yüklemeyle ilgili işlevler sağlar. Yüklenecek dosya türü, dosyaların boyutu vb. Gibi çeşitli tercihler belirleyebilirsiniz. |
9 | Form Validation Class Bu sınıf, formu doğrulamak için çeşitli işlevler sağlar. |
10 | FTP Class Bu sınıf, sunucuyu kaldırmak için dosya aktarma, sunucudaki dosyaları taşıma, yeniden adlandırma veya silme gibi FTP ile ilgili çeşitli işlevler sağlar. |
11 | Image Manipulation Class Yeniden boyutlandırma, küçük resim oluşturma, kırpma, döndürme, filigranlama gibi görüntünün manipülasyonu bu sınıf yardımıyla yapılabilir. |
12 | Input Class Bu sınıf, güvenlik nedeniyle giriş verilerini önceden işler. |
13 | Language Class Bu sınıf uluslararasılaşma için kullanılır. |
14 | Loader Class Bu sınıf, View files, Drivers, Helpers, Models vb. Öğeleri yükler. |
15 | Migrations Class Bu sınıf, veritabanı geçişleriyle ilgili işlevler sağlar. |
16 | Output Class Bu sınıf, çıktıyı tarayıcıya gönderir ve ayrıca bu web sayfasını önbelleğe alır. |
17 | Pagination Class Bu sınıf, web sayfasına sayfalandırma işlevleri ekler. |
18 | Template Parser Class Şablon Ayrıştırıcı Sınıfı, görünüm dosyalarınızda bulunan sözde değişkenler için basit metin ikamesi gerçekleştirebilir. Basit değişkenleri veya değişken etiket çiftlerini ayrıştırabilir. |
19 | Security Class Bu sınıf, XSS Filtreleme, CSRF vb. Gibi güvenlikle ilgili işlevleri içerir. |
20 | Session Library Bu sınıf, uygulamanızın oturumunu sürdürmek için işlevler sağlar. |
21 | HTML Table Bu sınıf, dizi veya veritabanı sonuçlarından otomatik olarak HTML tabloları oluşturmak için kullanılır. |
22 | Trackback Class Geri İzleme Sınıfı, Geri İzleme verilerini göndermenizi ve almanızı sağlayan işlevler sağlar. |
23 | Typography Class Tipografi Sınıfı, metni biçimlendirmeye yardımcı olan yöntemler sağlar. |
24 | Unit Testing Class Bu sınıf, uygulamanızı birim test etmek ve sonucu oluşturmak için işlevler sağlar. |
25 | URI Class URI Sınıfı, URI dizelerinizden bilgi almanıza yardımcı olan yöntemler sağlar. URI yönlendirmesini kullanırsanız, yeniden yönlendirilen segmentler hakkında bilgi de alabilirsiniz. |
26 | User Agent Class Kullanıcı Aracısı Sınıfı, sitenizi ziyaret eden tarayıcı, mobil cihaz veya robot hakkındaki bilgileri tanımlamaya yardımcı olan işlevler sağlar. Ek olarak, yönlendiren bilgilerinin yanı sıra dil ve desteklenen karakter seti bilgilerini de alabilirsiniz. |
27 | XML-RPC and XML-RPC Server Classes CodeIgniter'in XML-RPC sınıfları, istekleri başka bir sunucuya göndermenize veya istekleri almak için kendi XML-RPC sunucunuzu kurmanıza izin verir. |
28 | Zip Encoding Class Bu sınıf, verilerinizin zip arşivlerini oluşturmak için kullanılır. |
Kitaplıklar Oluşturma
CodeIgniter, içinde bulabileceğiniz zengin kitaplık setine sahiptir. system/libraries ancak CodeIgniter yalnızca sistem kitaplıkları ile sınırlı değildir, kendi kitaplıklarınızı da oluşturabilirsiniz. application/librariesKlasör. Kitaplıkları üç şekilde oluşturabilirsiniz.
- Yeni kitaplık oluştur
- Yerel kitaplığı genişletin
- Yerel kitaplığı değiştirin
Yeni Kitaplık Oluşturun
Yeni kütüphane oluştururken şu hususlar akılda tutulmalıdır:
- Dosyanın adı büyük harfle başlamalıdır, örneğin Mylibrary.php
- Sınıf adı büyük harfle başlamalıdır, örneğin sınıf Mylibrary
- Sınıfın adı ve dosyanın adı eşleşmelidir.
Mylibrary.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Mylibrary {
public function some_function() {
}
}
/* End of file Mylibrary.php */
Loading the Custom Library
Yukarıdaki kitaplık, denetleyicinizde aşağıdaki satırı çalıştırarak yüklenebilir.
$this->load->library(‘mylibrary’);
Mylibrary, kütüphanenizin adıdır ve onu hem küçük hem de büyük harflerle yazabilirsiniz. Kütüphane adını “.php” uzantısı olmadan kullanın. Kitaplığı yükledikten sonra, aşağıda gösterildiği gibi o sınıfın işlevini de çağırabilirsiniz.
$this->mylibrary->some_function();
Yerel Kitaplığı Genişletin
Bazen CodeIgniter tarafından sağlanan kitaplığa kendi işlevselliğinizi eklemeniz gerekebilir. CodeIgniter, yerel kitaplığı genişletebileceğiniz ve kendi işlevlerinizi ekleyebileceğiniz kolaylık sağlar. Bunu başarmak için yerel kütüphane sınıfının sınıfını genişletmelisiniz. Örneğin, E-posta kitaplığını genişletmek istiyorsanız, aşağıda gösterildiği gibi yapılabilir -
Class MY_Email extends CI_Email {
}
Burada, yukarıdaki örnekte, MY_Email sınıfı yerel kitaplığın CI_Email e-posta sınıfını genişletiyor. Bu kitaplık, e-posta kitaplığını yüklemenin standart yolu ile yüklenebilir. Yukarıdaki kodu My_Email.php dosyasına kaydedin
Yerel Kitaplığı Değiştirin
Bazı durumlarda, yerel kitaplığı çalıştığı şekilde kullanmak istemezsiniz ve kendi yönteminizle değiştirmek istersiniz. Bu, yerel kitaplığı değiştirerek yapılabilir. Bunu başarmak için, yerel kitaplıkta adlandırıldığı gibi aynı sınıf adını vermeniz yeterlidir. Örneğin, değiştirmek istiyorsanızEmail classardından kodu aşağıda gösterildiği gibi kullanın. Dosya adınızı şununla kaydedin:Email.php ve bir sınıf adı verin CI_Email.
Email.php
Class CI_Email {
}
Çoğu zaman uygulamayı kullanırken hatalarla karşılaşırız. Hataların düzgün işlenmemesi kullanıcılar için çok can sıkıcıdır. CodeIgniter, kolay bir hata işleme mekanizması sağlar.
Hata mesajları geliştirme aşamasında kolaylıkla çözülebileceğinden, mesajların uygulama üretim modu yerine geliştirme modundayken görüntülenmesini istersiniz.
Aşağıdaki satırdan aşağıdaki satır değiştirilerek uygulamanızın ortamı değiştirilebilir. index.phpdosya. Bu herhangi bir şeye ayarlanabilir, ancak normalde bu amaç için kullanılan üç değer (geliştirme, test, üretim) vardır.
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
Farklı ortamlar, farklı hata raporlama seviyeleri gerektirecektir. Varsayılan olarak, geliştirme modu hataları görüntüler ve test ve canlı mod bunları gizler. CodeIgniter, hataları işlemek için aşağıda gösterildiği gibi üç işlev sağlar.
show_error() işlevi, hataları ekranın üst kısmında HTML biçiminde görüntüler.
Syntax |
show_error ( $ mesaj,$status_code, $heading = 'Bir Hata Karşılaşıldı' ) |
Parameters |
|
Return Type |
karışık |
show_404() Var olmayan bir sayfaya erişmeye çalışıyorsanız, işlevi hata görüntüler.
Syntax |
show_404 ( $ sayfa = '', $ log_error = DOĞRU ) |
Parameters |
|
Return Type |
geçersiz |
log_message()işlevi, günlük mesajlarını yazmak için kullanılır. Bu, özel mesajlar yazmak istediğinizde kullanışlıdır.
Syntax |
log_message ( $ düzey,$message, $php_error = YANLIŞ ) |
Parameters |
|
Return Type |
geçersiz |
Günlük kaydı etkinleştirilebilir application/config/config.phpdosya. Aşağıda, eşik değerini ayarlayabileceğiniz config.php dosyasının ekran görüntüsü verilmiştir.
/*
|--------------------------------------------------------------------------------
| Error Logging Threshold
|--------------------------------------------------------------------------------
| You can enable error logging by setting a threshold over zero. The
| threshold determines what gets logged. Threshold options are:
|
| 0 = Disable logging, Error logging TURNED OFF
| 1 = Error Message (including PHP errors)
| 2 = Debug Message
| 3 = Informational Messages
| 4 = All Messages
|
| You can also pass an array with threshold levels to show individual error types
|
| array(2) = Debug Message, without Error Messages
| For a live site you'll usually only enable Errors (1) to be logged otherwise
| your log files will fill up very fast.
|
*/
$config['log_threshold'] = 0;
Günlük mesajlarını şurada bulabilirsiniz: application/log/. Günlük dosyalarını etkinleştirmeden önce bu dizinin yazılabilir olduğundan emin olun.
Hata mesajları için çeşitli şablonlar şurada bulunabilir: application/views/errors/cli veya application/views/errors/html.
Dosya Yükleme sınıfını kullanarak dosya yükleyebiliriz ve ayrıca yüklenecek dosyanın türünü ve boyutunu sınırlayabiliriz. CodeIgniter'da dosya yükleme sürecini anlamak için verilen örnekte gösterilen adımları izleyin.
Misal
Aşağıdaki kodu kopyalayın ve şurada saklayın: application/view/Upload_form.php.
<html>
<head>
<title>Upload Form</title>
</head>
<body>
<?php echo $error;?>
<?php echo form_open_multipart('upload/do_upload');?>
<form action = "" method = "">
<input type = "file" name = "userfile" size = "20" />
<br /><br />
<input type = "submit" value = "upload" />
</form>
</body>
</html>
Aşağıda verilen kodu kopyalayın ve şurada saklayın: application/view/Upload_success.php
<html>
<head>
<title>Upload Form</title>
</head>
<body>
<h3>Your file was successfully uploaded!</h3>
<ul>
<?phpforeach ($upload_data as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?phpendforeach; ?>
</ul>
<p><?php echo anchor('upload', 'Upload Another File!'); ?></p>
</body>
</html>
Aşağıda verilen kodu kopyalayın ve şurada saklayın: application/controllers/Upload.php. Oluşturmak "uploadsCodeIgniter'ın kökündeki ”klasörü, yani uygulama klasörünün üst dizininde.
<?php
class Upload extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper(array('form', 'url')); } public function index() { $this->load->view('upload_form', array('error' => ' ' ));
}
public function do_upload() {
$config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 100; $config['max_width'] = 1024;
$config['max_height'] = 768; $this->load->library('upload', $config); if ( ! $this->upload->do_upload('userfile')) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else {
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
}
?>
Yol dosyasında aşağıdaki değişikliği yapın application/config/routes.php ve aşağıdaki satırı dosyanın sonuna ekleyin.
$route['upload'] = 'Upload';
Şimdi tarayıcıda aşağıdaki URL'yi ziyaret ederek bu örneği yürütelim. Siteniz.com'u URL'nizle değiştirin.
http://yoursite.com/index.php/upload
Aşağıdaki ekranı üretecektir -
Bir dosyayı başarıyla yükledikten sonra, aşağıdaki ekranı göreceksiniz -
CodeIgniter'da e-posta göndermek çok daha kolay. Ayrıca CodeIgniter'da e-posta ile ilgili tercihleri yapılandırırsınız. CodeIgniter, e-posta göndermek için aşağıdaki özellikleri sağlar -
- Çoklu Protokoller - Mail, Sendmail ve SMTP
- SMTP için TLS ve SSL Şifreleme
- Birden çok alıcı
- CC ve BCC'ler
- HTML veya Düz metin e-posta
- Attachments
- Kelime kaydırma
- Priorities
- BCC Toplu Modu, büyük e-posta listelerinin küçük BCC gruplarına bölünmesini sağlar.
- E-posta Hata Ayıklama araçları
E-posta sınıfı, e-posta gönderme işini basitleştirmek için aşağıdaki işlevlere sahiptir.
SN | Sözdizimi | Parametreler | Dönüş | Dönüş Tipi |
---|---|---|---|---|
1 | from ( $ from [, $ name = '' [, $ return_path = NULL ]]) | $from( string ) - "Kimden" e-posta adresi $name( string ) - "Kimden" görünen adı $return_path( string ) - Teslim edilmeyen e-postayı yönlendirmek için isteğe bağlı e-posta adresi |
CI_Email örneği (yöntem zinciri) | CI_Email |
2 | yanıt_to ( $ yanıt [, $ isim = '' ]) | $replyto( string ) - Cevaplar için e-posta adresi $name( string ) - Yanıt e-posta adresi için görünen ad |
CI_Email örneği (yöntem zinciri) | CI_Email |
2 | to ( $ - ) | $to( karışık ) - Virgülle ayrılmış dizge veya bir dizi e-posta adresi |
CI_Email örneği (yöntem zinciri) | CI_Email |
3 | cc (cc $ ) | $cc( karışık ) - Virgülle ayrılmış dizge veya bir dizi e-posta adresi |
CI_Email örneği (yöntem zinciri) | CI_Email |
4 | bcc ( $ bcc [, $ limit = '' ]) | $bcc( karışık ) - Virgülle ayrılmış dizge veya bir dizi e-posta adresi $limit( int ) - Toplu iş başına gönderilecek maksimum e-posta sayısı |
CI_Email örneği (yöntem zinciri) | CI_Email |
5 | konu ( $ konu ) | $subject( string ) - E-posta konu satırı |
CI_Email örneği (yöntem zinciri) | CI_Email |
6 | mesaj ( $ body ) | $body( string ) - E-posta mesaj gövdesi |
CI_Email örneği (yöntem zinciri) | CI_Email |
7 | set_alt_message ( $ str ) | $str( string ) - Alternatif e-posta mesajı gövdesi |
CI_Email örneği (yöntem zinciri) | CI_Email |
8 | set_header ( $ başlık, $ değer ) | $header( string ) - Başlık adı $value( string ) - Başlık değeri |
CI_Email örneği (yöntem zinciri) | CI_Email |
9 | temizle ([ $ clear_attachments = FALSE ]) | $clear_attachments( bool ) - Eklerin temizlenip temizlenmemesi |
CI_Email örneği (yöntem zinciri) | CI_Email |
10 | gönder ([ $ auto_clear = TRUE ]) | $auto_clear( bool ) - Mesaj verilerinin otomatik olarak temizlenip temizlenmeyeceği |
CI_Email örneği (yöntem zinciri) | CI_Email |
11 | ekle ($ dosya adı [, $disposition = ''[, $newname = NULL [, $ mime = '']]]) | $filename( string ) - Dosya adı $disposition( string ) - ekin 'düzenlenmesi'. Çoğu e-posta istemcisi, burada kullanılan MIME belirtiminden bağımsız olarak kendi kararını verir. iana $newname( string ) - E-postada kullanılacak özel dosya adı $mime( string ) - Kullanılacak MIME türü (arabelleğe alınmış veriler için kullanışlıdır) |
CI_Email örneği (yöntem zinciri) | CI_Email |
12 | attachment_cid ( $ dosya adı ) | $filename( string ) - Mevcut ek dosya adı |
Ek İçerik Kimliği veya Bulunmazsa FALSE | dizi |
Bir e-posta göndermek
CodeIgniter kullanarak bir e-posta göndermek için, önce aşağıdakileri kullanarak e-posta kitaplığını yüklemeniz gerekir -
$this->load->library('email');
Kitaplığı yükledikten sonra, bir e-posta göndermek için gerekli öğeleri ayarlamak için aşağıdaki işlevleri gerçekleştirmeniz yeterlidir. from() işlev ayarlamak için kullanılır - e-postanın nereden gönderildiği ve to()işlev kullanılır - e-postanın kime gönderildiği. subject() ve message() işlevi, e-postanın konusunu ve mesajını ayarlamak için kullanılır.
$this->email->from('[email protected]', 'Your Name'); $this->email->to('[email protected]');
$this->email->subject('Email Test'); $this->email->message('Testing the email class.');
Bundan sonra, send() bir e-posta göndermek için aşağıda gösterildiği gibi işlev görür.
$this->email->send();
Misal
Bir denetleyici dosyası oluşturun Email_controller.php ve içine kaydet application/controller/Email_controller.php.
<?php
class Email_controller extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('session');
$this->load->helper('form'); } public function index() { $this->load->helper('form');
$this->load->view('email_form'); } public function send_mail() { $from_email = "[email protected]";
$to_email = $this->input->post('email');
//Load email library
$this->load->library('email'); $this->email->from($from_email, 'Your Name'); $this->email->to($to_email); $this->email->subject('Email Test');
$this->email->message('Testing the email class.'); //Send mail if($this->email->send())
$this->session->set_flashdata("email_sent","Email sent successfully."); else $this->session->set_flashdata("email_sent","Error in sending Email.");
$this->load->view('email_form');
}
}
?>
Adlı bir görünüm dosyası oluşturun email_form.php ve kaydet application/views/email_form.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter Email Example</title>
</head>
<body>
<?php
echo $this->session->flashdata('email_sent');
echo form_open('/Email_controller/send_mail');
?>
<input type = "email" name = "email" required />
<input type = "submit" value = "SEND MAIL">
<?php
echo form_close();
?>
</body>
</html>
Değişiklikleri yapın routes.php dosyasında application/config/routes.php ve dosyanın sonuna aşağıdaki satırı ekleyin.
$route['email'] = 'Email_Controller';
Aşağıdaki bağlantıyı ziyaret ederek yukarıdaki örneği yürütün. Siteniz.com'u sitenizin URL'si ile değiştirin.
http://yoursite.com/index.php/email
Doğrulama, web uygulaması oluştururken önemli bir süreçtir. Aldığımız verilerin saklanması veya işlenmesi için uygun ve geçerli olmasını sağlar. CodeIgniter bu görevi çok kolaylaştırdı. Bu süreci basit bir örnekle anlayalım.
Misal
Bir görünüm dosyası oluşturun myform.php ve aşağıdaki kodu içine kaydedin application/views/myform.php. Bu sayfa, kullanıcının adını gönderebileceği bir form gösterecek ve bu sayfayı gönderirken boş kalmaması için doğrulayacağız.
<html>
<head>
<title>My Form</title>
</head>
<body>
<form action = "" method = "">
<?php echo validation_errors(); ?>
<?php echo form_open('form'); ?>
<h5>Name</h5>
<input type = "text" name = "name" value = "" size = "50" />
<div><input type = "submit" value = "Submit" /></div>
</form>
</body>
</html>
Bir görünüm dosyası oluşturun formsuccess.php ve içine kaydet application/views/formsuccess.php. Form başarıyla doğrulanırsa bu sayfa görüntülenecektir.
<html>
<head>
<title>My Form</title>
</head>
<body>
<h3>Your form was successfully submitted!</h3>
<p><?php echo anchor('form', 'Try it again!'); ?></p>
</body>
</html>
Bir denetleyici dosyası oluşturun Form.php ve içine kaydet application/controller/Form.php. Bu form, uygun şekilde doğrulanmazsa veya adresine yeniden yönlendirilmezse hataları gösterir.formsuccess.php sayfa.
<?php
class Form extends CI_Controller {
public function index() {
/* Load form helper */
$this->load->helper(array('form'));
/* Load form validation library */
$this->load->library('form_validation'); /* Set validation rule for name field in the form */ $this->form_validation->set_rules('name', 'Name', 'required');
if ($this->form_validation->run() == FALSE) { $this->load->view('myform');
}
else {
$this->load->view('formsuccess');
}
}
}
?>
Aşağıdaki satırı ekleyin application/config/routes.php.
$route['validation'] = 'Form';
Tarayıcıda aşağıdaki URL'yi ziyaret ederek bu örneği yürütelim. Bu URL, sitenize bağlı olarak farklı olabilir.
http://yoursite.com/index.php/validation
Aşağıdaki ekranı üretecektir -
Denetleyiciye bir doğrulama ekledik - Nameformu göndermeden önce gerekli alandır. Bu nedenle, ad alanına herhangi bir şey girmeden gönder düğmesine tıklarsanız, aşağıdaki ekranda gösterildiği gibi göndermeden önce adı girmeniz istenecektir.
İsmi başarıyla girdikten sonra, aşağıda gösterildiği gibi ekrana yönlendirileceksiniz.
Yukarıdaki örnekte, gerekli kural ayarını kullandık. CodeIgniter'da aşağıda açıklanan birçok kural vardır.
Doğrulama Kuralı Referansı
Aşağıda, kullanılabilecek tüm yerel kuralların bir listesi verilmiştir -
Kural | Parametre | Açıklama | Misal |
---|---|---|---|
required |
Hayır | Form öğesi boşsa FALSE döndürür. | |
matches |
Evet | Form öğesi parametredeki ile eşleşmezse FALSE döndürür. | [form_item] ile eşleşir |
regex_match |
Evet | Form öğesi normal ifadeyle eşleşmezse FALSE döndürür. | regex_match [/ regex /] |
differs |
Evet | Form öğesi parametredeki öğeden farklı değilse YANLIŞ döndürür. | farklılık [form_item] |
is_unique |
Evet | Form öğesi, parametrede tablo ve alan adı için benzersiz değilse YANLIŞ döndürür. Not - Bu kuralın çalışması için Query Builder'ın etkinleştirilmesi gerekir. | is_unique [table.field] |
min_length |
Evet | Form öğesi parametre değerinden kısaysa YANLIŞ döndürür. | min_length [3] |
max_length |
Evet | Form öğesi parametre değerinden uzunsa FALSE döndürür. | max_length [12] |
exact_length |
Evet | Form öğesi tam olarak parametre değeri değilse FALSE döndürür. | tam_uzunluk [8] |
greater_than |
Evet | Form öğesi parametre değerinden küçükse veya ona eşitse veya sayısal değilse YANLIŞ döndürür. | [8] den büyük |
greater_than_equal_to |
Evet | Form öğesi parametre değerinden küçükse veya sayısal değilse YANLIŞ döndürür. | great_than_equal_to [8] |
less_than |
Evet | Form öğesi parametre değerinden büyükse veya ona eşitse veya sayısal değilse YANLIŞ döndürür. | less_than [8] |
less_than_equal_to |
Evet | Form öğesi parametre değerinden büyükse veya sayısal değilse YANLIŞ döndürür. | less_than_equal_to [8] |
in_list |
Evet | Form öğesi önceden belirlenmiş bir listede değilse YANLIŞ döndürür. | in_list [kırmızı, mavi, yeşil] |
alpha |
Hayır | Form öğesi alfabetik karakterlerden başka bir şey içeriyorsa YANLIŞ döndürür. | |
alpha_numeric |
Hayır | Form öğesi alfasayısal karakterler dışında bir şey içeriyorsa YANLIŞ döndürür. | |
alpha_numeric_spaces |
Hayır | Form öğesi alfasayısal karakterler veya boşluklardan başka bir şey içeriyorsa YANLIŞ değerini döndürür. Başlangıçta veya sonda boşlukları önlemek için trim sonrası kullanılmalıdır. | |
alpha_dash |
Hayır | Form öğesi alfasayısal karakterler, alt çizgiler veya kısa çizgiler dışında herhangi bir şey içeriyorsa YANLIŞ değerini döndürür. | |
numeric |
Hayır | Form öğesi sayısal karakterler dışında bir şey içeriyorsa YANLIŞ döndürür. | |
integer |
Hayır | Form öğesi tam sayı dışında bir şey içeriyorsa YANLIŞ döndürür. | |
decimal |
Hayır | Form öğesi ondalık sayıdan başka bir şey içeriyorsa YANLIŞ döndürür. | |
is_natural |
Hayır | Form öğesi doğal sayıdan başka bir şey içeriyorsa YANLIŞ döndürür - 0, 1, 2, 3 vb. | |
is_natural_no_zero |
Hayır | Form öğesi doğal sayıdan başka bir şey içeriyor ancak sıfır - 1, 2, 3 vb. İçermiyorsa YANLIŞ döndürür. | |
valid_url |
Hayır | Form öğesi geçerli bir URL içermiyorsa YANLIŞ döndürür. | |
valid_email |
Hayır | Form öğesi geçerli bir e-posta adresi içermiyorsa YANLIŞ döndürür. | |
valid_emails |
Hayır | Virgülle ayrılmış bir listede sağlanan herhangi bir değer geçerli bir e-posta değilse YANLIŞ döndürür. | |
valid_ip |
Hayır | Sağlanan IP geçerli değilse FALSE döndürür. Bir IP biçimi belirtmek için isteğe bağlı bir "ipv4" veya "ipv6" parametresini kabul eder. | |
valid_base64 |
Hayır | Sağlanan dizge geçerli Base64 karakterlerinden başka bir şey içeriyorsa YANLIŞ döndürür. |
Web siteleri oluştururken, genellikle kullanıcının faaliyetlerini ve durumunu izlememiz gerekir ve bu amaçla kullanmalıyız session. CodeIgniter, bu amaç için oturum sınıfına sahiptir.
Bir Oturumu Başlatma
Oturum verileri site aracılığıyla küresel olarak mevcuttur, ancak bu verileri kullanmak için önce oturumu başlatmamız gerekir. Bunu yapıcıda aşağıdaki satırı çalıştırarak yapabiliriz.
$this->load->library('session');
Oturum kitaplığını yükledikten sonra, oturum nesnesini aşağıda gösterildiği gibi kullanabilirsiniz.
$this->session
Oturum Verileri Ekleyin
PHP'de basitçe $_SESSION Aşağıda gösterildiği gibi oturumdaki herhangi bir veriyi ayarlamak için dizi.
$_SESSION[‘key’] = value;
Nerede 'key'dizinin anahtarıdır ve value eşittir işaretinin sağ tarafında atanır.
Aynı şey aşağıda gösterildiği gibi CodeIgniter'da da yapılabilir.
$this->session->set_userdata('some_name', 'some_value');
set_userdata()fonksiyon iki argüman alır. İlk argüman,some_name, altında oturum değişkeninin adıdır, some_value saklanacak.
set_userdata() işlevi, aşağıda gösterildiği gibi değerleri depolamak için diziyi iletebileceğiniz başka bir sözdizimini de destekler.
$newdata = array(
'username' => 'johndoe',
'email' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Oturum Verilerini Kaldır
PHP'de, oturumda depolanan verileri, unset() aşağıda gösterildiği gibi işlev görür.
unset($_SESSION[‘some_name’]);
CodeIgniter'da oturum verilerini kaldırmak, aşağıda gösterildiği gibi çok basittir. Aşağıdaki versiyonuunset_userdata() işlevi oturumdan yalnızca bir değişkeni kaldırır.
$this->session->unset_userdata('some_name');
Oturumdan daha fazla değer çıkarmak veya bir dizinin tamamını kaldırmak istiyorsanız aşağıdaki sürümü kullanabilirsiniz. unset_userdata() işlevi.
$this->session->unset_userdata($array_items);
Oturum Verilerini Al
Verileri oturumda ayarladıktan sonra, bu verileri de aşağıda gösterildiği gibi alabiliriz. Userdata()işlevi bu amaçla kullanılacaktır. Bu işlev geri dönecekNULL erişmeye çalıştığınız veriler mevcut değilse.
$name = $this->session->userdata('name');
Misal
Adlı bir denetleyici sınıfı oluşturun Session_controller.php ve içine kaydet application/controller/Session_controller.php.
<?php
class Session_controller extends CI_Controller {
public function index() {
//loading session library
$this->load->library('session'); //adding data to session $this->session->set_userdata('name','virat');
$this->load->view('session_view'); } public function unset_session_data() { //loading session library $this->load->library('session');
//removing session data
$this->session->unset_userdata('name'); $this->load->view('session_view');
}
}
?>
Adlı bir görünüm dosyası oluşturun session_view.php ve içine kaydet application/views/session_view.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter Session Example</title>
</head>
<body>
Welcome <?php echo $this->session->userdata('name'); ?>
<br>
<a href = 'http://localhost:85/CodeIgniter-3.0.1/CodeIgniter3.0.1/index.php/sessionex/unset'>
Click Here</a> to unset session data.
</body>
</html>
Değişiklikleri yapın routes.php dosyasında application/config/routes.php ve dosyanın sonuna aşağıdaki satırı ekleyin.
$route['sessionex'] = 'Session_Controller';
Aşağıdaki adresi kullanarak yukarıdaki örneği yürütün. Değiştiryoursite.com sitenizin URL'si ile.
http://yoursite.com/index.php/sessionexWeb uygulaması oluştururken bazı verileri sadece bir defaya mahsus depolamamız gerekiyor ve sonrasında bu verileri kaldırmak istiyoruz. Örneğin, bir hata mesajı veya bilgi mesajı görüntülemek için. PHP'de bunu manuel olarak yapmak zorundayız ancak CodeIgniter bu işi bizim için basitleştirdi. CodeIgniter'da, flashdata yalnızca bir sonraki isteğe kadar kullanılabilir olacak ve otomatik olarak silinecektir.
Flashdata ekle
Flash verilerini aşağıda gösterildiği gibi kolayca saklayabiliriz.
$this->session->mark_as_flash('item');
mark_as_flash()Bu amaç için depolanacak değerin yalnızca bir bağımsız değişkenini alan işlev kullanılır. Birden çok değeri saklamak için bir dizi de geçirebiliriz.
set_flashdata()aşağıda gösterildiği gibi ad ve değer olmak üzere iki bağımsız değişken alan işlev de kullanılabilir. Ayrıca bir dizi de geçebiliriz.
$this->session->set_flashdata('item','value');
Flash verilerini al
Flashdata, aşağıda gösterildiği gibi getirilecek öğenin bir bağımsız değişkenini alan flashdata () işlevi kullanılarak alınabilir. flashdata () işlevi, başka hiçbir veriyi değil, yalnızca flash verilerini aldığınızdan emin olmanızı sağlar.
$this->session->flashdata('item');
Herhangi bir argüman iletmezseniz, aynı işleve sahip bir dizi elde edebilirsiniz.
Misal
Adlı bir sınıf oluşturun FlashData_Controller.php ve kaydet application/controller/FlashData_Controller.php.
<?php
class FlashData_Controller extends CI_Controller {
public function index() {
//Load session library
$this->load->library('session');
//redirect to home page
$this->load->view('flashdata_home'); } public function add() { //Load session library $this->load->library('session');
$this->load->helper('url'); //add flash data $this->session->set_flashdata('item','item-value');
//redirect to home page
redirect('flashdata');
}
}
?>
Adlı bir görünüm dosyası oluşturun flashdata_home.php ve içine kaydet application/views/ flashdata_home.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter Flashdata Example</title>
</head>
<body>
Flash Data Example
<h2><?php echo $this->session->flashdata('item'); ?></h2>
<a href = 'flashdata/add'>Click Here</a> to add flash data.
</body>
</html>
Değişiklikleri yapın routes.php dosyasında application/config/routes.php ve dosyanın sonuna aşağıdaki satırı ekleyin.
$route['flashdata'] = 'FlashData_Controller';
$route['flashdata/add'] = 'FlashData_Controller/add';
Aşağıdaki bağlantıyı ziyaret ederek yukarıdaki örneği yürütün. Siteniz.com'u sitenizin URL'si ile değiştirin.
http://yoursite.com/index.php/flashdata
Yukarıdaki URL'yi ziyaret ettikten sonra, aşağıda gösterildiği gibi bir ekran göreceksiniz.
Tıklamak "Click Here”Bağlantısını tıklayın ve aşağıda gösterildiği gibi bir ekran göreceksiniz. Burada, bu ekranda flash veri değişkeninin bir değerini göreceksiniz. Sayfayı tekrar yenileyin, yukarıdaki gibi bir ekran göreceksiniz ve flash veri değişkeni otomatik olarak kaldırılacaktır.
Belirli bir süre sonra oturumda depolanan verileri kaldırmak istediğiniz bazı durumlarda, bu şu şekilde yapılabilir: tempdata CodeIgniter'da işlevsellik.
Tempdata Ekle
Veri eklemek için tempdatakullanmalıyız mark_as_tempdata()işlevi. Bu işlev, iki bağımsız değişken öğesi veya depolanacak öğe alır.tempdata ve bu öğeler için son kullanma süreleri aşağıda gösterildiği gibidir.
// 'item' will be erased after 300 seconds(5 minutes)
$this->session->mark_as_temp('item',300);
Birden çok veriyi depolamak için bir dizi de iletebilirsiniz. Aşağıda saklanan tüm öğelerin süresi 300 saniye sonra dolacaktır.
$this->session->mark_as_temp(array('item','item2'),300);
Ayrıca her öğe için aşağıda gösterildiği gibi farklı son kullanma süresi de ayarlayabilirsiniz.
// 'item' will be erased after 300 seconds, while 'item2'
// will do so after only 240 seconds
$this->session->mark_as_temp(array(
'item'=>300,
'item2'=>240
));
Tempdata'yı Al
Kullanarak tempdata alabiliriz tempdata()işlevi. Bu işlev, başka herhangi bir veriyi değil, yalnızca geçici verileri aldığınızı garanti eder. Geçici verilerin nasıl alınacağını görmek için aşağıda verilen örneğe bakın.tempdata() işlevi, getirilecek öğenin bir bağımsız değişkenini alacaktır.
$this->session->tempdata('item');
Bağımsız değişkeni atlarsanız, mevcut tüm geçici verileri alabilirsiniz.
Tempdata'yı Kaldır
Tempdata, sona erme süresinden sonra otomatik olarak kaldırılır, ancak bundan önce tempdata'yı kaldırmak isterseniz, aşağıda gösterildiği gibi unset_tempdata() kaldırılacak öğenin bir bağımsız değişkenini alan işlev.
$this->session->unset_tempdata('item');
Misal
Adlı bir sınıf oluşturun Tempdata_controller.php ve içine kaydet application/controller/Tempdata_controller.php.
<?php
class Tempdata_controller extends CI_Controller {
public function index() {
$this->load->library('session'); $this->load->view('tempdata_view');
}
public function add() {
$this->load->library('session'); $this->load->helper('url');
//tempdata will be removed after 5 seconds
$this->session->set_tempdata('item','item-value',5);
redirect('tempdata');
}
}
?>
Adlı bir dosya oluşturun tempdata_view.php ve içine kaydet application/views/tempdata_view.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter Tempdata Example</title>
</head>
<body>
Temp Data Example
<h2><?php echo $this->session->tempdata('item'); ?></h2>
<a href = 'tempdata/add'>Click Here</a> to add temp data.
</body>
</html>
Değişiklikleri yapın routes.php application / config / route.php dosyasında bulunun ve dosyanın sonuna aşağıdaki satırı ekleyin.
$route['tempdata'] = "Tempdata_controller"; $route['tempdata/add'] = "Tempdata_controller/add";
Aşağıdaki bağlantıyı ziyaret ederek yukarıdaki örneği yürütün. Siteniz.com'u sitenizin URL'si ile değiştirin.
http://yoursite.com/index.php/tempdata
Yukarıdaki URL'yi ziyaret ettikten sonra, aşağıda gösterildiği gibi bir ekran göreceksiniz.
Tıklamak “Click Here” bağlantı ve aşağıda gösterildiği gibi bir ekran göreceksiniz.
Burada, bu ekranda geçici veri değişkeninin bir değerini göreceksiniz. Beş saniye sonra geçici veriyi ayarladığımız için aynı sayfayı beş saniye sonra tekrar yenileyin ve yukarıdaki gibi bir ekran göreceksiniz ve beş saniye sonra geçici veri değişkeni otomatik olarak silinecektir. Aynı sayfayı 5 saniyeden önce yenilerseniz, zaman dilimi bitmediği için geçici veriler kaldırılmayacaktır.
Bir Oturumu Yıkmak
PHP'de kullanıyoruz session_destroy() oturumu yok etmek için işlev görür ve CodeIgniter'da işlevi aşağıda gösterildiği gibi yok edebiliriz.
$this->session->sess_destroy();
Bu işlevi çağırdıktan sonra, tüm oturum verileri dahil flashdata ve tempdata kalıcı olarak silinecek ve geri alınamaz.
Çerez, web sunucusundan müşterinin bilgisayarında saklanmak üzere gönderilen küçük bir veri parçasıdır. CodeIgniter, tanımlama bilgisi yönetimi için "Tanımlama Yardımcısı" adlı bir yardımcıya sahiptir.
Syntax |
set_cookie ( $ ad [, $ değer = '' [, $ sona erme = '' [, $ alan = '' [, $ yol = '/' [, $ önek = '' [, $ güvenli = YANLIŞ [, $ htponly = YANLIŞ ]]]]]]]]) |
Parameters |
|
Return Type |
geçersiz |
İçinde set_cookie()fonksiyon, tüm değerleri iki yol kullanarak geçirebiliriz. İlk olarak, yalnızca dizi geçirilebilir ve ikinci şekilde, tek tek parametreler de aktarılabilir.
Syntax |
get_cookie ( $ dizin [, $ xss_clean = NULL ]]) |
Parameters |
|
Return |
Bulunmazsa çerez değeri veya NULL |
Return Type |
karışık |
get_cookie() işlevi, set_cookie () işlevi kullanılarak ayarlanan çerezi almak için kullanılır.
Syntax |
delete_cookie ( $ ad [, $ alan = '' [, $ yol = '/' [, $ önek = '' ]]]]) |
Parameters |
|
Return Type |
geçersiz |
delete_cookie() işlevi, çerezi () silmek için kullanılır.
Misal
Adlı bir denetleyici oluşturun Cookie_controller.php ve kaydet application/controller/Cookie_controller.php
<?php
class Cookie_controller extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->helper(array('cookie', 'url'));
}
public function index() {
set_cookie('cookie_name','cookie_value','3600');
$this->load->view('Cookie_view'); } public function display_cookie() { echo get_cookie('cookie_name'); $this->load->view('Cookie_view');
}
public function deletecookie() {
delete_cookie('cookie_name');
redirect('cookie/display');
}
}
?>
Adlı bir görünüm dosyası oluşturun Cookie_view.php ve kaydet application/views/Cookie_view.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter View Example</title>
</head>
<body>
<a href = 'display'>Click Here</a> to view the cookie.<br>
<a href = 'delete'>Click Here</a> to delete the cookie.
</body>
</html>
Yukarıdaki denetleyiciye yol eklemek için application / config / route.php içindeki route.php dosyasını değiştirin ve dosyanın sonuna aşağıdaki satırı ekleyin.
$route['cookie'] = "Cookie_controller"; $route['cookie/display'] = "Cookie_controller/display_cookie";
$route['cookie/delete'] = "Cookie_controller/deletecookie";
Bundan sonra, örneği yürütmek için tarayıcıda aşağıdaki URL'yi çalıştırabilirsiniz.
http://yoursite.com/index.php/cookie
Aşağıdaki ekran görüntüsünde gösterildiği gibi bir çıktı üretecektir.
CodeIgniter kitaplık işlevleri ve yardımcı işlevlerin kullanılmadan önce başlatılması gerekir, ancak başlatılması gerekmeyen bazı ortak işlevler vardır.
Bu ortak işlevler ve açıklamaları aşağıda verilmiştir.
Sözdizimi | is_php ( $ sürüm ) |
---|---|
Parametreler | $version( string ) - Sürüm numarası |
Dönüş | Çalışan PHP sürümü en az belirtilmişse DOĞRU, değilse YANLIŞ |
Dönüş Tipi | geçersiz |
Açıklama | Kullanılan PHP sürümünün sağlanan sürüm numarasından büyük olup olmadığını belirler. |
Sözdizimi | is_really_writable ( $ dosya ) |
---|---|
Parametreler | $file( string ) - Dosya yolu |
Dönüş | Yol yazılabilir ise DOĞRU, değilse YANLIŞ |
Dönüş Tipi | bool |
Açıklama | dosyanın yazılabilir olup olmadığını kontrol eder. |
Sözdizimi | config_item ( $ anahtar ) |
---|---|
Parametreler | $key( string ) - Yapılandırma öğesi anahtarı |
Dönüş | Bulunmazsa yapılandırma anahtarı değeri veya NULL |
Dönüş Tipi | karışık |
Açıklama | Bu işlev yapılandırma öğesini almak için kullanılır |
Sözdizimi | set_status_header ( $ kod [, $ metin = '' ]) |
---|---|
Parametreler | $code( int ) - HTTP Yanıtı durum kodu $text( string ) - Durum koduyla ayarlanacak özel bir mesaj |
Dönüş | |
Dönüş Tipi | geçersiz |
Açıklama | Bu işlev, bir sunucu durumu başlığını manuel olarak ayarlamanıza izin verir. |
Sözdizimi | remove_invisible_characters ( $ str [, $ url_encoded = TRUE ]) |
---|---|
Parametreler | $str( string ) - Girdi dizesi $url_encoded( bool ) - URL kodlu karakterlerin de kaldırılıp kaldırılmayacağı |
Dönüş | Sanitized string |
Dönüş Tipi | dizi |
Açıklama | Bu işlev, ASCII karakterleri arasına NULL karakterler eklemeyi engeller. |
Sözdizimi | html_escape ( $ var ) |
---|---|
Parametreler | $var( karışık ) - Çıkış yapılacak değişken (dize veya dizi) |
Dönüş | HTML çıkış karakterli dizeler |
Dönüş Tipi | karışık |
Açıklama | Bu işlev, yerel bir PHP htmlspecialchars () işlevi gibi davranır. |
Sözdizimi | get_mimes () |
---|---|
Dönüş | İlişkili bir dosya türleri dizisi |
Dönüş Tipi | dizi |
Açıklama | Bu işlev, application / config / mimes.php'den MIMEs dizisine bir başvuru döndürür . |
Sözdizimi | is_https () |
---|---|
Dönüş | Şu anda SSL üzerinden HTTP kullanılıyorsa DOĞRU, değilse YANLIŞ |
Dönüş Tipi | bool |
Açıklama | Güvenli (HTTPS) bir bağlantı kullanılırsa DOĞRU ve diğer durumlarda (HTTP olmayan istekler dahil) YANLIŞ döndürür. |
Sözdizimi | is_cli () |
---|---|
Dönüş | Şu anda CLI altında çalışıyorsa TRUE, aksi takdirde FALSE |
Dönüş Tipi | bool |
Açıklama | Uygulama komut satırı üzerinden çalıştırılırsa DOĞRU, değilse YANLIŞ döndürür. |
Sözdizimi | function_usable ( $ işlev_adı ) |
---|---|
Parametreler | $function_name( string ) - Fonksiyon adı |
Dönüş Tipi | bool |
Açıklama | Bir işlev varsa ve kullanılabilirse DOĞRU, aksi takdirde YANLIŞ döndürür. |
Aşağıda, yukarıdaki tüm işlevleri gösteren bir örnek verilmiştir.
Misal
Burada, yukarıdaki işlevleri kullanacağımız tek bir denetleyici oluşturduk. Aşağıdaki kodu kopyalayın ve şuraya kaydedin: application/controller/CommonFun_Controller.php.
<?php
class CommonFun_Controller extends CI_Controller {
public function index() {
set_status_header(200);
echo is_php('5.3')."<br>";
var_dump(is_really_writable('./Form.php'));
echo config_item('language')."<br>";
echo remove_invisible_characters('This is a test','UTF8')."<br>";
$str = '< This > is \' a " test & string';
echo html_escape($str)."<br>";
echo "is_https():".var_dump(is_https())."<br>";
echo "is_cli():".var_dump(is_cli())."<br>";
var_dump(function_usable('test'))."<br>";
echo "get_mimes():".print_r(get_mimes())."<br>";
}
public function test() {
echo "Test function";
}
}
?>
Değiştir routes.php Yukarıdaki denetleyici için yol eklemek ve dosyanın sonuna aşağıdaki satırı eklemek için application / config / route.php dosyasındaki dosya.
$route['commonfunctions'] = 'CommonFun_Controller';
Örneği yürütmek için tarayıcınızın adres çubuğuna aşağıdaki URL'yi yazın.
http://yoursite.com/index.php/commonfunctions
Bir sayfanın önbelleğe alınması, sayfa yükleme hızını artıracaktır. Sayfa önbelleğe alınmışsa, tam olarak oluşturulmuş durumunda saklanacaktır. Bir dahaki sefere, sunucu önbelleğe alınmış sayfa için bir istek aldığında, doğrudan istenen tarayıcıya gönderilecektir.
Önbelleğe alınan dosyalar şurada saklanır: application/cacheKlasör. Önbelleğe alma, sayfa bazında etkinleştirilebilir. Önbelleği etkinleştirirken, önbelleğe alınan klasörde kalması gereken zamanı ayarlamamız gerekir ve bu sürenin sonunda otomatik olarak silinecektir.
Önbelleğe Almayı Etkinleştir
Önbelleğe alma, denetleyicinin yöntemlerinden herhangi birinde aşağıdaki satırı çalıştırarak etkinleştirilebilir.
$this->output->cache($n);
Nerede $n sayısı minutes, sayfanın yenilemeler arasında önbelleğe alınmasını istiyorsunuz.
Önbelleğe Almayı Devre Dışı Bırak
Önbellek dosyası süresi dolduğunda silinir, ancak manuel olarak silmek istediğinizde devre dışı bırakmanız gerekir. Aşağıdaki satırı uygulayarak önbelleğe almayı devre dışı bırakabilirsiniz.
// Deletes cache for the currently requested URI
$this->output->delete_cache();
// Deletes cache for /foo/bar
$this->output->delete_cache('/foo/bar');
Misal
Adlı bir denetleyici oluşturun Cache_controller.php ve içine kaydet application/controller/Cache_controller.php
<?php
class Cache_controller extends CI_Controller {
public function index() {
$this->output->cache(1);
$this->load->view('test'); } public function delete_file_cache() { $this->output->delete_cache('cachecontroller');
}
}
?>
Adlı bir görünüm dosyası oluşturun test.php ve içine kaydet application/views/test.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter View Example</title>
</head>
<body>
CodeIgniter View Example
</body>
</html>
Değiştir routes.php dosyasında application/config/routes.php Yukarıdaki denetleyici için yol eklemek ve aşağıdaki satırı dosyanın sonuna eklemek için.
$route['cachecontroller'] = 'Cache_controller'; $route['cachecontroller/delete'] = 'Cache_controller/delete_file_cache';
Örneği yürütmek için tarayıcıya aşağıdaki URL'yi yazın.
http://yoursite.com/index.php/cachecontroller
Yukarıdaki URL'yi ziyaret ettikten sonra, bunun için bir önbellek dosyasının oluşturulacağını göreceksiniz. application/cacheKlasör. Dosyayı silmek için aşağıdaki URL'yi ziyaret edin.
http://yoursite.com/index.php/cachecontroller/delete
Web uygulaması oluştururken, çoğu zaman kullanıcıyı bir sayfadan başka bir sayfaya yönlendirmemiz gerekir. CodeIgniter bu işi bizim için kolaylaştırıyor. redirect() işlevi bu amaçla kullanılır.
Syntax |
yönlendirme ($uri = '', $yöntem = 'otomatik', $ kod = NULL ) |
Parameters |
|
Return type |
geçersiz |
İlk bağımsız değişken iki tür URI'ye sahip olabilir. Yönlendirmek istediğiniz denetleyiciye tam site URL'sini veya URI segmentlerini iletebiliriz.
İkinci isteğe bağlı parametre, otomatik, konum veya yenilemeden üç değerden herhangi birine sahip olabilir. Varsayılan, otomatiktir.
Üçüncü isteğe bağlı parametre yalnızca konum yönlendirmeleriyle kullanılabilir ve belirli HTTP yanıt kodunu göndermenize olanak tanır.
Misal
Adlı bir denetleyici oluşturun Redirect_controller.php ve içine kaydet application/controller/Redirect_controller.php
<?php
class Redirect_controller extends CI_Controller {
public function index() {
/*Load the URL helper*/
$this->load->helper('url'); /*Redirect the user to some site*/ redirect('http://www.tutorialspoint.com'); } public function computer_graphics() { /*Load the URL helper*/ $this->load->helper('url');
redirect('http://www.tutorialspoint.com/computer_graphics/index.htm');
}
public function version2() {
/*Load the URL helper*/
$this->load->helper('url');
/*Redirect the user to some internal controller’s method*/
redirect('redirect/computer_graphics');
}
}
?>
Değiştir routes.php dosyasında application/config/routes.php Yukarıdaki denetleyici için yol eklemek ve aşağıdaki satırı dosyanın sonuna eklemek için.
$route['redirect'] = 'Redirect_controller';
$route['redirect/version2'] = 'Redirect_controller/version2'; $route['redirect/computer_graphics'] = 'Redirect_controller/computer_graphics';
Örneği yürütmek için tarayıcıya aşağıdaki URL'yi yazın.
http://yoursite.com/index.php/redirect
Yukarıdaki URL sizi tutorialspoint.com web sitesine yönlendirecek ve aşağıdaki URL'yi ziyaret ederseniz, sizi tutorialspoint.com adresindeki bilgisayar grafikleri eğitimine yönlendirecektir.
http://yoursite.com/index.php/redirect/computer_graphics
Bir web uygulaması oluştururken, denetleyicinin ne kadar süre çalıştırdığı ve ne kadar bellek kullanıldığı açısından web sitesinin performansı konusunda çok endişeliyiz. Sadece performans değil, aynı zamanda bazı uygulamaları geliştirirken hata ayıklama amacıyla POST verileri, veritabanı sorgularının verileri, oturum verileri gibi verilerin içgörülerini de görmemiz gerekir. CodeIgniter, bir uygulamanın profilini çıkararak bu işi bizim için kolaylaştırdı.
Profil Oluşturmayı Etkinleştir
Uygulamanızda profil oluşturmayı etkinleştirmek için, kontrolörünüzün herhangi bir yönteminde aşağıda verilen komutu uygulamanız yeterlidir.
$this->output->enable_profiler(TRUE);
Profilleme raporu, etkinleştirildikten sonra sayfanın alt kısmında görülebilir.
Profil Oluşturmayı Devre Dışı Bırak
Uygulamanızın profilini oluşturmayı devre dışı bırakmak için, denetleyicinizin herhangi bir yönteminde aşağıda verilen komutu uygulamanız yeterlidir.
$this->output->enable_profiler(FALSE);
Profiler Bölümünü Etkinleştir / Devre Dışı Bırak
Profilleme, kesit bazında yapılabilir. DOĞRU veya YANLIŞ Boole değerini ayarlayarak bir bölümün profil oluşturmasını etkinleştirebilir veya devre dışı bırakabilirsiniz. Uygulamada profil oluşturmayı ayarlamak istiyorsanız, o zaman şurada bulunan bir dosyada yapabilirsiniz:application/config/profiler.php
Örneğin, aşağıdaki komut tüm uygulama için profil oluşturma sorgularını etkinleştirecektir.
$config['queries'] = TRUE;
Aşağıdaki tabloda anahtar, belirli bir profili etkinleştirmek veya devre dışı bırakmak için yapılandırma dizisinde ayarlanabilen parametredir.
Anahtar | Açıklama | Varsayılan |
---|---|---|
benchmarks |
Geçen Kıyaslama puanı ve toplam uygulama süresi | DOĞRU |
config |
CodeIgniterConfig değişkenleri | DOĞRU |
controller_info |
Controller sınıfı ve yöntemi talep edildi | DOĞRU |
get |
İstekte geçirilen tüm GET verileri | DOĞRU |
http_headers |
Mevcut istek için HTTP üstbilgileri | DOĞRU |
memory_usage |
Geçerli istek tarafından bayt cinsinden tüketilen bellek miktarı | DOĞRU |
post |
Talepte aktarılan tüm POST verileri | DOĞRU |
queries |
Yürütme süresi dahil, yürütülen tüm veritabanı sorgularının listesi | DOĞRU |
uri_string |
Mevcut talebin URI'si | DOĞRU |
session_data |
Mevcut oturumda depolanan veriler | DOĞRU |
query_toggle_count |
Sonrasında sorgu bloğunun varsayılan olarak gizli olarak ayarlanacağı sorgu sayısı. | 25 |
Profil oluşturucu dosyada ayarlandı application/config/profiler.php kullanılarak geçersiz kılınabilir set_profiler_sections() denetleyicilerde aşağıda gösterildiği gibi işlev görür.
$sections = array(
'config' => TRUE,
'queries' => TRUE
);
$this->output->set_profiler_sections($sections);
Karşılaştırma Noktaları Belirleme
Bir dizi satırı veya bellek kullanımını yürütmek için harcanan zamanı ölçmek istiyorsanız, CodeIgniter'daki Kıyaslama noktalarını kullanarak bunu hesaplayabilirsiniz. Ayrı bir "BenchmarkingCodeIgniter'da bu amaç için ”sınıfı.
Bu sınıf otomatik olarak yüklenir; yüklemeniz gerekmez. Denetleyici, görünüm ve model sınıflarınızda herhangi bir yerde kullanılabilir. Tek yapmanız gereken, bir başlangıç noktası ve bitiş noktası işaretlemek ve ardındanelapsed_time() Bu iki işaretli nokta arasında işlev görür ve bu kodu çalıştırmak için geçen süreyi aşağıda gösterildiği gibi elde edebilirsiniz.
<?php
$this->benchmark->mark('code_start'); // Some code happens here $this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');
?>
Bellek kullanımını görüntülemek için işlevi kullanın memory_usage() aşağıdaki kodda gösterildiği gibi.
<?php
echo $this->benchmark->memory_usage();
?>
Misal
Adlı bir denetleyici oluşturun Profiler_controller.php ve içine kaydet application/controller/Profiler_controller.php
<?php
class Profiler_controller extends CI_Controller {
public function index() {
//enable profiler
$this->output->enable_profiler(TRUE); $this->load->view('test');
}
public function disable() {
//disable profiler
$this->output->enable_profiler(FALSE); $this->load->view('test');
}
}
?>
Adlı bir görünüm dosyası oluşturun test.php ve kaydet application/views/test.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter View Example</title>
</head>
<body>
CodeIgniter View Example
</body>
</html>
Route.php dosyasını şu adresten değiştirin: application/config/routes.php Yukarıdaki denetleyici için yol eklemek ve aşağıdaki satırı dosyanın sonuna eklemek için.
$route['profiler'] = "Profiler_controller"; $route['profiler/disable'] = "Profiler_controller/disable"
Bundan sonra, örneği yürütmek için tarayıcınızın adres çubuğuna aşağıdaki URL'yi yazabilirsiniz.
http://yoursite.com/index.php/profiler
Yukarıdaki URL profil oluşturucuyu etkinleştirecek ve aşağıdaki ekran görüntüsünde gösterildiği gibi bir çıktı üretecektir.
Profil oluşturmayı devre dışı bırakmak için aşağıdaki URL'yi çalıştırın.
http://yoursite.com/index.php/profiler/disable
CodeIgniter'da JavaScript ve CSS (Basamaklı Stil Sayfası) dosyası eklemek çok basittir. Kök dizinde JS ve CSS klasörü oluşturmanız ve JS klasöründeki tüm .js dosyalarını ve şekilde gösterildiği gibi CSS klasöründeki .css dosyalarını kopyalamanız gerekir.
Örneğin, bir JavaScript dosyası oluşturduğunuzu varsayalım. sample.js ve bir CSS dosyası style.css. Şimdi, bu dosyaları görünümlerinize eklemek için, aşağıda gösterildiği gibi denetleyicinize URL yardımcısını yükleyin.
$this->load->helper('url');
Denetleyicide URL yardımcısını yükledikten sonra, sample.js ve style.css dosyasını aşağıda gösterildiği gibi görünümde yüklemek için, görünüm dosyasına aşağıda verilen satırları eklemeniz yeterlidir.
<link rel = "stylesheet" type = "text/css"
href = "<?php echo base_url(); ?>css/style.css">
<script type = 'text/javascript' src = "<?php echo base_url();
?>js/sample.js"></script>
Misal
Adlı bir denetleyici oluşturun Test.php ve içine kaydet application/controller/Test.php
<?php
class Test extends CI_Controller {
public function index() {
$this->load->helper('url');
$this->load->view('test');
}
}
?>
Adlı bir görünüm dosyası oluşturun test.php ve kaydet application/views/test.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter View Example</title>
<link rel = "stylesheet" type = "text/css"
href = "<?php echo base_url(); ?>css/style.css">
<script type = 'text/javascript' src = "<?php echo base_url();
?>js/sample.js"></script>
</head>
<body>
<a href = 'javascript:test()'>Click Here</a> to execute the javascript function.
</body>
</html>
Adlı bir CSS dosyası oluşturun style.css ve kaydet css/style.css
body {
background:#000;
color:#FFF;
}
Adlı bir JS dosyası oluşturun sample.js ve kaydet js/sample.js
function test() {
alert('test');
}
Değiştir routes.php dosyasında application/config/routes.php Yukarıdaki denetleyici için yol eklemek ve aşağıdaki satırı dosyanın sonuna eklemek için.
$route['profiler'] = "Profiler_controller";
$route['profiler/disable'] = "Profiler_controller/disable"
Yukarıdaki örneği yürütmek için tarayıcıda aşağıdaki URL'yi kullanın.
http://yoursite.com/index.php/test
CodeIgniter'daki dil sınıfı, uluslararasılaştırma için birden çok dili desteklemenin kolay bir yolunu sağlar. Bir dereceye kadar, metni birçok farklı dilde görüntülemek için farklı dil dosyaları kullanabiliriz.
Application / language dizinine farklı dil dosyaları koyabiliriz. Sistem dili dosyaları sistem / dil dizininde bulunabilir, ancak uygulamanıza kendi dilinizi eklemek için uygulama / dil dizinindeki her dil için ayrı bir klasör oluşturmalısınız.
Dosya oluşturma Dil
Bir dil dosyası oluşturmak için dosyayı şu şekilde bitirmelisiniz: _lang.php. Örneğin, Fransız dili için bir dil dosyası oluşturmak istiyorsanız, bunu şununla kaydetmelisiniz:french_lang.php. Bu dosya içinde tüm dil metinlerinizi anahtar, değer kombinasyonunda saklayabilirsiniz.$lang dizi aşağıda gösterildiği gibi.
$lang[‘key’] = ‘val’;
Dil dosyası yükleniyor
Uygulamanızda herhangi bir dili kullanmak için, önce o dosyada depolanan çeşitli metinleri almak üzere o dilin dosyasını yüklemelisiniz. Dil dosyasını yüklemek için aşağıdaki kodu kullanabilirsiniz.
$this->lang->load('filename', 'language');
filename- Yüklemek istediğiniz dosyanın adıdır. Burada dosya uzantısını kullanmayın, yalnızca dosya adını kullanın.
Language - Onu içeren dil setidir.
Dil Metni Alınıyor
Dil dosyasından bir satırı almak için aşağıdaki kodu uygulamanız yeterlidir.
$this->lang->line('language_key');
Nerede language_key yüklenen dil dosyasındaki anahtarın değerini almak için kullanılan anahtar parametredir.
Otomatik Yükleme Dilleri
Küresel olarak bir dile ihtiyacınız varsa, o zaman otomatik olarak yükleyebilirsiniz. application/config/autoload.php dosya aşağıda gösterildiği gibi.
| -----------------------------------------------------------------------
| Auto-load Language files
| -----------------------------------------------------------------------
| Prototype:
| $autoload['config'] = array('config1', 'config2');
|
| NOTE: Do not include the "_lang" part of your file. For example
| "codeigniter_lang.php" would be referenced as array('codeigniter');
|
*/
$autoload['language'] = array();
Basitçe, CodeIgniter tarafından otomatik olarak yüklenecek farklı dilleri iletin.
Misal
Adlı bir denetleyici oluşturun Lang_controller.php ve içine kaydet application/controller/Lang_controller.php
<?php
class Lang_controller extends CI_Controller {
public function index(){
//Load form helper
$this->load->helper('form');
//Get the selected language
$language = $this->input->post('language');
//Choose language file according to selected lanaguage
if($language == "french") $this->lang->load('french_lang','french');
else if($language == "german") $this->lang->load('german_lang','german');
else
$this->lang->load('english_lang','english'); //Fetch the message from language file. $data['msg'] = $this->lang->line('msg'); $data['language'] = $language; //Load the view file $this->load->view('lang_view',$data);
}
}
?>
Adlı bir görünüm dosyası oluşturun lang_view.php ve kaydet application/views/ lang_view.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter Internationalization Example</title>
</head>
<body>
<?php
echo form_open('/lang');
?>
<select name = "language" onchange = "javascript:this.form.submit();">
<?php
$lang = array('english'=>"English",'french'=>"French",'german'=>"German");
foreach($lang as $key=>$val) { if($key == $language) echo "<option value = '".$key."' selected>".$val."</option>"; else echo "<option value = '".$key."'>".$val."</option>"; } ?> </select> <br> <?php form_close(); echo $msg;
?>
</body>
</html>
İngilizce, Fransızca ve Almanca adlı üç klasör oluşturun application/language aşağıdaki şekilde gösterildiği gibi.
Aşağıda verilen kodu kopyalayın ve kaydedin english_lang.php dosyasında application/language/english Klasör.
<?php
$lang['msg'] = "CodeIgniter Internationalization example.";
?>
Aşağıda verilen kodu kopyalayın ve kaydedin french_lang.php dosyasında application/language/French Klasör.
<?php
$lang['msg'] = "Exemple CodeIgniter internationalisation.";
?>
Aşağıda verilen kodu kopyalayın ve kaydedin german_lang.php dosyasında application/language/german Klasör.
<?php
$lang['msg'] = "CodeIgniter Internationalisierung Beispiel.";
?>
Değiştir routes.php dosyasında application/config/routes.php Yukarıdaki denetleyici için yol eklemek ve aşağıdaki satırı dosyanın sonuna eklemek için.
$route['lang'] = "Lang_controller";
Yukarıdaki örneği yürütmek için tarayıcıda aşağıdaki URL'yi çalıştırın.
http://yoursite.com/index.php/lang
Aşağıdaki ekran görüntüsünde gösterildiği gibi bir çıktı üretecektir. Açılır listedeki dili değiştirirseniz, aşağıya yazılan cümlenin dili de buna göre değişecektir.
XSS Önleme
XSS, siteler arası komut dosyası anlamına gelir. CodeIgniter, XSS filtreleme güvenliğiyle birlikte gelir. Bu filtre, herhangi bir kötü amaçlı JavaScript kodunu veya çerezi ele geçirmeye ve kötü amaçlı faaliyetler gerçekleştirmeye çalışan diğer kodları engeller. Verileri XSS filtresiyle filtrelemek için,xss_clean() yöntemi aşağıda gösterildiği gibi.
$data = $this->security->xss_clean($data);
Bu işlevi yalnızca veri gönderirken kullanmalısınız. İsteğe bağlı ikinci Boolean parametresi, XSS saldırısı için görüntü dosyasını kontrol etmek için de kullanılabilir. Bu, dosya yükleme tesisi için kullanışlıdır. Değeri doğruysa, görüntünün güvenli olduğu ve başka türlü olmadığı anlamına gelir.
SQL Enjeksiyon Önleme
SQL enjeksiyonu, veritabanı sorgusuna yapılan bir saldırıdır. PHP'de kullanıyoruzmysql_real_escape_string() diğer tekniklerle birlikte bunu önlemek için işlev görür, ancak CodeIgniter bunu önlemek için dahili işlevler ve kitaplıklar sağlar.
CodeIgniter'da SQL Enjeksiyonunu aşağıdaki üç şekilde önleyebiliriz:
- Kaçan Sorgular
- Sorgu Teklifi
- Aktif Kayıt Sınıfı
Kaçan Sorgular
<?php
$username = $this->input->post('username'); $query = 'SELECT * FROM subscribers_tbl WHERE user_name = '.
$this->db->escape($email);
$this->db->query($query);
?>
$this->db->escape() işlev, verilerin etrafına otomatik olarak tek tırnak işaretleri ekler ve yalnızca dize verilerinden çıkabilmesi için veri türünü belirler.
Sorgu Teklifi
<?php
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
?>
Yukarıdaki örnekte, sorgu () işlevinin ikinci parametresinde soru işareti (?), Dizi ile değiştirilecektir. Sorguyu bu şekilde oluşturmanın temel avantajı, değerlerin otomatik olarak önlenerek güvenli sorgular üretmesidir. CodeIgniter motoru bunu sizin için otomatik olarak yapar, böylece hatırlamak zorunda kalmazsınız.
Aktif Kayıt Sınıfı
<?php
$this->db->get_where('subscribers_tbl',array
('status'=> active','email' => '[email protected]'));
?>
Etkin kayıtlar kullanılarak, sorgu sözdizimi her veritabanı bağdaştırıcısı tarafından oluşturulur. Değerler otomatik olarak kaçtığından daha güvenli sorgulara da izin verir.
PHP Hatalarını Gizleme
Üretim ortamında, genellikle kullanıcılara herhangi bir hata mesajı göstermek istemiyoruz. Hata ayıklama amacıyla geliştirme ortamında etkinleştirilmesi iyidir. Bu hata mesajları, güvenlik nedeniyle site kullanıcılarına göstermememiz gereken bazı bilgiler içerebilir.
Hatalarla ilgili üç CodeIgniter dosyası vardır.
PHP Hata Raporlama Düzeyi
Farklı ortamlar, farklı hata raporlama seviyeleri gerektirir. Varsayılan olarak, geliştirme hataları gösterir, ancak test ve canlı bunları gizler. Adlı bir dosya varindex.phpCodeIgniter'ın bu amaçla kullanılan kök dizininde. Argüman olarak sıfırı geçirirsekerror_reporting() işlevi tüm hataları gizleyecektir.
Veri tabanı hatası
PHP hatalarını kapatmış olsanız bile, MySQL hataları hala açıktır. Bunu şuradan kapatabilirsinizapplication/config/database.php. Yı kurdb_debug seçeneği $db dizi FALSE Aşağıda gösterildiği gibi.
$db['default']['db_debug'] = FALSE;
Hata günlüğü
Başka bir yol da hataları günlük dosyalarına aktarmaktır. Bu nedenle sitede kullanıcılara gösterilmeyecektir. Basitçe,log_threshold değer $config dizi 1 inç application/cofig/config.php dosya aşağıda gösterildiği gibi.
$config['log_threshold'] = 1;
CSRF Önleme
CSRF, siteler arası istek sahteciliği anlamına gelir. Bu saldırıyı şuradan etkinleştirerek önleyebilirsiniz:application/config/config.php dosya aşağıda gösterildiği gibi.
$config['csrf_protection'] = TRUE;
Kullanarak form oluştururken form_open()işlevi, otomatik olarak bir CSRF'yi gizli alan olarak ekleyecektir. CSRF'yi manuel olarak da ekleyebilirsiniz.get_csrf_token_name() ve get_csrf_hash()işlevi. get_csrf_token_name() işlevi CSRF'nin adını döndürecektir ve get_csrf_hash() CSRF'nin karma değerini döndürür.
CSRF jetonu, gönderim için her seferinde yeniden oluşturulabilir veya CSRF çerezinin ömrü boyunca aynı şekilde saklayabilirsiniz. Değeri ayarlayarakTRUE, yapılandırma dizisinde key ile ‘csrf_regenerate’ jetonu aşağıda gösterildiği gibi yeniden oluşturacaktır.
$config['csrf_regenerate'] = TRUE;
Ayrıca CSRF korumasından URL'leri, yapılandırma dizisinde ayarlayarak, anahtarını kullanarak beyaz listeye ekleyebilirsiniz. ‘csrf_exclude_uris’Aşağıda gösterildiği gibi. Normal ifadeyi de kullanabilirsiniz.
$config['csrf_exclude_uris'] = array('api/person/add');
Parola İşleme
Birçok geliştirici, web uygulamalarında şifreyi nasıl kullanacağını bilmiyor, bu yüzden muhtemelen birçok bilgisayar korsanı sistemlere girmeyi bu kadar kolay buluyor. Şifreleri ele alırken aşağıdaki noktaları akılda tutmak gerekir -
Parolaları düz metin biçiminde SAKLAMAYIN.
Her zaman parolalarınızı hashleyin.
Parolaları saklamak için Base64 veya benzeri bir kodlama KULLANMAYIN.
MD5 veya SHA1 gibi zayıf veya bozuk karma algoritmaları KULLANMAYIN. Yalnızca, PHP'nin kendi Parola Karma işlevlerinde kullanılan BCrypt gibi güçlü parola karma algoritmaları kullanın.
Bir parolayı hiçbir zaman düz metin biçiminde GÖSTERMEYİN veya GÖNDERMEYİN.
Kullanıcılarınızın parolalarına gereksiz sınırlamalar KOYMAYIN.