RSS
 

Archive for the ‘PHP’ Category

PHP’de Merkezileştirme (OOP)

09 Apr

Merhaba arkadaşlar,

Bildiğiniz üzere PHP artık bir çok görevi başarıyla yerine getirebilir seviyeye gelmiştir. Bu nedenlede PHP artık Web sayfalarından Web uygulamalarına geçişte önemli bir yerde durmaktadır.

Merkezileştirme derken anlatmak istediğim web uygulamalarımızda bütün bir uygulama üzerinde gerekli olan ve kullanılan ihtiyaçlarınızı bir pipeline’dan geçirerek bağımsızlaştırmaktır.Yaptığımız bir nevi DAL’dır aslında.[Data Access Layer(Veri Erişim Katmanı)] Nasıl olacak sorusunun cevabını beraberce arayalım.
Örnek senaryo üzerinden daha iyi anlatabileceğimi düşündüğümden, bir örnek ile açıklayayım.

Basit bir contact manager yazmamız gerektiğini düşünelim. Bu tür uygulamalar veri işleme üzerine kurulduğundan tüm verilerin doğru ve kontrollü şekilde ilerlemesi gerekmektedir. Veri tabanı olarak ne kullanırsanız kullanın mutlaka önemli alanlar için Transaction yönetimi yapmayı unutmayın. Konumuz veri tabanları olmadığından bu konuya girmiyorum. İlerleyen makalelerim de bu konuyuda ayrıntılı şekilde anlatacağım. Şimdilik devam edelim. Diyelim ki veri tabanı olarak MySQL Server’ı seçtik. İşimiz aslında her developer’ın da yaptığı gibi database programming. Biz yazılım ile uğraştığımızı sanıyoruz ama yaptığımız 10 projeden 7/8′i veri tabanı programlamadır. :) Şimdi object-oriented şekilde nasıl uygulamamızı merkezileştireceğimize bakalım.

Bu uygulamada veri tabanı kullanacağımızdan mutlaka veri tabanına sorgu göndereceğiz. Demin söylediğimi hatırlarsak uygulamamızın bütününde bize gereken şeyleri bir yerde toplayacaktık ve yönetimini kolaylaştıracaktık. Şimdi biz SQL sorgularımızı bir yerden geçecek şekilde hazırlıyoruz ve daha sonra sağladığı kolaylığı inceleyeceğiz.

dbType = $Type;
		$this->dbConn = $Connection;

	}

	public function Query($ExecQuery){
		$this->sqlQuery = $ExecQuery;
	}
	switch ($this->dbType){
		case "MySQL":
		// Transaction için Table Engine Type InnoDB olmalıdır.
		@mysql_query("BEGIN");
		// Eğer birden fazla veri tabanı ile çaışıyorsanız!
		// mysql_query() fonksiyonuna 2. parametreyi veriniz.
		# $executeQuery = mysql_query($ExecQuery,$this->dbConn);
		$executeQuery = mysql_query($ExecQuery);

               if ($executeQuery){
		    @mysql_query("COMMIT");
		    // Sorgu Başarılı
		}else{
		   @mysql_query("ROLLBACK");
		   // Sorgu BAŞARISIZ!!!
		}
		break;
		case "MsSQL":
			// Ms SQL Server code here… etc…
		break;
		case "Oracle":
			// Oracle Connection here.. etc..
		break;
		case "PostgreSQL":
			// PostgreSQL connection and execute sql query code here.
		break;
		default:
			die("Bu veri tabanı henüz desteklenmiyor.
			Şimdilik: MySQL,MsSQL,Oracle,PostgreSQL desteklenmektedir.");
			exit();
	}
  }
}

/**
* İlgili Sayfanıza require_once() ederek
* aşağıdaki şekilde kullanabilirsiniz.
*/
// Nesnemizi Oluşturduk.
$DAL = new DBProvider();
//Veri Tabanı Türümüzü ve Bağlantımızı Belirttik.
$DAL->Provider("MySQL",$DB->Connection);
//SQL Sorgumuzu Çalıştırdık.
$DAL->Query("SELECT count(*) as TotalUser FROM tbl_user ORDER BY UName DESC");
?>

