Aramayan Bulamaz
×
Çoklu arama sorgusuna ait içerikleri görüntülemektesiniz.
Plesk Panel Sunucu için Wildcard Lets Encrypt SSL Kurulumu

SSL sertifikaları sunucu ve istemci arasındaki bağlantının şifrelenmesinde kullanılan güvenlik sertifikalarıdır. Piyasada bulunan pek çok SSL sertifikasının yapmakta olduğu işlem aynıdır ancak aralarındaki fiyat farkı prestijlerinden ya da birden fazla alan adı desteği, çoklu alt alan adı desteği gibi özelliklerden kaynaklanmaktadır.

Kendinize özel SSL sertifikanızı da oluşturabilirsiniz ancak bu durumda web tarayıcınız SSL sertifikanızın markasını tanımayacağı için güvenlik uyarısı verecektir. Web tarayıcılarının tanıdığı Rapid SSL, Thawte, GeoTrust, Symantec, Comodo, Lets Encrypt gibi markalardır. Bu SSL sertifikalarının arasında ücretsiz olan SSL sertifikası Lets Encrypt tarafından sağlanmaktadır. Lets Encrypt SSL sertifikası diğerlerinden farklı olarak 4096 bit key desteği vermesidir.

Plesk Panel, Cpanel, Centos Web Panel gibi sunucu kontrol panellerinde de artık Lets Encrypt SSL sertifikası bir eklenti olarak gelmekte ancak bu sunucu eklentilerinde gelen Lets Encrypt SSL sertifikası varsayılanda 2048 bit olarak sertifikayı oluşturmaktadır. Ayrıca Lets Encrypt SSL sertifikasında wildcard (*.alanadı.com yani çoklu alt alan adı), ve san (subject alternative names, birden fazla alan adı) desteği de bulunmaktadır ancak Plesk Panel, Cpanel gibi sunucularda bulunan bu Lets Encrypt eklentisine henüz wildcard ve san desteğinin eklenmediğini görmekteyim. Acme.sh isimli bir script ile Lets Encrypt SSL sertifikanızı kendi isteklerinize göre wildcard, san ve 4096 bit olarak oluşturabilmektesiniz. Ben de bu Acme.sh scriptini kullanarak Plesk Panel sunucu için wildcard ve 4096 bit destekli Lets Encrypt sertifikasını oluşturup sunucu üzerine kurulumunu yapan ayrı bir script hazırladım. Hazırladığım scripti Github sayfam üzerinden indirerek kullanabilirsiniz. Ancak hazırladığım script DNS doğrulaması yaparak SSL sertifikasını aktif hale getirmekte ve doğrulama yapacağı DNS kaydını Cloudflare üzerinde API aracılığı ile oluşt

PHP Çoklu Resim Upload ve Boyutlandırma

Merhaba, önceki konumda resim upload ve boyutlandırma classını anlatmıştım. Bu konuda aynı classı kullanarak birden fazla resmi nasıl upload edeceğimizi anlatacağım.

İlk önce boş bir html açalım ve içine şunları yazalım:

