Etiket arşivi: PHP

PHP ile E-Mail Geçerlilik Kontrolü

Published / by Uğur Özşahin / Leave a Comment

    Bugün yine kod yazarken PHP nin yeni fonksiyonlarından birini öğrendim. Fonksiyon filter_var fonksiyonu, filter_var() PHP 5.2.0 ve üstü sürümlerde kullanılabilir durumda. Önceleri bu işi regular expression (Düzenli İfadeler) ile pek güzel yapabiliyorduk. Artık düzenli ifadeleri e-mail geçerliliği için kullanmaya son. Bundan sonra filter_var() ile işimizi halledebileceğiz.

    Daha fazla uzatmadan hemen e-mail geçerlilik kontrolü için örnek bir kod yazıyorum.


    İşte fonksiyonun kullanımı böyle. filter_var fonksiyonu hakkında daha fazla bilgiye linke tıklayarak ulaşabilirsiniz. FILTER_VALIDATE_EMAIL referansı yerine örnek olarak FILTER_VALIDATE_URL referansı ile URL geçerliliğini test edebilir yada FILTER_VALIDATE_IP ile de IP geçerliliğini kontrol edebilirsiniz. Kullanabileceğiniz diğer filtreler için PHP Filter Reference sayfasına göz atabilirsiniz.

MySQL Türkçe Karakter İlk Harf Sıralaması

Published / by Uğur Özşahin / Leave a Comment

    PHP ve MySQL e geçiş sürecim ve bu konulardaki eksikliklerim gün geçtikçe kapanıyor. Ancak sancılı bir dönem olduğu en azından benim için gün gibi ortada. Her yazdığım koddan sonra yada yazmak istediklerim için araştırmaya girişmek beni yavaşlatan başlıca sebeplerden. Fakat ilk kompleks projemi bu şekilde hazırlıyor olmamın çok önemli bir nedeni var. Yıllarca WEB konusunda VB Script ve Access veritabanı ile uğraşmış biri olarak, PHP ve nimetlerinden yararlanmanın tek yolunun bu şekilde kodlama yapmaktan geçiyor olması. Çünkü daha önce PHP ile ilgili her ne kadar bir kitap bitirmiş olsamda, düzey bakımından kesinlikle ihtiyacımı karşılayabilecek seviyede değildi. Dedim ya basit PHP kodlamalarımı belki bu kitap sayesinde yaptım, ancak işin içine daha özgün ve karmaşık yapılar girdiğinde, muhtemelen hiç bir kitap ihtiyaçları karşılayacak yeterliliğe sahip olmuyor.

    Başlıkta anlatmak istediğimi kısaca daha anlaşılabilir biçimde açıklayayım. PHP ve MYSQL ile yapmak istediğim şu, öncelikle elimde bir tablom ve listelemem gereken verilerim var. Listeleme koşulum ise her verinin baş harfinin, alfabetik bir düzen içerisinde web sayfasında görüntülenmesi. Örnek vermek gerekirse, ziyaretçi ’A’ harfine göre listeleme yapmak istediğinde, sonuçlar içerisinde yalnızca ’A’ ile başlayan verinin görüntülenecek olması. Aslında yapmak istediğim şey son derece basit ki, zaten istediğimi bir parçada almış olmama rağmen, işin içine Türkçe karakterle başlayan veriler girdiğinde sonuç beklentilerim ile uyuşmuyordu. Yine örnek verecek olursam, ’İ’ harfine göre bir listeleme yapmak istediğimde, liste içerisinde ’I’ ile başlayan verilerde yer alıyordu. Neyse ki sorunun çözümünü yine kendim buldum. Aslında tüm sıkıntı veritabanında yer alan tabloların kendine has özelliklerinden kaynaklanıyormuş. Prensip olarak tablo karakter setlerini ’utf8’ olarak belirlerim. Collation (Karşılaştırma) değerini ise ön tanımlı olan ’utf8_general_ci’ olarak bırakırdım. İşte hata tam olarak bu noktada başlıyor, Collation özelliğini ön tanımlı olarak bırakmak yerine ’utf8_turkish_ci’ olarak ayarlamamın istediğim sonucu sağladığını gördüm. Ancak belirtmeliyim ki, ’utf8_turkish_ci’ ayarı, uluslararası projelerde neler götürür kestiremiyorum. Bu yüzden sanırım, yabancı dilde hazırladığım sitelerde ’utf8_general_ci’ yada ’utf8_unicode_ci’ ayarlarını kullanmaya devam edeceğim.

