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 SoapClientile 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 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.

PHP gzcompress() ve gzuncompress() Fonksiyonları

Ne zaman sıkıştırmaktan bahsetsek, aklımız hep dosyaları sıkıştırmaya gidiyor, mesela ZIP dosyaları gibi. Ancak PHP’de uzun string ifadeleri de sıkıştırmanın bazı yolları var. Bu işlem için ise gzcompress() fonksiyonu kullanılıyor.

gzcompress()

Uzun string ifadeleri sıkıştırmak için kullanılır. Örnek vermek gerekirse;

$string = '1993 yılının Ocak ayında Eskişehir‘de dünyaya gözlerimi açtım. Sakin bir çocukluk geçirdikten sonra gençliğimin bir bölümünü oyunlara harcadım. Daha sonra front-end ile tanıştım ve uzun yıllar (halen) front-end olarak profesyonel çalışmalar yaptım (yapmaktayım). Front-end yanında birde back-end desteğimin olmasını istediğim için çeşitli yazılım dilleri ile bir çok profesyonel yazılım geliştirdim (hala geliştirmekteyim). 1993 yılının Ocak ayında Eskişehir‘de dünyaya gözlerimi açtım. Sakin bir çocukluk geçirdikten sonra gençliğimin bir bölümünü oyunlara harcadım. Daha sonra front-end ile tanıştım ve uzun yıllar (halen) front-end olarak profesyonel çalışmalar yaptım (yapmaktayım). Front-end yanında birde back-end desteğimin olmasını istediğim için çeşitli yazılım dilleri ile bir çok profesyonel yazılım geliştirdim (hala geliştirmekteyim).';
 
$compressed = gzcompress($string);

// Orijinal Boyutu: 935 
echo 'Orijinal Boyutu: '. strlen($string);

// Sıkıştırılmış Boyutu: 311
echo 'Sıkıştırılmış Boyutu: '. strlen($compressed);

gzuncompress()

Bu işlemi geri almak içinse bu fonksiyon kullanılır. Yukarıdaki örneğin devamı olarak şöyle örnek verelim;

$original = gzuncompress($compressed);

// Orijinal Boyutu: 935
echo 'Orijinal Boyutu: '. strlen($original);

PHP serialize() ve unserialize() Fonksiyonları

PHP’de hiç kompleks bir değişkeni veritabanında ya da dosyalarda saklamak istediniz mi? Örneğin tipi array olan bir değişkeni veritabanında saklamak istiyoruz. İşte bunu serialize() fonksiyonu ile yapmamız mümkün.

serialize()

Şimdi kompleks bir dizimizi saklayacak hale getirelim.

$arr = [
	'Tayfun Erbilen',
	'site' => 'http://erbilen.net',
	1993,
	[
		'ad' => 'Tayfun',
		'soyad' => 'Erbilen'
	]
];

$data = serialize($arr);
echo $data;

/*
a:4:{i:0;s:14:"Tayfun Erbilen";s:4:"site";s:18:"http://erbilen.net";i:1;i:1993;i:2;a:2:{s:2:"ad";s:6:"Tayfun";s:5:"soyad";s:7:"Erbilen";}}
*/

unserialize()

Serialize ettiğimiz datayı tekrar eski orijinal haline getirmek istersekte şöyle yapacağız;

$arr = [
 'Tayfun Erbilen',
 'site' => 'http://erbilen.net',
 1993,
 [
 'ad' => 'Tayfun',
 'soyad' => 'Erbilen'
 ]
];

$data = serialize($arr);
echo $data;

/*
a:4:{i:0;s:14:"Tayfun Erbilen";s:4:"site";s:18:"http://erbilen.net";i:1;i:1993;i:2;a:2:{s:2:"ad";s:6:"Tayfun";s:5:"soyad";s:7:"Erbilen";}}
*/

$array = unserialize($data);
print_r($array);

/*
(
    [0] => Tayfun Erbilen
    [site] => http://erbilen.net
    [1] => 1993
    [2] => Array
         (
             [ad] => Tayfun
             [soyad] => Erbilen
         )
)
*/

İşte bu şekilde kompleks verilerinizi veritabanında saklayabilirsiniz.

Bu işlemi ayrıca json_encode() ve json_decode() fonksiyonları ilede yapabilirsiniz. Merak edenler buraya tıklayıp inceleyebilir.

PHP glob() Fonksiyonu

PHP’de sevdiğim ve yararlandığım bir fonksiyon var. Bu fonksiyonun adı glob() 

Fonksiyon ne işe yarıyor?

Dizin içerisinde eşleşen dosyaları bulmamızı sağlıyor. Örneğin kolayca tüm php dosyalarını bulabiliriz. Şöyle ki;

// Dizindeki tüm php dosyalarını bul
$files = glob('*.php');

print_r($files);
/*
Array
(
    [0] => _index.php
    [1] => ip.php
)
*/

Ya da bir başka örnek, birden fazla uzantılı dosyaları şu şekilde bulabiliriz;

// Dizindeki tüm php ve css dosyalarını bul
$files = glob('*.{php,css}', GLOB_BRACE);

print_r($files);

/*
Array
(
    [0] => _index.php
    [1] => ip.php
    [2] => bitnami.css
    [3] => style.css
)
*/

İsterseniz bulunduğunuz dizini değil, kendiniz dizin ayarlayarakta listeleme yapabilirsiniz. Örneğin;

// animalpedia dizinindeki tüm html dosyalarını bul
$files = glob('animalpedia/*.html');

print_r($files);

/*
Array
(
    [0] => animalpedia/alt.html
    [1] => animalpedia/index2.html
)
*/

Tam dosya adreslerini almak isterseniz array_map() fonksiyonu ile realpath() uygulamak yeterli olacaktır. Şöyle ki;

// animalpedia dizinindeki tüm html dosyalarını bul
$files = glob('animalpedia/*.html');

$files = array_map('realpath', $files);

print_r($files);
/*
Array
(
    [0] => /Applications/XAMPP/xamppfiles/htdocs/animalpedia/alt.html
    [1] => /Applications/XAMPP/xamppfiles/htdocs/animalpedia/index2.html
)
*/

İşte bu kadar ????

Sonuç olarak bu fonksiyonu kullanacağınız bir çok yer olacağına eminim. Bilmiyorsanız öğrendiniz, biliyorsanız pekiştirdiniz. Bir başka fonksiyon anlatımında görüşürüz ^^

strtolower() ile Türkçe Karakterlerin Küçültülmesi (Php)

Bildiğiniz gibi strtolower() fonksiyonu ile türkçe (latin karakterleri) düzgün şekilde küçültemiyoruz. Aslında bu sadece küçültme işlemi için geçerli değil, latin karakterlerde her zaman bir sorun yaşıyoruz. Büyültmede, kesmede vs. Bu yüzden php bize karakter seti tanımlayabileceğimiz mb_ li fonksiyonları türetmiştir. Hemen bir örnekle açıklayalım;

$harf = 'İ';

echo strtolower($harf); // Çıktı: Ä°

echo mb_strtolower($harf, 'utf8'); // Çıktı: i

kolay gelsin ????