<form action="upload.php"> <input type="file" name="resim[]" multiple> <input type="submit" value="Yükle"> </form> Inputun name kısmında [] böyle bir ifade kullandık, bu resim nameinin array tipli olacağını gösterir. Yani bu değer upload.php dosyasına içinde birden fazla veri bulunan bir dizi değişkeni olarak gönderilecek.
upload.php dosyasına da içine de şunları yazalım: include 'resim.class.php'; $upload = new ResimIslem(); foreach($_FILES["resim"]["name"] as $n => $name) { if(!empty($name)) { echo $upload->resim_upload($_FILES["resim"]["name"][$n],$_FILES["resim"]["tmp_name"][$n],$_FILES["resim"]["error"][$n],'resim-dizini','dosya ismi - '.$n,1920,1200)."
"; } }

resim.class.php bizim ResimIslem sınıfının bulunduğu dosya. Html formdan resim[] nameinin değeri array tipli geldiği için foreach ile bunu döngüye alıp dizinin indis numarasını $n değişkenine, gelen dosya ismini de $name değişkenine atadık. Döngü içinde dosya adını kontrol ettirdik, dosya ismi boş değilse resim_upload() fonksiyonunu çağırdık ve upload işlemi gelen her dosya için döngü boyunca tek tek yapıldı.

$_FILES["resim"]["name"][$n] şeklinde kullanmamızın sebebi de $n ilk sıfırdan başıyor ve döngü boyunca her defasında 1 artıyor. $_FILES["resim"]["name"][0] gelen ilk dosyanın bilgisini $_FILES["resim"]["name"][1] ikinci dosyanın bilgisini $_FILES["resim"]["name"][3] üçündü dosyanın bilgisini verecek şekilde devam ediyor. Döngü kullanmamızın sebebi bu sayıyı döngü boyunca artırıp çoklu upload işlemini sağlamak.

PHP Resim Upload ve Boyutlandırma Sınıfı

Merhabalar, sizlere hazırlamış olduğum resim boyutlandırma ve upload classını göstereceğim. Daha önceki konumda nesne tabanlı programlamadan bahsetmiştim. Şimdiki anlatacağım konu ise nesne tabanlı olarak resim boyutlandırma ve upload üzerine bir classdır
Fazla uzatmadan classı anlatmaya başlayım :)

<?php class ResimIslem{ public function watermark($filigran, $source_file_path, $output_file_path ) { list( $source_width, $source_height, $source_type ) = getimagesize( $source_file_path ); if ( $source_type === NULL ) { return false; } switch ( $source_type ) { case IMAGETYPE_GIF: $source_gd_image = imagecreatefromgif( $source_file_path ); break; case IMAGETYPE_JPEG: $source_gd_image = imagecreatefromjpeg( $source_file_path ); break; case IMAGETYPE_PNG: $source_gd_image = imagecreatefrompng( $source_file_path ); break; default: return false; } $overlay_gd_image = imagecreatefrompng($filigran); $overlay_width = imagesx( $overlay_gd_image ); $overlay_height = imagesy( $overlay_gd_image ); imagecopymerge( $source_gd_image, $overlay_gd_image, $source_width - $overlay_width, $source_height - $overlay_height, 0, 0, $overlay_width, $overlay_height, 60 ); imagejpeg( $source_gd_image, $output_file_path, 100 ); imagedestroy( $source_gd_image ); imagedestroy( $overlay_gd_image ); } public function resim_boyutlandir($resim,$k_resim,$max_en=1920,$max_boy=1200){ // içeriği başlat.. $resimdosyasi= pathinfo($resim); $uzanti=$resimdosyasi["extension"]; ob_star

PHP Data Object - PDO

PHP de veri tabanına bağlanma ve sorgu çalıştırmayı anlatmıştım.
Klasik veri tabanı bağlantısı mysql_connect() komutu ile yapılıyor, sorgu çalıştırma mysql_query() ile yapılıyor fakat pdo yapısı biraz farklı. PDO php 5.2 den sonra gelen bir veri tabanı sorgu sınıfı, yani nesne tabanlı bir yapı.
En güzel özelliği çoklu veri tabanı desteği olması. Oracle, SQL Server, MySQL gibi farklı veritabanlarına bağlanabilme özelliği sunuyor. Ayrıca kendi içerisinde sql injection koruması olan bir sınıftır.

$db = new PDO('mysql:host=localhost;dbname=veritabanı adı', 'kullanıcı adı', 'sifre'); PDO sınıfını db değişkenine bağlı olarak oluşturduk, sorgularımızı bu sınıfa bağlı methodlar ile yapacağız.

query() methodu genel olarak tüm sorgularda kullanılır.
exec() methodu bilgi girişi, güncelleme, silme gibi veri tabanına değer göndermede kullanılır.
prepare() methodu query() methodundaki gibi tüm sorguları çalıştırmada kullanılır fakat buna ek olarak bir de execute() methodu kullanılır, prepare ile yapılan sorgunun uygulanması için.
fetch() methodu; tek bir sonuç getirmek için kullanılır, query ile çalıştırılmışsa sorgu query den sonra, prepare ile çalıştırılmışsa sorgu execute methodundan sonra kullanılır.

Veritabanından dataların sayılarını getirmek istediğimizde fetch(PDO::FETCH_NUM) kullanılır.

Örnek olarak bir sorgu çalıştırayım, sorguyu query ile yapacağım. $sorgu = $db->query('select * from blog where id=1')->fetch(); Veritabanından id değeri 1 olan konuyu getiren sorguyu yazdık. Bu şekilde de yapabilirdik $sorgu = $db->query('select * from blog where id=1'); $sorgu->fetch(); İkisi de aynı işlemi yapıyor. echo $sorgu['blog_baslik'];
İ

Veri Tabanında Tablo İlişkilendirerek Bilgi Çekme (Inner Join)

Veri tabanından bilgi çekmek için SELECT komutunu kullanırız. SELECT * FROM tablo_ismi şeklinde bir komut ile tablo_ismi isimli tablodan bilgimizi çekeriz, eğer bir şarta bağlı olarak çekeceksek WHERE ile şartımızı belirtiriz.

SELECT * FROM blog WHERE id=1 blog isimli tabloda id değeri 1 olan bilgiyi getirir ekrana. Id değeri bir olan konunun bir de kategori bilgisi var kategoriler tablosunda, ayrıca konuyu açan kişinin de bilgisi profil tablosunda hepsi için ayrı ayrı sorgu çalıştırmaktansa tek bir sql sorgusu ile hepsini getirebiliriz.

 Kategori tablosunda k_id ve kat_isim adında alanlar var, kategori ismi ve id bilgisini tutan alanlar.

Profil tablosunda p_id, kullanici_adi adında alanlar var i, kullanıcı adı ve kullanıcının id bilgisini tutan  alanlar.

Blog tablosunda id, blog_baslik, blog_icerik, kat_id, kullanici_id adında alanlar var, konunun id bilgisi, içerik ve başlık bilgisi, konuyu açan kullanıcının id bilgisi ve hangi kategoride bulunuyorsa onun id bilgisini tutan alanlar.

Tek sorguda bunları getirebilmek için şu komutu kullanıyoruz;

SELECT * FROM blog b INNER JOIN profil p ON b.kullanici_id = p.p_id INNER JOIN blog_kategori bk ON b.kat_id=bk.k_id INNER JOIN sosyal s ON p.p_id=s.kullanici_id WHERE b.id=1

Blog isimli tabloyu seçtik ve bu tablo ismini b isimli bir değişkene atadık, sonra bunun aynısını diğer tablolar içinde yaptık. 

b.kat_id=bk.k_id ile blog isimli tablodaki kat_id alanıyla blog_kategori isimli tablodaki k_id alanını birleştirmiş olduk blog tablosunda tutulan kategori id si ne ise kategoriler tablosundaki o id ye sahip olan kategorinin bilgileri gelecek, aynı şey profil tablosu içinde geçerli, b.kullanici_id=p.p_id blog tablosundaki kullanıcı id bilgisi ile profil tablosundaki id bilgisi birbirine bağlanarak bilgi çekilmiş. Bu şekil bir kullanım yapmasaydık eğer her biri için ayrı ayrı sorg

  • Önceki Sayfa
  • Sonraki Sayfa