PHP ile Tarihe Tarih Ekleme ve Çıkarma

Çok basit bir şekilde tarihe tarih ekleme veya çıkarma işlemini göstereceğim. Oldukça basit çünkü genellikle uzun uzun satırlarla yapılan işlemler mevcut. Hatta bazı algoritmalarda bugünden başlayıp o tarihe gidip o tarih üzerine işlem yapanlarda mevcut.

Anlatmak istediğim aşağıdaki gibidir


// 2018-05-07 tarihine 90 gün eklemek.
date( 'Y-m-d', strtotime( '2018-05-07 +90 day' ) );

// 2018-05-07 tarihine 3 ay eklemek.
date( 'Y-m-d', strtotime( '2018-05-07 +3 month' ) );

// 2018-05-07 tarihine 5 yıl eklemek.
date( 'Y-m-d', strtotime( '2018-05-07 +5 year' ) );

// 2018-05-07 tarihine 90 gün çıkarmak
date( 'Y-m-d', strtotime( '2018-05-07 -90 day' ) );

// 2018-05-07 tarihine 3 ay çıkarmak
date( 'Y-m-d', strtotime( '2018-05-07 -3 month' ) );

// 2018-05-07 tarihine 5 yıl çıkarmak
date( 'Y-m-d', strtotime( '2018-05-07 -5 year' ) );

Harici fonksiyonlar kullanmadan hızlıca tarih işlemlerinde ekle ve çıkarma yapabilirsiniz. Tabi bu yöntem işinizi görüyor olmalı 🙂
Örneklerimde Yıl-Ay-Gün kullandım. Siz format değiştirip kullanabilirsiniz..

PHP Ufak Tefek Fonksiyonlar -3

PHP üzerinde ufak tefek fonksiyonlarımdan paylaşmaya devam ediyorum. Bir önceki yazıya buradan ve buradan ulaşabilirsiniz.

Web servis olarak JSON formatında karşılamakta olduğunuz bir sayfanız mevcut ise aşağıdaki fonksiyon tam olarak size göre.

Web servis tarafında geliştirme yaptığımızı düşünelim. Web servislerde her zaman klasik yöntemler yani GET, POST olarak bilgiler gelmeyebilir. XML, JSON gibi farklı formatlarda gelen istekleri karşılayıp dizi veya obje nesnesi olarak almamız gerekebilir. Aşağıdaki fonksiyon da dizi olarak geri döndürülmüştür. Ekstra olarak dizi içerisine client tarafın IP adresi de eklenmiştir.

function input_post_json()
{
$data = json_decode(file_get_contents('php://input'), true);
$data[ 'ip' ] = $_SERVER[ 'REMOTE_ADDR' ];
return $data;
}

Daha saf hali diyebiliriz;

function input_post_json()
{
return json_decode(file_get_contents('php://input'), true);
}

PHP de validasyonlar için çok farklı yöntemler mevcut bazıları ise tekrar tekrar yazmak yerine bu şekilde daha kullanışlı ve hızlıca erişebileceğimiz pozisyonda oluyor.

function ip_control( $ip )
{
if( !$ip )
return false;
if (!filter_var($ip, FILTER_VALIDATE_IP) === false)
return true;
return false;
}

Bir çok yerde kullandığım uzun yazıları kısaltmak amaçlı yazdığım bir fonksiyon. Kısaltmaktan kastım sonuna “. . .” üç nokta ile birlikte uzantı ekleyebilmek. Örn : Bir tablonuz var. Hücre içerisinde en fazla 50 karakter yazabiliyorsunuz. Yoksa alt satıra geçiyor veya tablo dağılıyor. Bunun için bu fonksiyona 47 değeri verdiğinizde elinizdeki metinden 0 ile 47 karakter arasını alıp sonuna üç nokta ekliyor.

function three_point( $text, $par )
{
return mb_substr( $text, 0, $par ).( strlen( $text ) > $par ? '...' : null );
}

 

Bir sonraki ufak tefek fonksiyonlarda görüşmek üzere.

 

JQuery Ajax Error Handling / Hataları Toplamak

Jquery Ajax kullandığımız birçok projenin backend tarafında oluşan hataları AJAX tarafında genellikle yakalamak oldukça zordur. Hele birde dataType’ınız JSON gibi farklı formatlar da ise zorluk dereceniz bir tık daha artacaktır.

Fakat her AJAX işleminde success, error işlemlerini yakalamak oldukça zahmetli bir iş. Ekstra fazladan kodlar, bulunamayan satırlar bunlar hep dert.

Aşağıdaki kod parçacağımız sayesinde sistemimizdeki AJAX işlemlerine ekstra olarak error event vermek yerine tüm sisteminizdeki error eventları tek bir yerde topluyoruz ve isterseniz de tekrar başka bir yöntem veya yine AJAX ile herhangi bir yere LOG olarak yazabilirsiniz.

AJAX Error Handling

$( document ).ajaxError( function( event, jqxhr, settings, thrownError )
{
console.log( jqxhr.responseText.trim() );
});

 