Önemli Not: Yalnız bu değişikliği eğer fulltext indeks içerikli tablolarda yapmak isterseniz bazı hatalar ile karşılaşabilirsiniz. Bu yüzden öncelikle fulltext indeksleri kaldırmanızı ve Collation (karşılaştırma) ayarlarını yaptıktan sonra fulltext indeksleri tekrar tanımlamanızı öneriyorum.

mysqli_connect() Fonksiyonu

Published / by Uğur Özşahin / Leave a Comment

    PHP üzerinde uğraştığım ve en çok sorun yaşadığım konulardan biri veritabanlarıdır. Sonuçta bir çok projemin temelinde öyle yada böyle bir şekilde veritabanları söz konusudur. Özellikle PHP söz konusu olduğunda, bu veritabanı meselesi daha çok ön plana çıkmaya başladı. Bildiğiniz gibi günümüzde PHP ile birlikte en çok kullanılan veritabanlarından biri MySQL. Doğal olarak benimde daha çok üzerinde durduğum veritabanlarını oluşturuyorlar. Maalesef her geçen gün bu konuda yeni bir şey öğrenmek ile birlikte, bazı takıldığım noktalarda olmuyor değil.

    Bir arkadaşımdan öğrendiğim bir hazır scripti, kendi serverımda denemek isterken scriptin kurulumu sırasında, veritabanı ile iletişim kurmak için girdiğim ve doğruluğundan tamamen emin olduğum veritabanına erişim bilgilerine rağmen bir problem ile karşılaştım. Daha sonra kurulum dosyasının kodlarını incelediğimde, veritabanı bağlantısı  için mysql_connect() fonksiyonu yerine mysqli kütüphanesinden yararlanılabilmesi için kullanılan mysqli_connection() fonksiyonuna rastladım. Zaten aldığım hatada veritabanı ile bağlantı kurulamadığı yönündeydi. Dolayısı ile tekrar yaptığım incelemelerimde her verinin doğru girilmesine karşın, karşılaştığım sorunun mysqli_connection() fonksiyonunun kullanımı ile ilgili olduğu sonucuna vardım. Yani kısaca mysql_connection() fonksiyonun aldığı parametreler ile mysqli_connection() fonksiyonunun aldığı parametrelerin birbirlerinden bariz farklılıklar barındırdığını anladım.

mysqli_connection();

    mysql_connection() ve mysqli_connection() parametrelerini kısaca açıklayacak olursak;

mysql_connection(server, username, password, new_link, client_flags)


server parametresi: mysql server adresi ve portu
username parametresi: mysql server için kullanıcı adı
password parametresi: mysql server için şifre
new_link ve client_flags parametreleri bizi şimdilik ilgilendirmeyen ve default değerlere sahip parametreler.

mysqli_connection(host, username, passwd, dbname, port, socket)


host parametresi: mysql server
username parametresi: mysql server için kullanıcı adı
passwd parametresi: mysql server için şifre
dbname parametresi: mysql veritabanın adı
port parametresi: mysql server’a ait iletişim port numarası
socket parametresi default değere sahip benimde hakkında pek bilgi sahibi olmadığım başka bir parametre.

    Şimdi diyebilirsiniz, zaten en başta bu iki fonksiyonun aldığı parametrelerin sayıları farklı. Ancak şunu belirtmeliyim bu parametrelerin sayıları farklı olduğu gibi, aynı işleve sahip olması beklenen parametrelerin kullanımında da önemli farklar ortaya çıkmakta. Örnek olarak ben mysql_connection() fonksiyonunda kullanılan server parametresi ile mysqi_connection() fonksyionunda kullanılan host parametresinin aynı olmasını beklerken, ne kadar büyük bir yanılgı içinde olduğumun farkına vardım. Zaten en başta yaşadığım problemin temelinde bu farklılık baş göstermekteydi. Aşağıya örnek olarak iki bağlantı kodu yazacağım:

mysql_connection("localhost:3306","root","xxxx");
fonksiyonu çalışırken

mysqli_connection("localhost:3306","root","xxxx","veritabani");
fonksiyonunun çalışmadığına şahit olacaksınız. Bir önceki paragrafta belirttiğim gibi bunun nedeni ilk parametrenin kullanımının önemli bir şekilde farklı olması. Parametrelerden bahsettiğimde de anlaşılmış olduğunu düşündüğüm bu fark Port parametresinden ileri gelmekte. O parametreyi oraya boşuna sıkıştırmamışlar değil mi? 😉 Fonksiyonun doğru kullanımına örnek verecek olursak;

