Linux Arch & Manjaro CodeIgniter Kurulumu

CodeIgniter kurulumunda GitHub üzerinden ya da resmi siteden son sürümü indirdiğinizde ve çalıştırdığınızda sizi bir Welcome ekranı karşılayacaktır. Bu ekranı gördüğünüzde sorunsuz çalıştığını varsayabilirsiniz; tabii bir Arch&Manjaro kullanıcısı değilseniz. Eğer ki sistem dili Türkçe olan Linux Arch ya da bir Manjaro kullanıcısı iseniz; muhtemelen CodeIgniter ya da ZN Framework çalışmayacaktır.  Bunun nedeni PHP’nin standart str fonksiyonlarının çalışmamasıdır. Konunun başlığını bu şekilde belirledim çünkü sorunun kaynağını bilen birisi zaten çözüme de rahatlıkla ulaşabilir. Önemli olan sorunun nereden kaynaklandığını bilemeyen arkadaşları konuya çekebilmek. Gerekli hata kodları etiket olarak dahil edilmiştir.

Şöyle anlatmak gerekirse $this-uri->segment(1) ve $this->input->get('q') kodları hata verecektir. Burada dikkat ettiğiniz bir nokta var mı? Evet, bildiniz! Burada this anahtarı ile eriştiğimiz sınıf özelliklerinin ikisinde de i harfi bulunmakta. Peki, bununla ne ilgisi var? Öncelikle şurada bu konu ile ilgili açılmış bir bug report bulunmakta. Ona göz atmanızı rica ediyorum. Şimdi biraz daha oturdu gibi konu. Bir dizi içerisinde URI ya da INPUT anahtarı ilgili PHP fonksiyonlarınca küçültülmek istenilmektedir. Fakat bunu başaramaz ve bu anahtarlar bize urI ve Input olarak döner ve hata verir.

Olası Hata Çıktıları:

Yukarıdaki hatalardan normal zamanlarda bir çözüm yolu aransaydı $this->load->helper('uri'); satırını Controller dosyamıza dahil etmeyi düşünürdük. Bu tarz bir hatanın olabileceğini kimse düşünemezdi.

Çözüm Yolları:

Linux sistem dilinde bu tarz dönüşüm ve işlemlerin kontrol merkezinde CTYPE bulunmakta. Bizler, CTYPE‘ı en_US.UTF8  yaparsak bu sorun çözülecektir.

Bir diğer çözüm yolu ise en_US.UTF8  yüklü olmak koşulu ile; LC_CTYPE veya LC_ALL değerini değiştirerek de sorun çözülebiliyor.

Ek Olarak:

Çözümde benimle birlikte uğraş veren AnkaraPHP ekibine ve Eray Aydın’a teşekkürlerimi iletiyorum.

Kaynak:

  • https://wiki.archlinux.org/index.php/locale

PHP SSH Sürümü Yükseltme ve Laravel 5.4 Kurulumu

Merhabalar, bugün SSH ile sunucuma Laravel 5.4 kurmak isterken Plesk panelde 7.1 olan PHP sürümüm SSH‘de 5.4 olarak gözükmekteydi. Bu yüzden kurmakta sorun yaşadım.

SSH PHP Sürümünü Yükseltme

SSH‘de aşağıdaki komutla çözüme geçelim.

Eğer ki çıktımız /usr/bin/php ise devam edelim.

Ben kendi Plesk panelimden 7.1’in yolunu kısayol oluşturdum.

Laravel 5.4 Kurulumu

Kurulumu gerçekleştirelim.

Kurulumdan sonra gerekli izinleri verelim.

Şimdi dizin işlemlerine geçelim.

Public klasöründe bulunan server.php dosyasının ismini index.php olarak değiştirelim ve yine Public klasöründe bulunan .htaccess dosyası ile birlikte ana dizine taşıyalım.

Şu an hatasız Laravel ekranını görmeniz gerekmekte.

Artisan Kullanımı

Öncelikle çalıştıralım.

Şu an 8125 portunda çalışabilirsiniz.

https://laravel.com/docs/5.4/artisan

Murat Bastas’a teşekkürler.

Linux Mint 18.1 PHP 5.6 ve PHP 7.0 Kurulumu

Merhabalar, Linux Mint 18.1 Serena üzerinde PHP 5.6 ve PHP 7.0 kurulumu birlikte inceleyelim. Öncelikle Ubuntu 16‘dan sonra resmi depolarından PHP 5.x sürümünü kaldırdı ve yerine güncel olan PHP 7.0 kullandı. Fakat biz geliştiriciler için sürümler arasında sörf yapmak son derece mühim. Üzerinde çalıştığınız projenin sizden ne istediğini asla bilemezsiniz. Bu yüzden Ondrej Sury isimli bir arkadaşımız kişisel paket arşivine PHP 5.x versiyonunu eklemiş. Bizler de bunu kullanacağız.