Yukarıdaki kod bize sorgularımızı merkezi tek bir noktadan kontrol etme imkanı verdi. Bizde Transaction yaparak işlem bütünlüğünü sağladık. Bu ders olmadığından diğer tüm özelliklerini de yazmadım. Sadece mantığını anlatmak adına bir kısmını yazdım. Siz bunu geliştirmek adına ekstra olarak bir string temizleme function’ı yazarak gelen sorgularınızı çalıştırmadan önce temizleyebilirsiniz.

Kod’da $DB->Connection(); diye bir parça var. Bu bölümü kodun içerisinde göremiyorsunuz çünkü DB Class’ı da ayrı bir parçasıdır programın. DB Class’ını yazdıktan sonra bağlantı parametrelerini alan Connection isminde bir function ile bu kodu tamamlayabilirsiniz. Tavsiyem Connection() bool bir değer dönsünki Connection State yapmak istediğinizde bunu if gibi karak kontrol mekanizmalarında kullanabilin. İleri de DAL’da yazacağımızdan bu konuya girmiyorum. Çünkü kendisi başlı başına bir konudur. :)

Burada değinmek istediğim ikinci nokta ise Query function’nın içerisinde gördüğünüz Switch döngüsüdür. Bu döngü ile (şimdilik DAL’ı bilmediğimizden) veri tabanı bağımsız şekilde uygulamamızı geliştirmeye devam edebiliriz. Olduda bir gün artık uygulamanızı Ms SQL Server’a geçirmek isterseniz tek yapmanız gereken Provider Function’na set ettiğiniz Type parametresini MsSQL olarak değiştirmektir. Gerekli ayarları yaptıktan sonra artık uygulamanız Ms SQL Server üzerinde başarılı bir şekilde çalışıyor olacaktır.

Gördüğünüz gibi OOP(Nesne tabanlı programlama) ile web uygulamaları geliştirdiğimizde bir sayfaya database connection sağlayıp, güvenli sorgular çalıştırmak için yazacağımız kod satırı 3′ü geçmemektedir. Ayrietten Uygulamalarınızdaki bazı noktaları merkezileştirerek uygulamamızı nasıl bağımsız hale getireceğimizide gördük.

Saygılarımla,

Hakan DAMAR

 
No Comments

Posted in PHP

 

PHP İle Tüm Cookie’leri Silme

09 Apr

Merhaba,

Oxijen Framework’ün parça, parça işinize yarayabilecek kısımlarını function olarak sizlerle paylaşıyorum.

<?php
// Remove All Cookie
foreach ($_COOKIE as $k => $v){
	setcookie($k,"",time()-3600,"/",".hakandamar.com");
}
?>

Bu kod $_COOKIE super global üzerinde dönerek içerisindeki tüm key’leri alıyor daha sonra null’a set ederek boşaltıyor ve geçerlilik süresini bitiriyor.

İyi Çalışmalar.

 
4 Comments

Posted in PHP

 

Yeni Zend Server

30 Mar

Zend Server

Merhaba,

Zend firması bildiğiniz üzere PHP dilininde geliştirici firmasıdır. Son olarak çıkarttığı ve benim de test ederek beğendiğim Web Application Server’ı gerçekten güzel hazırlanmış.  Gözlemlediğim kadarı ile Zend firması Microsoft ile haşır, neşir olmaya başladıktan sonra yavaş,yavaş ücretli yazılımlar üretmeye yönelik vizyonununda revizeler yapmaya başladı. Zend Server’da bunun bir habercisi olabilir. Gerçi daha kısıtlı özelliklere sahip ücretsiz bir sürümünüde veriyor ama beğendiğim özellikleride ticari versiyonuna eklemiş. :) Zaten sitesindeki açıklamarıda okursanız eğer kritik PHP uygulamaları hazırlıyorsanız ticari versiyonunu almnızı öneriyorlar.