mysqli_connection("localhost","root","xxxx","veritabani",3306); olmalı.



    İşte yeni öğrenmiş olduğum fonksiyon ile birlikte basit ancak, önemli olduğuna inandığım sorunun çözümü. PHP de fonksiyonlara ait parametre ve diğer bilgilere çabuk ulaşmak istiyorsanız browserınızın (ie, firefox)  adres satırına http://tr2.php.net/ ile birlikte fonksiyonunuzu yazmanız yeterli olacaktır.

Örnek: strtr(); fonksiyonu için http://tr2.php.net/strtr

Facebookta Uygulama Geliştirmek I

Published / by Uğur Özşahin / Leave a Comment

    Facebook için uygulama geliştirmek, öncelikle ne kadar önemli? Bu sorunun cevabı aslında şu an yaygın olarak kullanılan bir kaç facebook uygulamasının maddi değerlerinde gizli. Milyon dolarlık facebook uygulamalarının olması bu konunun önemini bir kez daha önümüze seriyor. (İnternet her anlamda gelir kaynağı olabilir.) Facebook ’un kendisinin milyar dolarlık bir değerinin olduğu düşünülürse, böyle bir siteyi oluşturan önemli katmanlarının değerinin de milyon dolarlar seviyesinde olması sanıyorum yadırganamayacak bir fikir olsa gerek. İster eğlence amaçlı uygulama geliştirmek isteyin, ister profosyonel amaçlı, web tabanlı yazılım teknolojilerinden bazılarına aşina olmanız gerekmekte. (Örn: PHP, Java) Bu noktayı da belirttikten sonra yazının geri kalanına devam edebilirim.

    Yazının devamında uygulama geliştirmeye başlarken neler yapılması gerektiği hakkında yapılması gerekenler yer alacak. Aslında bu kısım zaten ingilizce olarak hali hazırda şu sayfada mevcut. Ancak Türkçe olarak burada yer vermenin daha anlamlı ve işe yarar olacağını düşünüyorum. Birde belirtmem gereken bir diğer önemli nokta uygulama geliştirirken kullanacağımız dil PHP olacaktır. Umarım yeterince açık bir yazı olur.