PHP 5 Paketi

Paketimiz hazır.

PHP 5.6 ve PHP 7.0 Kurulum

Şimdi her iki sürümü de Apache2MySQL ve Laravel PHP Framework destekli kurmaya hazırız.

PHP 5.6 Kullanalım

PHP 7.0 Kullanalım

Son Olarak


Ubuntu ve Debian temel alınarak geliştirilen Linux Mint 18.1 Serena sürümünde başarıyla PHP 5.6 ve PHP 7.0 kurulumunu gerçekleştirdik.

Bol keyifli kodlar.

JSON Çıktısında Karakter Temizleme

Esenlikler, ufak bir çalışma için JSON çıktısına ihtiyaç duydum. Bu çıktı sonucunda temizlenmesi gereken karakterler baş gösterdi. Bu konuda birçok forumda çözülemeyen başlıklara rastladım. Blogumda paylaşmanın uygun olacağını düşündüm. Sizlerle birlikte, adım adm JSON çıktımızı dizi üzerinde değiştirmemize olanak sağlayacak kodlarımızı yazalım. JSON konusuna burada fazla değinmeyeceğim. Eğer ki bu konuda bilgi sahibi olmak isterseniz dökümanlardan faydanabilirsiniz.

Çıktımızda istenmeyen karakterleri dizi (array) içerisinde array_map fonksiyonu içinde preg_raplace fonksiyonu ile değiştireceğiz. Öncelikle, array_map fonksiyonundan bahsedelim biraz.

PHP array_map Fonksiyonu:

Bir dizimizde, tüm elemanları istediğimiz koşullarda işlevselleştirerek tekrar bize döndürmesini sağlayan ve birçok işimizde bizlere yardımcı olan fonksiyonumuzdur kendileri.

Kullanımı:

PHP array_map fonksiyonu, iki parametre almaktadır.

Birinci parametremiz, her dizinin her elemanına uygulanan geri çağırım işlevidir. İkinci parametremiz ise, elemanları $islev tarafından işlenecek dizidir. Bizlere dönen değer ise yine dizi olacaktır.

PHP preg_replace Fonksiyonu:

Kullanılan düzenli ifadeye göre dizgemizde değişiklik yapar.

Kullanımı:

Konu dizgesini sablon ile eşleştirir ve bulduklarını yenisi ile değiştirir.

JSON:

JSON kodlarımızın tamamını paylaşıyorum ki mantığında çelişkiye düşmeyin. Yukarıda bahsettiğim fonksiyon ile ilgili farklı kaynaklardan örneklere ulaşabilirsiniz.

Kodlar:

JSON çıktımızı yukarıda yer alan kod bloğuna benzer bir mantık çerçevesinde kullanırsak \r\n gibi karakterleri temizlemiş oluruz.

 

 

PHP JQuery JSON Formatında Ajax Kullanımı

Merhabalar,

PHP JQuery Ajax methodunu JSON formatında kullanalım.

Json Nedir ?

jSON, object (nesne) ve array (dizi) olmak üzere 2 temel yapı içerir. Bu temel yapılar evrensel yapılardır ve tüm modern programlama dillerinde mevcuttur.

Kodlarımız – JQuery

Kodlarımız – HTML

Kodlarımız – PHP

PHP Data Objects (PDO) Kullanımı

Merhabalar,

Bu dersimizde PHP PDO Kullanımı hakkında bilgiler vereceğim. Daha sonra UPDATE, DELETE, INSERT, Veri Çekme ve Veritabanı Bağlantısı işlemlerini örneklerle açıklayacağız.

PDO Nedir?

PDO (PHP Data Objects / PHP Veri Objeleri) özetle; hafif ve tutarlı bir şekilde veritabanına erişimi sağlayan bir arayüz. Adından da anlayacağınız üzerie “Object Oriented Programming” arayüzüne sahip, onlarca veritabanı sürücüsü destekliyor.

PDO Veritabanı Bağlantısı

 

Veritabanı bağlantısında olası hataları yakalamak için try cacth kullandık. Karakter Setini UTF-8 olarak belirledik.

PDO prepare() Methodu Kullanımı

prepare() Çalıştırılmak üzere bir SQL deyimini hazırlar. Metot bindparam(), execute(), bindColumn(), bindValue() metotları ile beraber çalışır. Dışarıdan SQL sorgularına dahil edilecek veriler için iki tür tanım yapmayı sağlar. Bunlardan birisi soru işaretidir. Diğeri ise önünde iki nokta üst üste olan herhangi bir isimdir.

PDO Hata Mesajlarını Yakalama errorInfo() Kullanımı

Mysql kullandığımızda sorgularımızın sonuna mysql_error(); ekleyerek hata mesajlarını yakalayabiliyoruz.