Kurulumda size PHPmyAdmin’den MsSQL ile işlem yapabilmeniz için gerekli olan eklentilere kadar kurup kurmaması gerektğini sorarak otomatik kurulumlarını gerçekleştiriyor. Kurulum işlemi bittiğinde yönetici şifrenizi oluşturmanız için sizi ilgili sayfaya yönlendiriyor. Güzel bir web arayüzü ile Zend Server’ı yönetebiliyorsunuz. Şifrenizi oluşturduktan sonra karşınıza gelen ekran şöyle oluyor.

Zend Server Login

Giriş yaptıktan sonra ise size çalışan servislerin ve görevlerinde bulunduğu ergonomik bir arayüz gösteriyor.

Zend Server  - Home Page

PHP Info sekmesine geldiğinizde ise en çok hoşuma giden yanlarından bir diğeri ile karşılaşıyorsunuz. PHP’yi FastCGI modunda kurarak çok daha hızlı çalışmasını sağlamışlar.

Son olarak toparlayacak olursak eğer bir web server için astronomik rakamlar açıklamazlarsa, ticari uygulamalarda veya onların tabiri ile kritik php web uygulamalarında tercih edilecek bir web sunucusu hazırlamışlar.  Ben 10 üzerinden 7 verdim betasına. İstikrarlı sürümü çıktığında tekrar daha ayrıntılı inceleme fırsatı bulursam sizede buradan gelişmeleri yazarım.

Saygılarımla.

 
5 Comments

Posted in PHP

 

PHP ve MsSQL Server 2008 İle Hızlı Uygulamalar

15 Mar

Merhaba,

Bu yazımda sizlere Microsoft’un değişen open source vizyonu ve PHP denildiğinde akla gelen MySQL veri tabanının yavaş,yavaş yıkılmaya doğru ilerlediğinden bahsedeceğim. Bildiğiniz üzere kısa bir süre önce MySQL Sun Microsystems tarafından 1 milyar dolar’a satın alınmıştı. Bunun ardından herkesin aklında oluşan acaba MySQL ücretli olacak mı? sorusunun cevabını henüz alamadık ama zaten MySQL Server Enterprise Edition ücretli.

Şimdi hazır konu ücretlere değinmişken şu Microsoft’un ürünlerine gelelim. Burada konu olan MsSQL Server ailesi bilindiği üzere ücretlidir. Fakat Express Edition olarak ücretsiz sürümleride mevcut. Yanlış hatırlamıyorsam bu sürümü 4GB  db stroge alanı ile sınırlandırılmıştı. Şimdi birde konuya şu açıdan bakın. Profesyonel bir kadronun yıllarca emek sarf ettiği bir yazılımı alarak kendiniz uygulamalar geliştirmek istiyorsunuz. Fakat siz uygulamalarınızı geliştirip satarak para kazanırken. Microsoft ücretle satıyor diye tepki gösteriyorsunuz. Üstelik ücretsiz bir sürümünüde size sunduğu halde. Şimdi diyeceksiniz ki onun alan sınırı var. Doğru var ama 4GB’lık bir veri tabanına ulaştıysanız zaten siz bu uygulamadan veya siteden kar elde ediyorsunuzdur ve artık bir üst sürümünü almanın zamanı gelmiştir. Biraz bireyselden uzaklaşıp kurumsal uygulama geliştirme tarafına geçecek olursak. Bu sınır firmalar için yetmeyebilir. Peki bu durumda ne yapacağız? Tabii ki bunu Microsoft’ta düşünmüş ve Developer Edition diye bir sürüm çıkartmış. Üstelik Microsoft SQL Server 2008 Developer Edition’ın fiyatı sadece 50$(dolar). Evet, yanlış okumadınız.  Şimdi burada MySQL v.s. MsSQL yapmayacağım şuan için MsSQL Server 2o08 karşılaştırma yapılamayacak kadar farklarla zaten liderlik tahtından inmeyecek gibi duruyor. Birde bildiğiniz üzere IIS 7.0 üzerine PHP’yi FastCGI modülu olarak kurarsanız Apache server’dan %70 daha hızlı çalışmaktadır. Bunu da yanlış okumadınız. :)   Üstelik Microsoft bunlarlada kalmayarak Windows Server’lar için optimize edilmiş özel PHP sürümlerinide oluşturmaya başladı. http://windows.php.net adresi altından bu sürümlere ulaşabilirsiniz.  IIS tarafındaki FastCGI ile ilgili bilgi almak istersenizde http://www.iis.net/php adresinden bilgi edinebilirsiniz. Şimdi bu bilgileride yanımıza alarak yazımıza devam edelim.

