Category Archives: PHP

Videolu ve yazılı PHP Dersleri

PHP ile Hex Renk Kodunun Doğruluğunu Kontrol Etmek

7 yorum

Yakın zamanda hazırladığım filmzeo.com adlı projemde, kullanıcıların renkleri kendileri seçmesi için bir servis hazırladım. Dışarıdan hex değeri alıyor buna göre renklendiriyor. Ancak sadece hex kodu girmeleri gerekiyordu, örneğin “red” ya da renkle alakasız değerler girdiklerinde css’de sorunlara yol açıyordu. Bunun önüne geçmek için girilen renk değerinin hex olup olmadığını doğrulamam gerekiyordu. Ufak bir araştırma sonucunda ise aşağıdaki kodlar ile doğrulama işlemi yaptım. Birgün size de lazım olabilir diye paylaşıyorum.

$color = 'fa6582';
if (ctype_xdigit($color) && (strlen($color) == 6 || strlen($color) == 3)){
   echo 'geçerli hex renk kodu';
} else {
   echo 'geçersiz bir hex kodu';
}

kolay gelsin 🙂

Konuyu görmek için tıklayın

PHP ile Bir Dosyanın Karakter Kodlamasını Öğrenmek

yorum yok

Geçenlerde altyazıları yüklerken aklıma takıldı. Bazı altyazılar UTF-8, bazıları ise ISO-8859-9. Bu yüzden yazdığım kodlar birini düzgün gösterirken diğerini göstermiyordu. Bu yüzden dosyanın hangi karakter kodlamasına ait olduğunu öğrenmem gerekiyordu. Ve şöyle bir kod yazdım;

$open = file_get_contents('test.srt');
$enc = mb_detect_encoding($open, mb_list_encodings(), true);

echo $enc; // örnek çıktı: UTF-8 ya da ISO-8859-9

Peki bunu bulmak benim ne işime yaradı? Bu sayede header ile karakter setini belirleyebildim şu şekilde;

if ($enc == "UTF-8") {
    header('Content-type: text/vtt; charset=utf8');
} else {
    header('Content-type: text/vtt; charset=iso-8859-9');
}

Buda karakter problemlerimi çözmüş oldu. Bir gün böyle bir hata ile karşılaşırsanız artık çözümünü biliyorsunuz, kolay gelsin.

Konuyu görmek için tıklayın

PHP cURL ile JSON Data Göndermek

2 yorum

Bazen API’ler sizden json data göndermenizi isteyebiliyor, bu gibi durumda cURL ile post işleminde ufak birkaç eklemek yapmak gerekiyor. İlgili kod parçacağına aşağıdan bakabilirsiniz. Ayrıca post edilen yerde alma yöntemi de biraz farklı, onuda 2. kısımda bulabilirsiniz 🙂

$data = array("name" => "Tayfun", "age" => "24");                                                                    
$data_string = json_encode($data);                                                                                   
                                                                                                                     
$ch = curl_init('http://localhost/b.php');                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                   
                                                                                                                     
$result = curl_exec($ch);

echo $result;

isteği yaptığımız b.php’de ise json data’yı $_POST ile almaktan biraz daha farklı alıyoruz. Oda şöyle;

$posts = file_get_contents('php://input');
$jsonData = json_decode($posts, true);
print_r($jsonData);

Kolay gelsin 🙂

Konuyu görmek için tıklayın

PHP ile Sıfırdan Proje Oluşturmak

51 yorum

Bugün bir seriye başlamaya karar verdim. Aslında ilk bölümü çektiğimde bunun bir seri olmasını beklemiyordum ancak zaten eski PHP derslerim eskidiği için yenisini bunun ile çekebilirim.

İlk ders bir projenin altyapısı nasıl olmalı onunla ilgili. Yaklaşık 1 saatten uzun ve bir çok aksiliklerle dolu videoya aşağıdan ulaşabilirsiniz;

Güncelleme: .htaccess dosyanızda RewriteRule kuralının sonuna [QSA] ekleyin. Aksi taktirde $_GET parametrelerini çalıştıramazsınız. Örnek dosyalarda ben değişikliği yaptım, seviliyorsunuz.

Veritabanı sınıfı: https://github.com/tayfunerbilen/BasicDB
Permalink fonksiyonu: http://www.erbilen.net/php-sef-link-fonksiyonu
BasicDB Kullanımı: https://www.youtube.com/watch?v=RX7YxiMYzfA
Örnek dosyalar: https://yadi.sk/d/tt86xMDcxPYFc

Konuyu görmek için tıklayın

Zincirleme (Chain) Metodu

3 yorum

Bir çoğunuz yazılmış sınıfları incelediğinizde şu şekilde bir yazım tarzıyla karşılaşmış olabilirsiniz.

$text = new Text();
echo $text->write('Tayfun Erbilen')->color('red')->fontSize('20px')->show();

Bu örneğe ait sınıfımızı oluşturalım hemen.

class Text {
	
	private $text;
	private $style;

	public function write($text)
	{
		$this->text = $text;
	}

	public function color($color)
	{
		$this->style .= 'color: ' . $color . ';';
	}

