Kategori arşivi: Php

Bir programlama dili olan php ile ilgili makaleler ve yazılar.

Composer Nedir, Kurulumu ve Kullanımı

Composer, Php için bağımlılık yönetimini sağlamaya yarayan araçtır. Kullanılan paketlerin/kütüphanelerin kurulmasını ve güncellenmesini sağlar. Nils Adermann ve Jordi Boggiano tarafından geliştirilmiş ve 2012 yılının mart ayında yayınlanmıştır. Node.js npm’den ve Ruby bundler’dan esinlenmişlerdir. Komut satırı(terminal/cli) üzerinden kullanılır ve dört temel komutu bulunur.

require: İstenilen bir paketi composer.json dosyasına ekler ve kurar
install: composer.json dosyasında bulunan tüm paketleri kurar
update: composer.json dosyasında bulunan tüm paketleri günceller
remove: İstenilen bir paketi composer.json dosyasın siler ve paketi kaldırır

Kurulum

Composer resmi sitesinde, farklı işletim sistemleri için kurulum yönergeleri bulunmaktadır. Dikkat edilmesi gereken, composer’ı işletim sistemine global olarak kurmaktır. Bu yöntemle daha kolay bir kullanım sağlanacaktır. Kurulum sonrasında aşağıdaki komutla kontrol sağlanabilir.

composer -v

Kullanım

Örnek kullanım olması için dotenv kütüphanesini kuralım ve kullanalım. Kütüphane proje genelinde kullanacağımız değişkenleri “.env”(genelde) dosyası üzerinden tanımlamak ve ihtiyaç duyulan yerlerde kullanmak için geliştirilmiş. Kütüphaneyi kurmak için aşağıdaki komutu çalıştırıyoruz.

composer require vlucas/phpdotenv

Bu komut, yoksa proje kök dizininde composer.json ve composer.lock dosyalarını ve vendor klasörünü oluşturur. Şimdi .env ve index.php dosyalarını oluşturalım.

ORNEK_DEGISKEN="Merhaba Dünya!"
<?php

require __DIR__ . '/vendor/autoload.php'; // composer ile gelen autoloader

use Dotenv\Dotenv; // kurduğumuz dotenv kütüphanesini dahil ediyoruz

$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

var_dump($_ENV['ORNEK_DEGISKEN']);

Kapanış

Php’nin temel konusu olan composer’ı kısaca anlatmaya çalıştım. Elbette daha anlatıması gereken konuları vardır. Yazıya ilgi ve soru gelirse genişletmeye çalışacağım. Yorumlarınızı bekliyorum. Paylaşmayı unutmayın 🙂

Php Pdo Kullanımı

Php Data Objects kelimelerinin kısaltması olan PDO’yu Türkçe’ye Php Veri Nesneleri olarak çevirebiliriz. Veritabanına erişmek için hafif, tutarlı ve güvenli bir arayüz sunması nedeniyle PDO yoğun olarak tercih edilmekte. Özellikle Sql Injection riskine karşı en güvenli tercihlerden birisi. Elbette sunulan kullanıma uygun olarak, “prepared query” tercih edilirse. Popüler veritabanları olan Mysql, MariaDb ve PostgreSql gibi bir çok veritabanını desteklemekte. Sql dilini kullanarak sorgularımızı yapabiliyoruz.

Öncelikle PDO’nun aktif edilmesi gerekiyor. php.ini dosyasından, “;extension=php_pdo_mysql.dll” satırının başındaki noktalı virgül kaldırılımalı ve apache yeniden başlatılmalı. Sonrasında PDO’yu kullanılabilir.

Veritabanına Bağlanmak

Konu veritabanı olduğunda güvenliği elden bırakmamakta fayda var. Her ihtimale karşı, olası bir sql injection riskini bertaraf etmek için veritabanını oluştururken, kullanıcı oluştururken gerekli olmayan yetkileri vermemek önemli. SELECT, INSERT, UPDATE ve DELETE fonksiyonları dışında yetki verirken dikkatli olmakta fayda var. Pdo ile veritabanına aşağıdaki gibi bağlanıyoruz. Bu kısmı dbConnect.php gibi bir dosyaya koyabilirsiniz.

<?php

$sunucu = 'database';
$dbAdi= 'db_adi';
$dbKullanici = 'db_kullanici';
$dbSifre = 'db_sifre';

$dsn = "mysql:host=$sunucu;dbname=$dbAdi;charset=UTF8";

try {
	$pdo = new PDO($dsn, $dbKullanici, $dbSifre);

	if ($pdo) {
		echo "$dbAdi veritabanina baglandiniz";
	}
} catch (PDOException $e) {
	echo $e->getMessage();
}

Tablodan Verileri Çekmek: SELECT

Tablodan veri çekmek için kullandığımız SELECT fonksiyonuyla bir örnek yapalım. WHERE koşulunda kullanacağımız verinin değişkenden gelmesi önemli.