Kısa bir süre önce duyurulan Microsoft MsSQL Server 2005 Driver For PHP diye bir PHP eklentisini Microsoft kullanıcılara sunmuş ve şimdiye kadar pek görmeye alışık olmadığımız PHP ile ilgili makalelerini MSDN’e eklemiş bulunmaktadır. SQL Server 2005/2008 Driver ile ilgili açıklamayı ve anlatımı daha sonraki teknik makalemde yapacağım. Geçen gün IIS 7.0 üzerine FastCGI olarak kurduğun PHP 5 ve MsSQL Server 2008 ile yaptığım bazı testler beni bu yazıyı yazmaya iten en büyük sebeblerden biridir. Hız farkı gerçekten tahmin ettiğimin çok üzerinde çıkarak beni şaşırttı ve artık dedim ki PHP ile MySQL yerine çok güçlü bir kullanıcı arayüzü sunan MsSQL Server’ı kullanmanın zamanı geldi. Üstelik iletişim v.s. gibi problemlerde yaşayacağınızı sanmıyorum. PHP kurulumunuza Microsoft’un sunduğu SQL Server Driver’ı kurarak bunun üzerinden çalışırsanız çok rahat MySQL ile yaptığınız işlemlerinizi gerçekleştirebilirsiniz. Tabi size sağladığı sadece performans değil. Tür güvenliği ve işlem bütünlüğünden daha sayamayacağım bir çok konuya kadar destek veren MsSQL Server 2008 gerçekten denemeniz gereken bir veri tabanı eğer ilk defa kuracaksanız size biraz karmaşık gelebilir fakat biraz öğrendikten sonra vazgeçebileceğinizi sanmıyorum.

Silverlight ile yapılmış Türkçe çok güzel bir siteside mevcut. http://www.sqlenerji.com adresinden özelliklerini inceleyebilir,indirebilir veya daha ayrıntılı bilgi alabilirsiniz.

Saygılarımla.

 
No Comments

Posted in PHP

 

HTTP REFERER Kontrolü

11 Feb

Merhaba,

Sitenize bazı sitelerden link verilmesini engellemek veya sadece istediğiniz sitelere izin vermek isterseniz. Kullanıcının geldiği referans site bilgisini alarak buna göre işlemlerinizi yapabilirsiniz. Öncelikle belirtmek isterim. Güvenilir bir yöntem değildir. Biraz uğraşma ile aşılabilir.

<?php
/**
 * @author Hakan DAMAR
 * @copyright www.hakandamar.com
 */
$RegexURL = parse_url($_SERVER['HTTP_REFERER']);
$Allow_Domain_Spaces =  $RegexURL['host'];
$DomainArr = array("hakandamar.com","inter.gen.tr","uploadmax.net","azbul.net","mssql.us");

if(in_array($Allow_Domain_Spaces,$DomainArr)) {
	print "Geçerli bir siteden istek yapıldı.";
	// Çalıştırılacak Kodlar
}else {
	print "$Allow_Domain_Spaces sitesinden bu sayfaya erişim engellenmiştir.";
	die("Lütfen, Site yönetimi ile iletişime geçiniz.");
	exit();
}
?>

Kısa bir süre önce bir projede kullanmam gerekti. İnternettede rastlamadım. Buradan paylaşmak istedim.