PDO kullanırken bu durum biraz değişiyor ve yerini errorInfo(); fonksiyonuna bırakıyor. Bu fonksiyon bize 3 elemanlı bir array döndürür. 0 ve 1. eleman ilgili sorgunun hata kodu, 3. elemanı ise hata mesajıdır.

Ben hata mesajlarını yakalarken empty(); fonksiyonunu kullanıyorum. Eğer hata mesajı boş ise işlem başarılıdır şeklinde. Bunu rowCount(); fonksiyonu kullanarak veya sorgu false dönüyorsa hata vardır şeklinde yapanlarda var.

PDO DELETE Sorgusu Kullanımı

Delete sorgumuzda ID degeri 1 olan verimizi başarılı bir şekilde sildik.

PDO UPDATE Sorgusu Kullanımı

Update sorgumuzda ID degeri 5 olan baslik sütunumuzda ki verimizi “Mert Köseoğlu” olarak başarılı bir şekilde güncelledik.

PDO SELECT Kullanımı TEK (Verileri Listeletmek) 

PDO SELECT Kullanım Döngü (Verileri Listeletmek)

PDO INSERT Sorgusu Kullanımı (Veri Eklemek)

PDO Eklenen Verinin ID Degerini Almak

PDO quote() Methodu Kullanımı

PDO ile mysql_escape_string ve türevlerinin yerini quote() methodu aldı.

PHP POST Methodu İle Hesap Makinesi Yapımı

Merhabalar, geometri ödevimi “programlama ile hesap makinesi” olarak seçtim. İnternette örnekleri incelediğim de istediğim tarzda yapılmışını bulamadım. Tek bir input içine yazılan veriler ile işlem yapmak istedim. Sonuçta PHP nin zaten matematik işlemleri için bir esnekliği var bir de neden biz çarpma, toplama, çıkarma.. şeklinde seçip işlem yaptıralım ?

Bu yüzden tek bir input a değerleri girdim. Fakat PHP ifadeyi string olarak aldıladı. Bunu eval(); fonksiyonu ile çözdüm. Ben bunu Ajax kullanarak tamamlayacağım. Siz istediğiniz gibi kullanırsınız.

Çarpma : x

Toplama : +

Çıkarma :

Bölme: /

Demo : www.mkoseoglu.com/hesap

Google Analytics İle Grafiksel Olarak Anlık Ziyaretçi Görüntüleme

Merhabalar, Bu Google Analytics İle Anlık Veri Çekimini Göreceğiz. Bu Olay Sayesinde Google Analytics Ziyaret Etmeden Yazdığınız Scriptlerde Anlık Ziyaretçi Akışını Görebilirsiniz.

  • NOT: Localhost’da Çalışırsanız Muhtemelen cURL Hatası Alacaksınız. Bu Yüzden Hostunuzda Çalışın. Hostunuz da Çalışabilmek Gibi Bir İmkanınız Yok İse php.ini Dosyasında İlgili Satırlarda cURL Ayarlarını Yapılandırın. Google’den Arastırabılırsınız.

Profil ID

Ben Aylık Olarak Çekmek İstedim Verilerimi. Öncelikle Google Analytics Sitesine Girin. Amacımız Profil ID Öğrenmek. Hangi Sitenin Ziyaretçi Verilerini Çekmek İstiyorsanız Ona Tıklayın. URL Kısmında  “p” Den Sonra Gelen 8 Haneli Numara Sizin Profil ID‘niz.

Örneğin Benim URL Yapım Aşağıda. PROFİL ID:71662332

Düzenlenecek Tek Dosya: ‘ayar.php’

ayar.php dosyasında,

Gmail Hesabınızı ve Şifrenizi. Alt Satırda ga: PROFİL ID‘nizi Yazınız.

Buraya Kadar Tamam. Sıra Geldi Dosyaları İndirmeye.

Dosyaları İndirin

http://yadi.sk/d/QYopf6JrDokVk

Rar Şifresi: mkoseoglu.com

Ek Olarak Grafik Yapısını Değiştirmek İstersek

Düzenlenmesi Gereken Dosya ‘index.php’

index.php Dosyasında ,

  • line Yazan Kısmı area Olarak Değiştirirseniz Farklı Bir Görünüm Elde Edebilirsiniz.

  • Yine index.php Dosyamda type: line satırını type:area olarak değiştiriyorum.

Demo: http://mkoseoglu.com/depo/api/

Kaynaklar:

PHP Seo Dostu Link Yapıları

Merhabalar, PHP Htaccess ile SEO uyumlu link yapıları elde edeceğiz.

PHP ile Görsel Yükleme

Merhabalar, PHP ile görsellerimizi belirtilen dizine yüklerken aynı zamanda adreslerini veritabanına kaydedelim.