Instagram PHP API Kullanımı

Bu yazımda sizlere unofficial yani gayri resmi bir instagram API’si olan mgp25 Instagram API’sinden bahsedeceğim. Sanırım şu an piyasadaki unofficial api’lerin en iyisi diyebiliriz. Okumaya devam et “Instagram PHP API Kullanımı”

Composer Kurulumu ve Kullanımı (macOS & Windows)

PHP’de bağımlılıkları yüklemek için kullandığımız Bağımlılık ya da Paket Yöneticisi olarak adlandırdığımız Composer nasıl kurulur, nasıl kullanılır bunları öğreneceğiz. Okumaya devam et “Composer Kurulumu ve Kullanımı (macOS & Windows)”

Google PHP API ile Real Time Analytics Bilgilerini Almak

Merhaba arkadaşlar, Google’ın bize sunmuş olduğu beta olarak kullandığımız PHP API’yi kullanarak real time analytics bilgilerini nasıl alacağımızı öğreneceğiz. Hadi başlayalım. Okumaya devam et “Google PHP API ile Real Time Analytics Bilgilerini Almak”

PHP ile T.C. Kimlik No Doğrulama

Devletin bize verdiği SOAP servisi sayesinde, T.C. Kimlik Numarasının gerçekten doğru olup olmadığını kontrol edebiliyoruz. Bunuda PHP’de aşağıdaki şekilde kullanıyoruz. Burada dikkat edilmesi gereken gönderilen ad ve soyad’ın büyük harflerle yazılmasıdır. Aksi taktirde doğrulama işlemi çalışmamaktadır. Eğer bu TCKimlikNoDogrula metodu nereden çıktı, TCKimlikNoDogrulaResult property’sini nasıl elde ettik derseniz SoapClient ile bağlandığımız yerden aldık bu bilgileri. Yani kafadan oluşturmadık 🙂

$client = new SoapClient("https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL");
try {
    $result = $client->TCKimlikNoDogrula([
        'TCKimlikNo' => '5555555555',
        'Ad' => 'TAYFUN',
        'Soyad' => 'ERBİLEN',
        'DogumYili' => '1993'
    ]);
    if ($result->TCKimlikNoDogrulaResult) {
        echo 'T.C. Kimlik No Doğru';
    } else {
        echo 'T.C. Kimlik No Hatalı';
    }
} catch (Exception $e) {
    echo $e->faultstring;
}

PHP ile Basit MVC ve Routing Sistemi

Aslında bu dersi önce routing sistemini göstermek için hazırladım ancak sonlara doğru controller, view, model vs. derken basit bir mvc mantığını kurunca dedim adını böyle yapalım en iyisi 🙂

Dersin kaynak dosyaları;
https://github.com/tayfunerbilen/prototurk-mvc-routing-ornek

PHP Multi Process Asenkron Dosya Çalıştırma

Şimdi bildiğiniz gibi PHP’de kodların hepsi execute olduktan sonra sayfada gösterilir. Yani hepsi bitmeden işlem sonuçlanmaz. Bazı durumlar vardır ki, bunun böyle olmasını istemezsiniz. Örnek vermek gerekirse, bir e-posta bülten listeniz olsun. Ve bir konu paylaştıktan sonra atıyorum 5000 kişilik listeye e-posta göndereceksiniz.

Eğer bunu postu paylaşır paylaşmaz yaparsanız mailler gönderilene kadar sayfada bir bekleme süresi olacak. Ancak bizim istediğimiz, bunu arkaplan’da çalıştırarak göndermek. Aslında bunun için çok basit bir şey yazacağız. Öncelikle mailleri gönderecek php dosyasını oluşturalım. Örneğin send-email.php olsun.

<?php

sleep(5); // 5 sn sonra çalış

$postId = $argv[1];
// .. mail gönderme işlemleri vs.

?>

Şimdi postu yayınladıktan sonra şu kodu çalıştırmamız yeterli olacak;

exec('php -f send-email.php -- "5" > /dev/null 2>&1 &');