İlgili Kaynaklar;
1. PHP.NET:
— http://www.php.net/manual/tr/function.in-array.php
— http://www.php.net/manual/tr/function.parse-url.php
— http://us3.php.net/manual/tr/reserved.variables.server.php
— http://us3.php.net/manual/tr/ref.array.php

İyi Çalışmalar.

 
No Comments

Posted in PHP

 

Oxijen Framework

17 Jan

Merhaba,

 PHP ile web uygulamaları geliştirirken hep .NET Framework gibi bir geliştirme çatısı kullanmak istemişimdir. :) Ama malesef şimdilik bu mümkün değil. Piyasada ciddi anlamda framework diyebileceğimiz de 2/3 taneden fazla sağlam PHP framework yok. Bunlarında hiç biri Türkçe değil ve/veya Türkçe dökümantasyon içermemektedir.

 Henüz yeni yazmaya başladığım Oxijen Framework adındaki bu yeni geliştirme çatışında sizlere sunmak istediklerim.

İlk Aşamada;

  • SDL (Secure Data Layer) – Security

  Bu özelliği sayesinde client’tan alınan tüm data’lar bir güvenlik katmanından geçerek temizleniyor ve sizin tarafınıza int ise int, string ise kötü karakterler temizlenmiş string. Double ise kontrol edilmiş Double gibi bir çok güvenlik etkeni size sunmaktadır. Tek yapmanız gereken size gelen dataları Security bölümünde SDL Class’ının  altındaki function’lardan geçirtmektedir. Gerisi Oxijen sizin yerinize yapmaktadır.

  • DAL (Data Access Layer) – Database

  Bu bölüm ise Database bölümündeki DBProvider Class’ı dır. Bu Class’ın özelliği ise size MySQL,MsSQL,PostgreSQL,Oracle ve daha sonraki sürümlerde çoğaltacağım bir çok veri tabanına tek bir ayar ile erişmenizi. Farklı bir veri tabanı sunucusuna geçtiğinizde uygulamanızda tek yapmanız gereken Provider Name bölümünü değiştirmektir. Bu Class size Provider bağımsız uygulama geliştirmenizde yardımcı olacaktır.

  • CQE (Controlled Query Execute) – Database

  Bu Class ise size sorgularınızı güvenli bir şekilde veri tabanına eriştirmenizden, Transaction yönetimine kadar yapmaktadır. Sizin tek yapmanız gereken sorgunuzu CQE’e göndermek. Gerisini yine Qxijen hallediyor. :)

  • RIAJAX (Rich Internet Applications With AJAX) – RIA

  Burada da browser tabanlı event’lerinizi handle etmenizde yardımcı olacak AJAX sınıfları ve bazı JQuery özelliklerini sunacağım. Böylece oluşturmuş olduğunuz formlarınızda server-side controller’dan hariç client-side controller yaparak bant genişliği ve sunucu yoğunluğunu azaltmış olacağız.

  • XWS (XML Web Services) – Web Services

  Genelde hep problem yaşanan ve hassas olan web servisleri tarafında sizin en büyük yardımcınız olacak XWS Class’ına da buradan erişebileceksiniz. Bu Class ise sizlerin daha kolay web servisi oluşturmanızı ve web servislerinden data alarak, isterseniz veri tabanınıza istersenizde her hangi bir XML formatındaki dosyaya yazmanızı sağlayacaktır. Böylece, dil bağımsız her uygulama ile kendi web uygulamanızı iletişime geçirebileceksiniz.

Yukarıda ilk beta 1 versiyonunda olacak bazı özellikleri kısa, kısa aktarmaya çalıştım fakat dökümantasyonundan çok daha geniş bilgi edinebilirsiniz. Yukarıdakilerden hariç bir çok özelliği daha olacaktır.

Geliştirici Lisans: Oxijen Framework tüm geliştiriciler tarafından ticari projeler hariç istediği şekilde kullanılabilir,geliştirilebilir ve dağıtılabilir. GPL lisans türü ile lisanslanmıştır. Kullanan her kişi bu şartı kabul etmiş sayılmaktadır. GNU Public License.