<?php

include 'pdo.php';

$dogumYili = 1990;

$sql = 'SELECT *  FROM ornek WHERE dogum_yili < :dogum_yili';

$sorgu = $pdo->prepare($sql);
$sorgu->bindParam(':dogum_yili', $dogumYili, PDO::PARAM_INT);
$sorgu->execute();
$veriler = $sorgu->fetch(PDO::FETCH_ASSOC);

var_dump($veriler);

Tabloya Veri Eklemek: INSERT

Tabloya veri eklemek için INSERT fonksiyonunu kullanacağız. Sql sorgusunu yardığımı satıra, değişen ekleyerek veri girişi asla yapmayın. Bu yol veri güvenliği riskine yol açabilir!

<?php

include 'pdo.php';

$isim = 'Sakin';
$soyisim = 'Adam';
$yil = 1987;

$sql = 'INSERT INTO ornek(isim, soyisim, dogum_yili) VALUES(:isim, :soyisim, :yil)';

$statement = $pdo->prepare($sql);

$statement->execute([
	':isim' => $isim,
	':soyisim' => $soyisim,
	':yil' => $yil,
]);

$insertId = $pdo->lastInsertId();

var_dump($insertId);

Tablodan Veri Güncelleme: UPDATE

<?php

include 'pdo.php';

$id = 2;
$isim = 'Sakin Edit';

$sql = 'UPDATE ornek SET name = :isim WHERE id = :id';

$update = $pdo->prepare($sql);

$update->bindParam(':id', $id, PDO::PARAM_INT);
$update->bindParam(':isim', $isim);

if ($update->execute()) {
	echo 'Basariyla guncellendi!';
}

Tablodan Veri Silmek: DELETE

<?php

include 'pdo.php';

$id = 2;

$sql = 'DELETE FROM ornek  WHERE id = :id';

$delete = $pdo->prepare($sql);
$delete->bindParam(':id', $id, PDO::PARAM_INT);

if ($delete->execute()) {
	echo 'Basariyla silindi';
}

Toparlayalım 🙂

Temel 4 sorgu olan SELECT, INSERT, UPDATE ve DELETE üzerinden Php Pdo’yu anlatmaya çalıştım. Atladığım kısımlar varsa ya da başka sormak istedikleriniz olursa yorum bırakabilirsiniz.

Php ile Pdf Oluşturmak

Php‘de sertifika, fatura gibi konularda pdf çıktısı almamız gerekebiliyor. Fpdf kütüphanesi pdf çıktısı almamızı kolay bir hale getiriyor. Temel bir kaç özelliğini anlatacağım. Detaylı kullanmak için dökümana bakabilirsiniz. Dökümantasyonda Türkçe çeviri de yapılmış. Hamza Ortatepe’e çevirisi için ayrıca teşekkürler.

Fpdf kütüphanesinin; Türkçe karakterleri desteklemesi için özelleştirilmiş kütüphanesi de mevcut. Türkçe karakter sorunu yaşamamak için buradan indirebilirsiniz.

Basit Kullanım

İlk olarak basit bir pdf sayfası yapalım. Boş bir sayfaya sadece bir yazı yazayım.

<?php
ob_end_clean();
require('tfpdf/tfpdf.php'); 
  
// Instantiate and use the FPDF class  
$pdf = new tFPDF(); 
  
//Add a new page 
$pdf->AddPage(); 
  
// Set the font for the text 
$pdf->SetFont('Arial', 'B', 18); 
  
// Prints a cell with given text  
$pdf->Cell(60,20,'Hello Php Pdf!'); 
  
// return the generated output 
$pdf->Output();
?>

Sertifika Örneği

Özellikle Eğitim Sitelerinde istenilen pdf sertifikaların basit bir örneğini yapacağız. $pdf->Output(); satırı ile kullanıcı tarayıcıda pdf dosyasını görüyor. Dizinde bir yere kaydetmek ve sonradan kullanmak için $pdf->Output(‘F’, ‘dosya-adi.pdf’); satırını kullanabilirsiniz. Özellikle e-posta ile göndermek için bu yolu tercih edebilirsiniz.

<?php
ob_end_clean();
require('tfpdf/tfpdf.php');
  
// pdf değişkenini / objesini olusturma
$pdf = new tFPDF();
  
// yeni sayfa ekleme
$pdf->AddPage('L', 'A4');
  
// font secimi ve yazi boyutu 
$pdf->AddFont('DejaVu', '', 'DejaVuSansCondensed.ttf',true);
$pdf->SetFont('DejaVu', '', 24);

// resim ekleme, A4 boyutunda
$pdf->Image('sertifika.jpg', 0, 0, 297, 210);

// sayfanin ortasina yazi ekleme  
$text = 'Tebrikler, Php ile Pdf dosyası oluşturdunuz';
$pdf->Text(148 - ( $pdf->GetStringWidth($text) / 2 ), 105, $text);
  