Ben kısaca özetleyip, kullanımını belirttim. Console.log ile ekranda görünmesini sağladım.  Gerisi sizde. 🙂 Bu hareketi gördükten sonra bir çok hatayı hızlıca çözmeye başladım / başladık.

PHP Ufak Tefek Fonksiyonlar – 2

PHP üzerinde ufak tefek fonksiyonlarımdan paylaşmaya devam ediyorum. Bir önceki yazıma buradan ulaşabilirsiniz.

Bootstrap gibi HTML / CSS frameworkleri kullanıyorsanız veya kullanmıyorsanız da uyarı ( alert ) sistemlerini kullanıyorsunuzdur.  Bootstrap üzerinden örnek vermek gerekirse ALERT için ufak bir fonksiyon ile hızlıca uyarı sistemlerinizi geliştirebilirsiniz. Ek olarak bütün uyarılarınız tek bir fonksiyon üzerinden çıkacağı için durumu yani status değeri “danger” olanları başka bir yerde loglamak gibi basit bir örnek verebilirim.

function alert( $message, $status = '', $close = false, $back_link = false )
{
$x = ( $close ) ? '<button type="button" class="close" data-dismiss="alert">×</button>' : null ;
$y = ( $back_link ) ? '<a href="javascript:history.back()" class="btn btn-'.$status.'"><i class="fa fa-back"></i>Geri Dön</a>' : null ;
$html = '<div class="alert alert-'.$status.'">
'.$x.' '. $message .' '.$y.'
</div>';
return $html;
}
    • $message değişkeni
      • Gösterilecek olan mesaj
    • $status değişkeni
      • Bootstrap kullanıyorsanız .alert .alert-info gibi değerleri sadece info, danger, warning, success gibi değerler alır
    • $close değişkeni
      • Alert nesnesine kapatma butonu ekler
    • $back_link değişkeni
      • Alert nesnesine Geri Dön butonu ekler

 

Rastgele şifre oluşturma fonksiyonu;

function random_password( $length = 7 )
{
$chars = 'qwertyuiopasdfghjklzxcvbnm0123456789';
$new = '';
for( $i = 0; $i < $length; $i++ )
$new .= $chars[ rand( 0, strlen( $chars ) ) ];
return $new;
}

$length değişkeni sayesinde istenilen uzunlukta rastgele şifreler oluşturabilirsiniz. Bu tarz fonksiyonlar daha çok şifre hatırlat, sms ile onay kodu gibi sistemlerde hızlıca bir şifre üretmek amaçlı kullanılabilir.

 

Css keyframes ile animasyon yapımı

Merhaba arkadaşlar, internet sitelerinde gezerken sağdan soldan akan yazıları veya görsellerin animasyon efeklerini merak etmişsinizdir. Bugün sizlere css keyframeslerden bahsetmek istiyorum.   Class (.) ya da İd (#) lerde kullanılır. Css ‘animation’    içerisinde kullanım gerçekleştirilmektedir. Keyframesizin işlem sıralamasıda önemlidir. %0 %25 %50 % 75 %100 şeklinde hareket pozisyonları belirleyebilir bu % leri çoğaltabilir ya da arttıradabilirsiniz.

.logo img
{
    max-width: 200px;
    max-height: 100px;
    animation: buyume 1s ease-in-out;
}


Yazmış olduğumuz keyframesimizi bu şekilde kullanabiliriz. Size küçük bir bilgi vermek istiyorum yapmak istediğiniz işlemi sonsuz bir döngüye sokmak isterseniz keyframesimizin hareket pozisyonlarından sonra sonuna ‘infinite’ vererek sonsuz animasyon yapabilmenizi sağlar. 

Örnk

.logo img
{
    max-width: 200px;
    max-height: 100px;
    animation: buyume 1s ease-in-out infinite;
}

Hadi başlayalım

1-) Keyframes’e bir isim vererek animasyonumuzun hareket pozisyonlarınızı verebilirsiniz.


@keyframes buyume 
{
    0%
    {
        max-width: 200px; 
        opacity: 0;
    }
   50% 
    {
        max-width: 80px;  
        opacity: 1;
    }
    100% 
    {
        max-width: 200px;  
        opacity: 0;
    }
}

PHP Ufak Tefek Fonksiyonlar – 1

Hangi yazılım diliyle yazılım geliştirirseniz geliştirin mutlaka kıyıda köşede birikmiş ufak tefek fonksiyonlarınız vardır. Bunları da alıp hemen hemen her projenizin kıyısına köşesine yerleştirip projenizi yönlendirmeye devam edersiniz. Bu işlem hızlıdır, güvenilirdir ve en önemlisi sadıktır. Çünkü yazılan koddan eminsinizdir. Kim bilir kaç yerde kullandınız da arkanıza dönüp bakmadınız. 🙂

Bende bu şekilde kullanmış olduğum fonksiyonlardan örnekler paylaşacağım. PHP ile geliştirmekte olduğumuz sistemlerimizden dolayı örnekler PHP üzerinden olacaktır. Diğer dillerden de örnekler vermeye çalışacağım zamanla.