Kurumsal Lisans: GPL ile lisanslanmış bir uygulamayı kendi ticari uygulamanıza entegre etmeniz durumunda, geliştirmiş olduğunuz yazılımın kaynak kodlarını GNU Public License kapsamındaki maddeler bağlamında tüm kullanıcılara açmanız gerekmekdir.

 Oxijen Framework’ü yüklemek ve ayrıntılı bilgi edinmek için kısa süre içerisinde güncellenecek olan www.oxijen.org adresini ziyaret edebilirsiniz.

Saygılarımla,

Hakan DAMAR

 
 

HD Üyelik v0.0.7

05 Jan

Merhaba,
PHP 5 dilini ve MsSQL Server 2005 veri tabanını kullanarak bir üyelik sistemi yazmaya başladım. Belki ileride basit bir forum,ardından sade bir portal sayfası eklenebilir. :) Sonunda ne çıkacağını bende bilmiyorum.

Hepinizin soracağı bir konu neden MySQL değilde, MsSQL kullandın? :D Baktım hep MySQL ile yapılmış üyelik sistemleri birde dedim MsSQL ile olsun. Zaten arada DAL(Data Access Layer) olduğundan MsSQL’den MySQL’e çok rahat geçirebilirsiniz. İleride setup’ını hazırlarsam MySQL/MsSQL/Oracle opsiyonunu da koyacağım. Böylece daha kurarken hangi tür veri tabanı kullanmak istediğinizi seçebileceksiniz.

Elimden geldiğince Türkçe açıklama satırları koydum. Hatta ilk programıda Türkçe yazmaya başladım ama sonra çok zorlandığımdan tekrar ingilizceye dondum. İngilizce teknik terimlerin, Türkçe karşılığını bulmak zor ve bulsamda anlam vermesi daha zor. :) Böylesi, daha iyi oldu.

Henüz daha ilk versiyonunu tamamen hazırlayamadım. Şimdilik, Alpha sürümünün kodlarını incelemek isterseniz diye paylaşıyorum. Belki içerisinde işinize yarabilecek bir kod parçası olabilir.

MssQL Server 2005 – Database Full BackUp (Veri tabanını buradan indirebilirsiniz.)

Alt taraftada kodları veriyorum. Hiç test edecek zamanım olmadı. Eğer bir hata olursa buradan bildirebilirsiniz, fakat bir kaç güne sorunsuz ve test edilmiş şekilde v1.0.0 versiyonunu indirmeye sunacağım. Setup’ı ile birlikte tabiki.

Connector.php Dosyası;


DAL.php Dosyası;

Query = $Query;
		$T_Start = mssql_query("BEGIN");
		$SendQuery = mssql_query($Query);
		if(!$SendQuery){
			$T_ROLLBack = mssql_query("ROLLBACK");
			print "Sorgunuzda bir hata olduğundan işleminiz geri alınmıştır!";
		}else {
			$T_END = mssql_query("COMMIT");
			print "Sorgunuz Başarıyla Çalıştırılmıştır.";
		}

	}

	function Cleaner($Data){
		$this->Data = $Data;
		$Null = empty($Data);
		$Spaces = trim($Data);
		if (!$Null && !$Spaces) {
			$ContArr = array("'","\\","\/","","select","update","delete","insert","--");
			$Data = str_replace($ContArr,"",$Data);
			// isset() kontrolü fonksiyona parametre geçirilmeden önce yapılmaldır!
		}

	}

	function Version(){
		$Ver = $this->Version = "v0.0.7";
		print $Ver;
	}

}

?>

Login.php Dosyası;

Cleaner($Username);
		$Upass = $Db->Cleaner($UserPass);
		$SQLQuery = $Db->RunQuery("SELECT * FROM Login WHERE Username = '$Uname' && password = '$Upass'");
		//Session register işlemi yapılacak release versiyon için.
		while ($Datarow=mssql_fetch_array($SQLQuery)){
			print "Hoş Geldiniz: ".$Datarow['LoginName']."";
			print "Son Giriş Yapılan IP: ".$Datarow['IPAddress'];			

		}
		mssql_free_result($SQLQuery);
	}
	$Db->__destruct();
}
?>