Burada tabi doğru dosya yolunu vermek önemli. Bu şekilde kodumuz çalıştığında send-email.php’deki 5 saniye bekleme kısmı mevcut sayfaya yansımayacaktır. Biz konumuzu oluşturmuş ve beklemeden işlem yapmaya devam ederken arkaplanda mailler gitmeye devam edecektir. Ayrıca dikkat ettiyseniz send-email.php’ye parametre gönderdik exec() komutu içinde. Gelen parametreleri $argv değişkeninde tutuluyor. 0 indexli olan değer dosyanın adı o yüzden 1’den başlayarak kullanın.

Birden fazla parametre göndermek isterseniz;

exec('php -f send-email.php -- "5" "tayfun erbilen" "deneme" > /dev/null 2>&1 &');

şeklinde gönderebilirsiniz. send-email.php’de $argv[1] $argv[2] $argv[3] şeklinde değerlere ulaşabilirsiniz.

Not: exec() fonksiyonu genelde hostinglerde güvenlikten dolayı kapalı oluyor. Bu yüzden kendi sunucunuzu kullanmaya çalışın, zaten hosting nedir allah aşkına? Boşverin onları 🙂

Kolay gelsin.

PHP’de İfadeleri Karşılaştırmak

Bazen yönetim paneline girişleri veritabanı yerine dosyada tutuyorum. Basit bir if-else kontrolü ile giriş yaptırıyorum. Bu gibi durumlarda, kullanıcı adı ve şifre nasıl yazıldıysa aynen o şekilde yazdırmak gerekiyor. Yani büyük küçük harfe vs. duyarlı oluyor. Bu gibi durumlar için PHP’de karşılaştırma fonksiyonları var. Örneğin 2 ifadenin doğruluğunu karşılaştırıyor. Mesela;

$a = 'Tayfun';
$b = 'Tayfun';
echo strcmp($a, $b); // Çıktı: 0

Eğer sonuç 0 ise, ifadeler birbirine eşit demektir. Ancak bu örneği şöyle değiştirseydik;

$a = 'Tayfun';
$b = 'tayfun';
echo strcmp($a, $b); // Çıktı: -32

Bu durumda ifadeler birbiriyle eşleşmiyor çünkü büyük küçük harf problemi devreye giriyor. Bunu çözmek için ise strcasecmp() fonksiyonunu kullanabiliriz. Aynı örneği birde şöyle yapalım;

$a = 'Tayfun';
$b = 'tayfun';
echo strcasecmp($a, $b); // Çıktı: 0

Sonuç başarılı. Yani bu gibi durumlar için strcasecmp() fonksiyonu kullanılabilir.

strftime() Türkçe Karakter Hatası ve Çözümü [PHP]

PHP’de türkçe tarih belirlerken setlocale() ve strftime() fonksiyonlarını kullanıyoruz. Örnek vermek gerekirse;

setlocale(LC_TIME, 'tr_TR');
echo strftime('%d %B %Y'); // 28 Eyl�l 2018

Ancak bu bazı sunucularda türkçe karakter hatalarına yol açıyor. Örneğin yukarıdaki çıktıda olduğu gibi.. Bu gibi durumlarda iki şey yapılabilir.

1. çözüm yolu

setlocale() fonksiyonunda 2. parametrede dil ve ülke kodu verilirken nokta ile karakter seti tanımlaması yapılabilir. Örneğin;

setlocale(LC_TIME, 'tr_TR.UTF-8');

Bu problemi ortadan kaldıracaktır.

2. çözüm yolu

srtftime() fonksiyonu utf8_encode() fonksiyonundan geçirilebilir. Örneğin;

setlocale(LC_TIME, 'tr_TR');
echo utf8_encode(strftime('%d %B %Y')); // 28 Eylül 2018

Bugün benim başıma geldi, çözümü arayıp buldum. Yarın sizinde başınıza gelirse bu şekilde halledebilirsiniz. Kolay gelsin 🙂

PHP ile Hook (Kanca) Plugin Sistemi