String bir değişken içerisinde arama;

function in_string( $string, $val )
{
if ( !( strrpos( $string, $val ) === false ) )
return true;
return false;
}

Yukarıdaki fonksiyon strrpos aklıma gelmediği için yazılmıştır. Başka bir amacı yok diyebilirim 🙂 Okumaya devam et “PHP Ufak Tefek Fonksiyonlar – 1”

PHP SSH2 Kütüphanesi

PHP ile linux server tarafında başka bir linux server a bağlanıp işlem yapmanız gerekiyor ise SSH2 eklentisi tam olarak size göre. Birçok servisimizde ve projemizde kullanmış olduğumuz SSH2 eklentisine ufak bir kütüphane yazdım.

SSH2 kütüphanesini kullanabilmek için kullanmış olduğunuz Linux dağıtımına göre kütüphaneyi kurmanız gerekiyor. Centos 7 için kullanmış olduğum kaynak : https://www.adveyer.com/blog/centos-7-ssh2-php-extension-kurulumu/ Okumaya devam et “PHP SSH2 Kütüphanesi”

JQuery ile Nesnenin Show / Hide Event Yakalama

Javascript tarafında oldukça fazla event ( olay ) var. JQuery ile birleştiğinde daha da fazla eventlara hatta özelleştirilmişlere dahi sahip olabiliyorsunuz. Bir projede form hazırlarken div nesnesinin show / hide durumuna göre başka bir nesnenin işlenmesi gerekiyordu. Ufak bir araştırma sonucu herhangi bir nesnenin – sadece div değil – show / hide durumlarına göre event atayabileceğimi buldum.

Aşağıdaki kod ile bu event ın tanımlamasını yapıyoruz

( function( $ )
{
  $.each(['show', 'hide'], function (i, ev)
  {
var el = $.fn[ ev ];
$.fn[ ev ] = function()
{
  this.trigger( ev );
  return el.apply( this, arguments );
};
  });
})(jQuery);

Örnek kullanım;

$( 'div' ).on( 'show', function()
{
$( 'span' ).html( 'div gösterim durumu açık' );
});
$( 'div' ).on( 'hide', function()
{
$( 'span' ).html( 'div gösterim durumu kapalı' );
});

Siz div veya kendi class / id her neyse artık $( ‘div’ ).show(); veya $( ‘div’ ).hide(); yaptığınızda span nesnesi içerisinde durumunu açıklayan yazıyı yazacak. Bu ihtiyaç bizim için sekmeli form işlemi yaparken verilen cevaplara göre bir sonraki sorunun ( her bir soru bir div içerisinde yapı olarak yer alıyor )  hangisi olacağını belirliyordu. Basit bir işlem için bu şekilde bir kullanıma gerek kalmayabilir fakat hareket güzel. 🙂

Denemedim fakat event ataması yapılırken each ile birlikte show / hide belirteci yapılırken farklı eventlar üzerinden event türetimi yapılabilir sanırım.

PHP ile E-Fatura Mükellefi Sorgulama

Son yıllarda E – Fatura / E – Arşiv muhabbetlerinin döndüğünü biliyorsunuzdur. E-Fatura tarafında yaptığımız bir çalışma üzerinde E-Fatura mükelleflerinin anlık sorgulanması gerektiğini gördük. Bunun için herhangi bir web servis bulamadık. Bundan dolayı kendi web servisimizi yazalım dedik.

Aşağıdaki kod excel çıktısının içerisinde tek seferlik bir text search yaparak cevabını vermekte.  in_string fonksiyonu daha önceden hazırdı. 🙂 ;

function in_string( $string, $val )
{ 
if ( !( strrpos( $string, $val ) === false ) )
return true;
return false;
}

function check_tax( $vkn )
{ 
if( !$vkn || !is_numeric( $vkn ) || !in_array( strlen( $vkn ), array( 10, 11 ) ) )
return false;
set_time_limit( 60 );
$get = file_get_contents("http://sorgu.efatura.gov.tr/kullanicilar/yliste.php?&amp;xls" );
if( !$get )
return false;
$return = false;
if( in_string( $get, $vkn ) )
$return = true;
unset( $get ); // ufak bi temizlik
return $return; 
}
check_tax( 'VERGI_NO' );

Tabiki siz bu işlemi sürekli olarak sorgu.efatura.gov.tr üzerinden çekmek yerine veritabanınıza veya başka bir dosyanıza kaydedip sorgulamalarınızı yapabilirsiniz..

edit : Barış Demir
Bir yazılımcı arkadaşın yardımıyla aşağıdaki kadar olayı basitleştirmiş oldu. Teşekkürler..

function check_cari_tax( $vkn )
{
if( !$vkn )
return 0;
$url = 'http://sorgu.efatura.gov.tr/kullanicilar/yliste.php?ara='.$vkn;
$result = file_get_contents( $url );
if( preg_match( "/".$vkn."/i", $result ) )
return 1;
return 0;
}