tr {
text-align: left;
}




Kullanıcı Adınız:
Şifreniz:

İyi Çalışmalar,

Hakan DAMAR

 
No Comments

Posted in PHP

 

Kill All Process for MySQL ~ Kritik Hata Yönetimi

14 Dec

Merhaba,

Kısa bir süre önce karşılaştığım bir MySQL Query Process problemi sonrası yazdığım bir kod blogunu sizinle paylaşıyorum.

Aşağıdaki kodlar ile 200ms’nin üzerinde işlem kuyruğunda bekleyen işlemleri sonlandırabilirsiniz. Lütfen, kodlarını çalıştırmadan önce sisteminizdeki loglama ve kurtarma modülleri varsa çalıştıklarını check ediniz.

<?php
/**
 * Danger: KILL ALL MySQL SERVER PROCESS
 * UYARI: Tüm veri tabanı işlemlerini sonlandıran kod blogu
 * @author: Hakan DAMAR
 */
$dbhost  = "10.70.1.9";
$dbname  = "MySQLEnt";
$dbuser  = "rootkit";
$dbpass  = "**********";

@mysql_connect($dbhost,$dbuser,$dbpass) || die("Error:" .mysql_error());
mysql_select_db($dbname);

$T_Begin = mysql_query("BEGIN"); Require DB Engine Type = INNODB  for transaction
$result = mysql_query("SHOW FULL PROCESSLIST");
while ($row=mysql_fetch_array($result)) {
$process_id=$row["Id"];
for ($h=0;$row["Time"] &gt; 200;$sql=mysql_query("KILL $process_id")) {
        if(!$sql){ $T_ROLLBACK = mysql_query("ROLLBACK"); }
                else {
                        $T_COMMIT = mysql_query("COMMIT");
                        print $process_id."&lt;br&gt;";
          }
    }
}
?>

Yukarıdaki kodlarda sadece processleri kill eden tarafa yoğunlaşınız. Çalışır bir örnek sunabilmek adına bazı tarafları express kodlanmıştır. Siz kendi yazılımınıza göre entegre kullanabilirsiniz.

İyi Çalışmalar,

Hakan DAMAR

 
No Comments

Posted in MySQL, PHP

 

PHP 5 – Oracle Database Connection

11 Nov

Merhaba,

 Oracle Database’ne PHP ile bağlantı sağlamak için gereken kodları aşağıda paylaşıyorum.

<?php

#Developer: Hakan DAMAR

  $Baglanti = oci_connect('Hakan', '2hkn8', 'OracleDB');

 

/* oci_connect(); fonksiyonu

 * resource oci_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] )

 * Biz minimum bağlantı için gerekli olan 3 parametreyi verdik.

 * MySQL'deki gibi oci_pconnect(); 'te kullanabilirdik. Bağlatı türü MySQL ile aynı işleve sahiptir.

 */

  if (!$Baglanti) {

    $Hata = oci_error();

    print htmlentities($Hata['message']);

    exit;

  }

 

  $Sorgu = 'SELECT * FROM view_Firmalar';

/* oci_parse(); fonksiyonu

* resource oci_parse ( resource $connection , string $query )

* Sorguyu hazırlar fakat geçerlilik kontrolü yapmaz. 

* Olan SQL sorgusu geçerlili ise diğer funct. geçirir.

*/

  $Hazirla = oci_parse($Baglanti, $Sorgu);

  if (!$Hazirla) {

    $Hata = oci_error($Baglanti);

<span> </span># String'i dekode ediyoruz. htmlentities ile tabiki :) 

    print htmlentities($Hata['message']);

    exit;

  }