Facebook’ta Uygulama Geliştirmek I

  • ’Get Started’ yazılı butona tıklıyoruz.
  • Gelen sayfada ’Add Facebook Developer Application’ butonuna tıklıyoruz. Bu application bize uygulama geliştirmek için kullanacağımız zemini hazırlıyor.
  • Developer uygulamasını profilimize ekledikten sonra. Artık profilimizin solunda yer alan navigasyon menüsündeki developer seçeneğine tıklayarak Developer App sayfasına ulaşabiliriz.
  • ’Setup New Application’ yazılı butona tıklayarak ilk uygulamamızın özelliklerini belirlemeye başlayabiliriz.
  • Karşımıza çıkan sayfadaki formu aşağıda belirtildiği gibi dolduruyoruz:
    1. Application Name (Uygulama İsmi): Geliştirmek istediğimiz ilk uygulamamızın adını giriyoruz. Bizim uygulamamızın adı "Merhaba Facebook" olsun.
    2. Sözleşmeyi okuduğumuza dair altta yer alan seçeneği onaylıyoruz.
    3. "Optional Fields" linkine tıklayarak uygulamamız için gereken ayrıntıları düzenleyeceğimiz kısma ulaşıyoruz.
    4. Support E-mail (Destek E-mail): Yazdığımız uygulama ile ilgili olarak bizimle iletişime geçilebilecek kendimize ait bir e-mail adresi yazmamız gereken kısım.
    5. "Callback Url": Uygulamamızı host ettiğimiz site adresinin yolunu girmemiz gereken yer. Örnek olarak ’http://www.walleq.com/merhaba_facebook/’. Siz burada belirttiğim yolu mutlaka kendinize göre düzenlemelisiniz.
    6. Canvas Page URL: http://apps.facebook.com/: Uygulamamız için facebook yolu diyebiliriz bu alana. Uygulamanızı kullanacak insanlar uygulamaya daha çok bu yol ile ulaşacaklar. Örnek olarak buradaki metin kutusuna da "merhaba_facebook" girmiş olalım. Bu taktirde uygulama adresi facebook için "http://apps.facebook.com/merhaba_facebook/" olacaktır. Tabi buradaki alanı da kendi uygulamanıza göre düzenlemek zorundasınız.
    7. Hemen sonraki "Use FBML" seçeneğine dokunmuyoruz.
    8. Application Type (Uygulama Tipi): ’Website’ seçeneği olarak kalması önemli.
    9. Can your application be added to Facebook: Bu alan için Yes seçeneğini tıklayarak ek ayarların gelmesini sağlıyoruz.
    10. TOS URL: Alanını boş bırakıyoruz.
    11. Post-Add Url: Uygulamamıza ait facebook yolunu bu alana giriyoruz. Bizim girmemiz gereken yol ’http://apps.facebook.com/merhaba_facebook/’ şeklinde olacaktır. Tabi siz burayı yine kendinize göre düzenlemek durumundasınız.
    12. Default FBML: Bu alan uygulamanızın ön tanımlı karşılama değeridir. ’Merhaba Facebook’ metnini girerek geçebiliriz.
    13. Geriye kalan Installation Options alanlarını boş bırakabiliriz.
    14. Side Nav Url: alanına yine uygulmamızın  facebook yolunu giriyoruz. Örn: ’http://apps.facebook.com/merhaba_facebook/’ Bu alanı yine kendinize göre düzenlemeniz gerekmekte.
    15. Integration Points altındaki geri kalan tüm alanları boş bırakabiliriz.
    16. Artık ’Submit’ butonuna tıklayarak uygulamamızı kayıt edebiliriz.
  • ’My Applications’ sayfasına giderek uygulamanızın oluşturulup oluşturulmadığını kontrol edebilirsiniz.
  • Uygulamanızın yer aldığı server klasörüne en son php kütüphane dosyalarını yüklemeliyiz Bu dosyaları iki şekilde yükleyebiliriz. Birinci yol: facebook-platform.tar.gz sıkıştırılmış dosyasını indirip açarak içinden aşağıda belirtilen iki dosyayı çıkararak server’ımızda uygulamamızın yer aldığı klasöre (FTP, upload) yükleyebiliriz.  Dosya 1: "facebook-platform/client/facebook.php" Dosya 2: "facebook-platform/client/facebookapi_php5_restlib.php"
  • Eğer unix serverınızda shell kullanma imkanımız söz konusu ise aşağıda yer alan komutları sırası ile çalıştırarak bir önceki adımda anlatılan işlemi biraz daha kolaylaştırabiliriz. Eğer shell kullanma şansınız yok ise bir önceki adımı uygulayarak, bu adımı es geçebilirsiniz.

  • ’appinclude.php’ dosyasını oluşturarak tüm oluşturacağımız php dosyalarına include etmeliyiz. Aşağıdaki kodu kendinize göre düzenleyerek appinclude.php dosyasının içine yapıştırmalısınız:

  • ’[your app_key]’ ve ’[your secret]’ yazan alanları My Applications sayfasındaki oluşturduğumuz uygulama için yazan sayısal değerler ile değiştirmeliyiz. $appcallbackurl değişkeninin değeride yine sizin uygulamanıza göre düzenlenmelidir. Yukarıdaki örnekte "Merhaba Facebook" uygulamasına göre düzenlenmiştir.
  • ’index.php’ dosyası uygulamamızın ana sayfasını oluşturacaktır. Aşağıdaki kodu bu dosya içerisine yapıştırmalıyız :

  • Uygulamanıza artık  aşağıdaki iki adresten de ulaşabilirsiniz. Tabi buradaki adresleride kendinize göre düzenlemeniz gerekecektir. (Aşağıdaki Linkler Gösterim Amaçlıdır.)

    Uygulamamıza callback url ile ulaşmak istersek: http://www.walleq.com/merhaba_facebook/

    Uygulamamıza facebook adresi ile ulaşmak istersek: http://apps.facebook.com/merhaba_facebook/

  • Gelen sayfada ’Add [Uygulamanızın Adı]’ butonuna tıklayarak oluşturmuş olduğunuz uygulamayı profilinize ekleyebilirsiniz.
  • Uygulamanıza ait ayar menüsünden Default FBML alanına ait değeri "Merhaba Facebook" tan farklı bir değer yaparak uygulamanızın profil kutusundaki karşılama metnini değiştirebilirsiniz.
  • Son olarak oluşturmuş olduğunuz uygulamaya profilinizin yanında yer alan menüden uygulamınızın adına tıklayarak ulaşabilirsiniz.

    Yukarıdaki tüm işlemleri gerçekleştirmek için facebook a üye girişi yapmanız gerektiğini belirtmeme gerek yok sanırım. Umarım açıklayıcı bir başlangıç yazısı olmuştur. Yukarıdakileri yaptığınız taktirde her ne kadar işlevsiz dahi olsa kendinize ait bir uygulamaya sahip olabilirsiniz. Ancak biraz +PHP bilgisi sayesinde şimdiden çok daha fazlasını geliştirebilirsiniz. Facebookta uygulama geliştirmek ile ilgili sonraki yazılarımda, AJAX, FBML ve FQL kullanımı hakkında bilgiler vermeyi düşünüyorum. Her türlü sorununuz, öneriniz için yorum yada iletişim bölümünü kullanabilirsiniz.