Merhaba arkadaşlar, bu yazıda sizlere PHP’de kullanabileceğimiz kanca sisteminin mantığını anlatmak istiyorum.

Öncelikle eğer wordpress ile çalıştıysanız, eklenti yazarken wordpress’in bir çok kısmına müdahale ettiğinizi görmüşsünüzdür. Örneğin yeni bir plugin yazdığınızda admin panelinde sol menüye plugin linkinizi ekletebilirsiniz, ya da title’lara müdahale edebilirsiniz plugin’de vs. Yani wordpress’in sistemde belirlediği kısımlara, siz bu kanca sistemini kullanarak ilgili fonksiyonlarınızı çalıştırabiliyorsunuz.

PHP’de bu sistem doğrudan bulunmuyor, ancak PHP’nin özelliklerini kullanarak bunu yapmak mümkün. Bu sistemi sınıf ya da fonksiyon olarak tanımlamak mümkün. Şimdi sizlere video’da yazdığım fonksiyonların kodlarını veriyorum;

<?php

function hook($name, $callback = null, $value = null, $priority = 10){
    static $events = [];
    if ($callback !== null){
        if ($callback){
            $events[$name][$callback] = $priority;
        } else {
            unset($events[$name]);
        }
    } elseif (isset($events[$name])){
        arsort($events[$name]);
        foreach ($events[$name] as $callback => $priority){
            $value = call_user_func($callback, $value);
        }
        return $value;
    }
    return $value;
}

function add_action($name, $callback, $priority = 10){
    return hook($name, $callback, null, $priority);
}

function do_action($name, $value = null){
    return hook($name, null, $value);
}

function remove_action($name){
    hook($name, false);
}

Ve artık bu sistemi kullanarak aşağıdaki gibi örnekler yapabilirsiniz.

<?php

// a plugin
add_action('title', 'yeni_baslik');
function yeni_baslik(){
    return 'tayfun erbilen bu dersi çekti.';
}

// b plugin
add_action('title', 'yeni_baslik2');
function yeni_baslik2($text){
    return $text . ' Ve youtube kanalında yayınladı!';
}

// c plugin
add_action('menu', 'c_plugin_menu', 12);
function c_plugin_menu($menu){
    $menu[] = [
        'title' => 'C Plugin',
        'url' => 'c-plugin.php'
    ];
    return $menu;
}

// d plugin
add_action('menu', 'd_plugin_menu', 11);
function d_plugin_menu($menu){
    $menu[] = [
        'title' => 'D Plugin',
        'url' => 'd-plugin.php'
    ];
    return $menu;
}

echo do_action('title');

print_r(do_action('menu', []));

Daha iyi anlamak için videoyu izlemeyi unutmayın

Ve eğer hala satın almadıysanız, Udemy için hazırladığım PHP Eğitim Setime aşağıdaki linkten ulaşabilirsiniz <3
https://www.udemy.com/php-egitim-seti/?couponCode=PHPWEB

PHP ile Excel Dosyalarını Okumak

Şu yazımda php ile nasıl excel dosyası oluşturulacağını göstermiştim. Bu yazımda ise, daha elzem bir konuya değineceğiz. Geçenlerde bir excel dosyasının içinden verileri almam gerekti, araştırırken baktım ki çok kalabalık kodlar var, benim amacım alt tarafı satır satır okuyup verileri almak o kadar. Sonra bir repo’ya denk geldim, Sergey Shuchkin abimiz bir sınıf yazmış bu işlemler için. Basit, kullanışlı, amaca hitap ediyor.

Öncelikle dosyaları şuradan temin edin;
https://github.com/shuchkin/simplexlsx (not: adama star atmayı unutmayın :D)

Kullanımı ise çok basit;

if ( $xlsx = SimpleXLSX::parse('test.xlsx') ) {
    print_r( $xlsx->rows() );
} else {
    echo SimpleXLSX::parse_error();
}

excel’deki satırları dizi halinde size verecek, seçip istediğinizi kullanabilirsiniz.

Kolay gelsin.