/* oci_execute(); Fonksiyonu

* bool oci_execute ( resource $statement [, int $mode ] )

* Geriye IF..ELSE kontrolü gibi bool döner. Ya True(1) yada False(0) döner.

* Hazirlanmış sorguları çalıştırır.

* OCI_DEFAULT parametresini geçtiğimizde SQL'deki transaction'ı commit ediyor.

* Eğer bağlantı kesilirse ROLLBACK ile işlem bütünlüğü sağlıyor.

*/

  $Calistir = oci_execute($Hazirla, OCI_DEFAULT);

  if (!$Calistir) {

    $Hata = oci_error($Hazirla);

    echo htmlentities($Hata['message']);

    exit;

  }

/*

* array oci_fetch_array ( resource $statement [, int $mode ] )

* While ile dönerek DataGrid oluşturuyoruz. oci_fetch_array aynı mysql_fetch_array gibi

* Dataları bir dizi şeklinde almamızı sağlıyoruz.

* 2. parametrede OCI_RETURN_NULLS diyerel. DB'deki boş alanlar için boş elementler oluşturuyoruz.

*/

  print '&lt;table border="1"&gt;';

  while ($DataRow = oci_fetch_array($Hazirla, OCI_RETURN_NULLS)) {

    print '&lt;tr&gt;';

       foreach ($DataRow as $items) {

         print '&lt;td&gt;'.($items?htmlentities($items):'&amp;nbsp;').'&lt;/td&gt;';

       }

       print '&lt;/tr&gt;';

  }

  print '&lt;/table&gt;';

/*

* oci_close ile database bağlantımızı kapatıyoruz.

* mysql_close() fonksiyonundan bir farkı yok aynı çalışma mantığına sahipler.

*/

  oci_close($Baglanti);

?>

Konuyla ilgili her türlü sorunuz için bana ulaşabilirsiniz.

İyi Çalışmalar,

Hakan DAMAR

 
4 Comments

Posted in PHP

 

CodeIgniter Framework

02 Nov
 Code Igniter Framework

Merhaba,

 Geçenlerde incelemek için fırsat bulduğum CodeIgniter framework’ü PHP dili için hazırlanmış bir geliştirme çatısıdır. Kısaca geliştirme çatısı yani Framework dediğimiz şeyin ne olduğunu söyliyeyim. 

Genelde hemen, hemen her programda yazılan bazı kod rutinleri vardır. Veri tabanı bağlantısı, UI ile iletişim form’ları gibi bunlar için sürekli aynı kodları yazmak yerine bir object yazar property’lerini v.s. oluşturur, daha sonra diğer sayfalara include ederek nesneden türetip kısa kodlar ile işlerimizi hallederiz. İşte bu kolaylık ve hız kazandıran class’ların daha profesyonel ve genel kullanıma açık haline biz framework diyoruz.

Tek cümleyle açıklayacak olursam, Kısa ve net kod yazmak için hazırlanmış class’lar bütününe framework denir. Bu geliştirme çatılarına geliştirdiğimiz projemize ekleyerek erişebiliriz. Aklınıza şöyle bir soru gelebilir? İyi ama ben nerden bilicem neyi nasıl yazdığını? Malesef arkadaşlar bunu bilmenizin bir yöntemi yok. Eğer open source ise kodları inceleyebilirsiniz. Dökümantasyonu yapılmışsa oradan okuyarak ancak öğrenebilirsiniz. Bunun dışında bir öğrenme yöntemi yok.

Neyse tekrar konumuza dönecek olursak CodeIgniter gerçekten güzel bir geliştirme çatısıdır. Zend Framework’ünden sonra beğendiğim tek framework’tür. :) Hepinize tavsiye ediyorum. Gerçekten, zamandan ve kod optimizasyonu yönünden çok büyük faydalar sağlıyor.

İlerleyen zamanlarda CodeIgniter ile örnekler ve anlatımlar hazırlayarak blogumda yayınlayacağım. Hatta daha da ileriye giderek UploadMax projemde CodeIgniter framework’ünü kullanmayı bile düşünüyorum.

CodeIgniter’ın resmi sitesi: www.codeigniter.com

CodeIgniter’ın resmi olmayan Türkiye sitesi: www.codeigniter.gen.tr

Hepinize iyi çalışmalar diliyorum.

Hakan DAMAR

 
No Comments

Posted in PHP