	public function fontSize($size)
	{
		$this->style .= 'font-size: ' . $size . ';';
	}

	public function show()
	{
		return '<div style="' . $this->style . '">' . $this->text . '</div>';
	}

}

Ancak bu örnek hata verecektir. Çünkü bu şekilde bir yazım tarzı için yapmanız gereken $this objenizi geriye döndürmek. Yani sınıfımızı şu şekilde düzenlersek eğer;

class Text {
	
	private $text;
	private $style;

	public function write($text)
	{
		$this->text = $text;
		return $this;
	}

	public function color($color)
	{
		$this->style .= 'color: ' . $color . ';';
		return $this;
	}

	public function fontSize($size)
	{
		$this->style .= 'font-size: ' . $size . ';';
		return $this;
	}

	public function show()
	{
		return '<div style="' . $this->style . '">' . $this->text . '</div>';
	}

}

Artık bu şekilde bir kullanımı yapmaya hazırız.

Chain (zincirleme) metodu aynı zamanda jQuery içinde aynı mantıkta çalışır. Muhtemelen her dil için bu mantıktadır. Örneğin jQuery’de bir örnek vermem gerekirse, basit bir eklenti hazırlayalım.

$.fn.Text = function(text){
  $(this).html(text);
};

$('body').Text('Tayfun Erbilen').css({
    'color': 'red',
    'font-size': '20px'
  });

Bu şekilde bir zincirleme kullanımda çalışmayacaktır. Çünkü bir this objesi döndürmedik eklentimizde geriye. Eğer geriye this’i döndürürsek geriye kalan jQuery metodlarını da zincirleme olarak kullanabilirsiniz. O halde buna göre düzelttiğimizde son kod parçamız şöyle olacak;

$.fn.Text = function(text){
  $(this).html(text);
  return this;
};

$('body').Text('Tayfun Erbilen').css({
    'color': 'red',
    'font-size': '20px'
  });
Konuyu görmek için tıklayın

PHP timeAgo Fonksiyonu

8 yorum

Daha önce şurada paylaştığım halini unutup yeni halini kullanabilirsiniz 🙂

<?php

/**
 * @param $date
 * @return mixed
 */
function timeAgo($date)
{
    $timestamp = strtotime($date);
    $currentDate = new DateTime('@' . $timestamp);
    $nowDate = new DateTime('@' . time());
    return $currentDate
        ->diff($nowDate)
        ->format(' %y yıl %m ay %d gün %h saat %i dakika %s saniye önce');
}

$date = '2015-03-12 14:05:14';
echo timeAgo($date);
Konuyu görmek için tıklayın

Laravel 5 – Dil (Language) Sistemi

19 yorum

Laravel 5 ile proje geliştiren arkadaşlar için, dil sisteminin kullanımını anlatmak istiyorum.
4. sürüme göre biraz daha farklı bir konsepti var, malum filter’lar gitti middleware geldi vs. (4’ü hiç kullanmadığım için tam emin değilim ama neyse :D)

Konuyu görmek için tıklayın

League of Legends Api Kullanımı

16 yorum

signup_logo2

Geceleri kafa dağıtmak için oynadığım moba türü bir oyundur League of Legends.
Elbette biz meraklı geliştiricileri de unutmamışlar ve bir api servisi hazırlamışlar.

Oynayanlar bilirler lolnexus.com diye bir site var.
Oyuna girdiğimizde rakibi tanımak için buradan yardım alıyoruz.

Peki biz kendimiz için bir lolnexus yazabilir miyiz?
Cevap: Evet.
Lol Apisi ile bu mümkün.
Çünkü bize istediğimiz her şeyi veriyor 🙂

Konuyu görmek için tıklayın

BasicDB ile Kolay Veritabanı İşlemleri

34 yorum

1 yıl kadar önce size şu dersimde pdo kullanımını anlatmıştım.
Ancak gerek uzman cevap’ta gerekse gelen maillerde pdo kullanımında sıkıntı yaşıyan arkadaşlar olmuş.
Uzun bir süre önce bende kendi işlerimde kullanmak için pdo’ya ait BasicDB adında bir alt sınıf hazırladım.
Bu sayede veritabanı işlemlerimi daha kolay ve anlaşılır yapabiliyorum.
Sizlere de bu videomda bu sınıfın kullanımını örneklerle anlatacağım.

Konuyu görmek için tıklayın

Php ile Önemli Bilgileri Gizlemek

8 yorum

Başlık biraz saçma olmuş olabilir ancak bazı sitelerde örneğin telefon numaramızı eklediğimizde ilk 2 harf ve son 2 harf gözükür. Geri kalan yerler *** şeklinde filtrelenir.

Bugün uzman cevap’ta böyle bir soru sorulduğu için bir fonksiyon hazırladım, sizlerle de paylaşıyorum. Daha kısa bir yolu var mıdır emin değilim 🙂

function private_str($str, $start, $end){
   $after = mb_substr($str, 0, $start, 'utf8');
   $repeat = str_repeat('*', $end);
   $before = mb_substr($str, ($start + $end), strlen($str), 'utf8');
   return $after.$repeat.$before;
}
Konuyu görmek için tıklayın