// dosya ciktisi
$pdf->Output();
//$pdf->Output('F', 'dosya-adi.pdf');
?>

Farklı Font Kullanımı

Farklı afilli fontlar kullanmak için tercih ettiğiniz fontun ttf dosyasını, “tfpdf/font/unifont/” dizine ekleyerek ve “AddFont”, “SetFont” fonksiyonlarını ekleyerek kullanabilirsiniz.

Umarım faydalı bir yazı olmuştur. Yorumlarınızı bekliyorum 🙂

Php Tarih İşlemleri

Php‘de sık sık kullandığımız tarih işlemleriyle ilgili bir yazı yazma ihtiyacı hissettim. Kısa kısa tarih fonksiyonlarını ve kullanım şekillerini anlatıcam. Umarım faydalı olur. Düşüncelerinizi paylaşmayı unutmayın 🙂

date() fonksiyonu

<?php echo date("Y-m-d H:i:s");//2016-02-17 15:25:14 ?>

Yukarıdaki kod sayesinde ekrana “2016-02-17 15:25:14” şeklinde bir çıktı alıyoruz. Bu tarih bulunduğumuz zamının verisi. Kullanılan harflerin anlamlarını aşağıda açıkladım.

<?php
echo date("Y");//yıl verisini 4 hane olarak getirir : 2016 
echo date("y");//yıl verisinin son 2 hanesini getirir : 16

echo date("M");//ay verisini ingilizce ay isimlerinin ilk üç hanesi olarak şekilde getirir : Feb
echo date("m");//ay verisini rakam olarak getirir : 02

echo date("D");//gün verisini ingilizce gün isimlerinin ilk üç hanesi olarak şekilde getirir : Wed
echo date("d");//gün verisini rakam olarak getirir : 17

echo date("H");//günü 24 saat kabul ederek saat verisini getirir : 15
echo date("h");//günü 12 saat kabul ederek saat verisini getirir : 03

echo date("i");//dakika verisi : 41
echo date("s");//saniye verisi : 21
?>

Bu kullanım şekillerini, ilk kod örneğinedki gibi istediğiniz gibi harmanyalarak kullanabilirsiniz. Malum kimileri önce ay gelsin vb. isteklerde bulunabilirler.

strtotime() fonksiyonu
Bazı durumlarda; veritabanından, formdan text gelen tarih verisi üzerinde işlem yapmanız gerekebilir. Bu işlem ekran çıktısında farklı format olabilir, bir gün sonrasını almak olabilir. Bu durumda tarih üzerinde işlem yapabilmek için strtotime() fonsiyonunu kullanırız. Unix timestamp ile ilgili aşağıya kısa bir kaç cümle yazdım.

<?php
$tarih = "2016-01-02 03:04:05";//text tarih verisi
echo strtotime($tarih);//unix timestamp formatında : 1451696645
echo date("Y-m-d H:i:s",strtotime($tarih));//kendi belirlediğimiz formatta : 2016-01-02 03:04:05
?>

Unix timestamp nedir?
1907-01-01 01:01:01 tarihinden, istenilen tarihe kadar geçen saniyeyi belirten zaman türü. Yukarıda verdiğimiz örnekteki “2016-01-02 03:04:05” tarihinin, unix timestamp karşılığının “1451696645” olması gibi. İki tarih arasında geçen süreyi bulmak için unix timestamp’i kullanabilirsiniz. Dosya kayıt işlemlerinde bu değeri kullanabilirsiniz. Ancak aynı saniyede iki işlem olabileceğini göz önünde bulundurun!

Bir Tarihten İleri ya da Geri Bir Tarihi Bulma
Farklı işlemlerde tarihten ileri ya da geri tahileri bulmak gerekebiliyor. Ancak malesef bazı yazılımcı kardeşlerimiz bu tarih bulmaları doğrudan tezt işleme yöntemiyle bulmaya çalışıyor. Aşağıdaki kodlar da kullanılabilir sanki 🙂

<?php
$tarih = "2016-01-02 03:04:05";//text tarih verisi
echo date("Y-m-d H:i:s",strtotime("+1 day",strtotime($tarih)));//bir gün sonrası : 2016-01-03 03:04:05
echo date("Y-m-d H:i:s",strtotime("-1 day",strtotime($tarih)));//bir gün öncesi : 2016-01-01 03:04:05
echo date("Y-m-d H:i:s",strtotime("+1 min",strtotime($tarih)));//bir dakika sonrası : 2016-01-02 03:05:05
echo date("Y-m-d H:i:s",strtotime("+1 sec",strtotime($tarih)));//bir saniye sonrası : 2016-01-02 03:04:06
?>

Umarım faydalı olur. Lütfen yorumlarınızı eksik etmeyiniz 🙂