<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Önder&#039;in odası... &#187; PHP</title>
	<atom:link href="http://eski.ondurart.com/kategori/php/feed" rel="self" type="application/rss+xml" />
	<link>http://eski.ondurart.com</link>
	<description>eski.ondurart.com</description>
	<lastBuildDate>Tue, 29 Nov 2011 16:29:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP ile resim boyutlandırma</title>
		<link>http://eski.ondurart.com/php-ile-resim-boyutlandirma</link>
		<comments>http://eski.ondurart.com/php-ile-resim-boyutlandirma#comments</comments>
		<pubDate>Mon, 18 Oct 2010 21:15:09 +0000</pubDate>
		<dc:creator>ondurart</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[boyutlandırma]]></category>
		<category><![CDATA[ile]]></category>
		<category><![CDATA[orantılı resim boyutlandırma]]></category>
		<category><![CDATA[php ile orantılı resim boyutlandırma]]></category>
		<category><![CDATA[php ile resim boyutlandırma]]></category>
		<category><![CDATA[resim]]></category>
		<category><![CDATA[resim boyutlandırma]]></category>

		<guid isPermaLink="false">http://www.lestioni.com/?p=1443</guid>
		<description><![CDATA[PHP forum sitelerinde en çok sorulan sorulardan birisi de hiç şüphesiz ki resim boyutlandırma işlemleridir. Resim boyutlandırma kodunu bir yerlerden bulanlar da bu sefer orantılı olarak nasıl boyutlandırma yapabileceklerini sorarlar. Dün de PHP&#8217;yi yeni öğrenmeye başlayan bir arkadaş resim boyutlandırmayı sormuştu. Çok basit bir fonksiyon ile orantılı olarak resim boyutlandırma yapabiliyoruz&#8230; Bu örnekte resim boyutlandırmanın [...]]]></description>
			<content:encoded><![CDATA[<p>PHP forum sitelerinde en çok sorulan sorulardan birisi de hiç şüphesiz ki resim boyutlandırma işlemleridir. Resim boyutlandırma kodunu bir yerlerden bulanlar da bu sefer orantılı olarak nasıl boyutlandırma yapabileceklerini sorarlar. Dün de PHP&#8217;yi yeni öğrenmeye başlayan bir arkadaş resim boyutlandırmayı sormuştu. Çok basit bir fonksiyon ile orantılı olarak resim boyutlandırma yapabiliyoruz&#8230;<br />
<span id="more-1443"></span><br />
Bu örnekte resim boyutlandırmanın yanında, yüklenen resmin gerçekten resim mi olduğunu anlamak için de ufak bir uzantı bulma fonksiyonu kullanacağız. Bu kodumuz bize form gönderiltikten sonraki işlemler için lazım olacak.</p>
<pre class="brush: php; title: ; notranslate">
function dosya_uzantisi($dosya,$uzanti=-1)
{
   $b = strrpos($dosya,&quot;.&quot;);
   $b++;
   if($uzanti!=-1)
   {
      $cik = substr($dosya,$b,$uzanti);
   }
   if($uzanti==-1)
   {
      $cik = substr($dosya,$b);
   }
   $cik = strtolower($cik);
   return $cik;
}
</pre>
<p>Şimdi de asıl işimizi görecek olan fonksiyona, yani resim boyutlandırmaya gelelim. Fonksiyon içinde çok detaylı olmasa da neyin ne yaptığını anlatmıştım zaten, o şekilde yapıştıracağım yine.</p>
<pre class="brush: php; title: ; notranslate">
function resim_boyutlandir($resim,$max_en=150,$max_boy=150,$uzanti)
{
   // içeriği başlat..
   ob_start();
   // ilk boyutlar..
   $boyut = getimagesize($resim);
   $en    = $boyut[0];
   $boy   = $boyut[1];
   // yeni boyutlar..
   $x_oran = $max_en  / $en;
   $y_oran = $max_boy / $boy;

   // boyutları orantıla..
   if (($en &lt;= $max_en) and ($boy &lt;= $max_boy))
   {
      $son_en  = $en;
      $son_boy = $boy;
   }
   elseif (($x_oran * $boy) &lt; $max_boy)
   {
      $son_en  = $max_en;
      $son_boy = ceil($x_oran * $boy);
   }
   else
   {
      $son_en  = ceil($y_oran * $en);
      $son_boy = $max_boy;
   }

   // uzantıya göre yeni resmi yarat..
   switch($uzanti)
   {
      // jpg ve jpeg uzantılar için..
      case 'jpg':
      case 'jpeg':
         // eski ve yeni resimler..
         $eski = imagecreatefromjpeg($resim);
         $yeni = imagecreatetruecolor($son_en,$son_boy);
         // eski resmi yeniden oluştur..
         imagecopyresampled($yeni,$eski,0,0,0,0,$son_en,$son_boy,$en,$boy);
         // yeni resmi bas ve içeriği çek..
         imagejpeg($yeni,null,-1);
      break;
      // png uzantılar için..
      case 'png':
         $eski = imagecreatefrompng($resim);
         $yeni = imagecreatetruecolor($son_en,$son_boy);
         imagecopyresampled($yeni,$eski,0,0,0,0,$son_en,$son_boy,$en,$boy);
         imagepng($yeni,null,-1);
      break;
      // gif uzantılar için..
      case 'gif':
         $eski = imagecreatefromgif($resim);
         $yeni = imagecreatetruecolor($son_en,$son_boy);
         imagecopyresampled($yeni,$eski,0,0,0,0,$son_en,$son_boy,$en,$boy);
         imagegif($yeni,null,-1);
      break;
      default:
      break;
   }

   $icerik = ob_get_contents();
   // resimleri yoket ve içeriği çıkart..
   ob_end_clean();
   imagedestroy($eski);
   imagedestroy($yeni);

   return $icerik;
}
</pre>
<p>Temel olarak boyutlandırmayı yapan kodumuz/fonksiyonumuz bu. Kodun iş yapabilmesi için, sizin sadece genişlik vermeniz yeterli oluyor. Şimdi de yüklenecek olan resmi seçeceğimiz formumuzu ekleyelim&#8230;</p>
<pre class="brush: php; title: ; notranslate">
&lt;!-- form --&gt;
&lt;form action=&quot;islem.php&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot; /&gt;
&lt;table width=&quot;350&quot; align=&quot;center&quot; border=&quot;0&quot;&gt;
   &lt;tr&gt;
      &lt;td width=&quot;150&quot; align=&quot;left&quot;&gt;
         resmin yeni adı
      &lt;/td&gt;
      &lt;td width=&quot;200&quot; align=&quot;left&quot;&gt;
         &lt;input type=&quot;text&quot; name=&quot;adi&quot;&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td width=&quot;150&quot; align=&quot;left&quot;&gt;
         genişlik/yükseklik
      &lt;/td&gt;
      &lt;td width=&quot;200&quot; align=&quot;left&quot;&gt;
         &lt;input type=&quot;text&quot; size=&quot;3&quot; name=&quot;gen&quot;&gt; / &lt;input type=&quot;text&quot; size=&quot;3&quot; name=&quot;yuk&quot;&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td width=&quot;150&quot; align=&quot;left&quot;&gt;
         resim dosyası
      &lt;/td&gt;
      &lt;td width=&quot;200&quot; align=&quot;left&quot;&gt;
         &lt;input type=&quot;file&quot; name=&quot;foto&quot;&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
      &lt;td width=&quot;150&quot; align=&quot;left&quot;&gt;

      &lt;/td&gt;
      &lt;td width=&quot;200&quot; align=&quot;left&quot;&gt;
         &lt;input type=&quot;submit&quot; name=&quot;boyutlandir&quot; value=&quot;resmi boyutlandır&quot;&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;!-- /form --&gt;
</pre>
<p>Ve son olarak da asıl olaya geliyoruz. Formdan gelen bilgilerin derlenip, toparlanıp, boyutlandırmayı yapacak olan kodumuz.</p>
<pre class="brush: php; title: ; notranslate">
// formdan gelen resmin yeni adı
$yeni_ad = seolink($_POST['adi']);
// resmin uzantısını bulalım..
$uzanti = dosya_uzantisi($_FILES[&quot;foto&quot;][&quot;name&quot;]);
// resmi uzantıyla birlikte adlandıralım..
$yeni = $yeni_ad.'.'.$uzanti;
// istenilen boyutlar
$max_en = $_POST['gen'];
$max_boy = $_POST['yuk'];
// resmin saklanacağı yol (izinlerin ayarlandığından emin olun)
$b_resim = 'resimler/buyuk-'.$yeni; // asıl resim
$k_resim = 'resimler/'.$yeni; // küçük hali ve istenilen isim
// uzantının geçerli olup olmadığını kontrol et
if($uzanti=='jpg' or $uzanti=='jpeg' or $uzanti=='png' or $uzanti=='gif')
{
   if (is_array($_FILES[&quot;foto&quot;]))
   {
      // resmi taşı
      move_uploaded_file($_FILES[&quot;foto&quot;][&quot;tmp_name&quot;],$b_resim);
      // resmi boyutlandır..
      $icerik = resim_boyutlandir($b_resim,$max_en,$max_boy,$uzanti);
      // dizini aç..
      $dosya  = fopen($k_resim,&quot;w+&quot;);
      // boyutlandırılmış resmi yükle..
      fwrite($dosya,$icerik);
      // dizini kapat..
      fclose($dosya);
      // veritabanına eklenmek istenirse buraya veritabanına ekleme kodu gelebilir.
      // ufaltılmış resmi ekrana basalım, ve büyük haline bağlantı verelim..
      header(&quot;Location:goster.php?resim=$yeni&quot;);
   }
}
// uzantılar geçerlki değilse resmi silelim..
else
{
   unlink($b_resim);
   unlink($k_resim);
}
</pre>
<p>Zaten gerekli olan tüm açıklamalar kodların içinde olduğu için ayrıca bir açıklama yapmak istemedim. Tek yapmanız gereken <strong>resimler</strong> klasörünün <strong>chmod değerini 777 yapmak</strong>. Sanırım bütün her şeyi anlattım =) Çalışan bir örneğini koymayacağım ama aşağıdan dosyaları indirebilirsiniz.</p>
<blockquote> <li><strong>Dosya Adı:</strong> <a href="http://eski.ondurart.com/indir/resim_boyutlandirma.zip">resim boyutlandırma</a> (4 KB)</li> <li><strong>Açıklama:</strong> PHP ile resim boyutlandırma scripti</li> <li><strong>zip şifresi:</strong> lestioni.com</li> <li><strong>Eklenme:</strong> 01-11-2011</li> </blockquote>
]]></content:encoded>
			<wfw:commentRss>http://eski.ondurart.com/php-ile-resim-boyutlandirma/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WordPress ziyaretçi sayacı sorunsalı &#8211; 2</title>
		<link>http://eski.ondurart.com/wordpress-ziyaretci-sayaci-sorunsali-2</link>
		<comments>http://eski.ondurart.com/wordpress-ziyaretci-sayaci-sorunsali-2#comments</comments>
		<pubDate>Fri, 11 Dec 2009 11:45:46 +0000</pubDate>
		<dc:creator>ondurart</dc:creator>
				<category><![CDATA[lestioni.com]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[günlük haftalık aylık]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[sayaç]]></category>
		<category><![CDATA[sayaç eklentisi]]></category>
		<category><![CDATA[toplam ziyaretçi]]></category>
		<category><![CDATA[wordpress plugin]]></category>
		<category><![CDATA[wordpress sayaç eklentisi]]></category>
		<category><![CDATA[ziyaretçi sayacı]]></category>

		<guid isPermaLink="false">http://www.lestioni.com/?p=566</guid>
		<description><![CDATA[Daha önce de yazdığım gibi, WordPress&#8217;in en büyük eksiklerinden biridir ziyaretçi sayacı. Bütün site sahipleri ziyaretçi sayılarını bilmek isterler. Günlük olarak kaç kişi gelmiş, kim ne kadar süre kalmış, bu kaçıncı gelişi gibi bilgileri bilmek ister&#8230; En azından ben isterim :) WordPress&#8217;in de böyle bir eklentisi ya da özelliği yok ne yazık ki&#8230; Daha önce [...]]]></description>
			<content:encoded><![CDATA[<p>Daha önce de yazdığım gibi, WordPress&#8217;in en büyük eksiklerinden biridir ziyaretçi sayacı. Bütün site sahipleri ziyaretçi sayılarını bilmek isterler. Günlük olarak kaç kişi gelmiş, kim ne kadar süre kalmış, bu kaçıncı gelişi gibi bilgileri bilmek ister&#8230; En azından ben isterim :) WordPress&#8217;in de böyle bir eklentisi ya da özelliği yok ne yazık ki&#8230;<br />
<span id="more-566"></span></p>
<p>Daha önce de bu konuya değinip, sağ kenarda görünen şekilde basit bir sayaç yazmıştım kendime. Aldığım yorum ve e-postalardan sonra da kendisini geliştirmeyi düşündüm ama kendimle ilgili sorunlardan dolayı hep erteledim. Son birkaç zamandır az da olsa kendimdeyim ve hazır böyleyken de sayacı yapmayı düşündüm.</p>
<p>İlk yazdığım sayaç oldukça basit. Ama gayet güzel de çalışıyor. Her giren kullanıcı günde bir defa sayılıyor. Zaten öyle de olması gerek kanımca :)</p>
<p>İkinci ve aslında ilk sürümünde ise çok daha detaylı bir sayaç olacak ve bir hafta içinde de bitirmek gibi bir planım var&#8230; Asıl kullanım amacı olarak kendime yapmayı düşündüğüm için de özellikleri bol tuttum. Tabii bu da eklentiyi kullanmak isteyenlere yarayacak :) Aklımdaki özellikleri sıralayacak olursam da şunun gibi bir şey olacak:</p>
<ul>
<li>Bugün, dün, bu hafta, geçen hafta, bu ay ve geçen ayın ziyaretçi sayıları&#8230;</li>
<li>Toplam tekil ve çoğul ziyaretçi sayıları&#8230;</li>
<li>Botların (Google, Yahoo, MSN vs) ayrı olarak sayılması&#8230;</li>
<li>Yönetim paneli üzerinden detaylı ziyaretçi bilgileri (ip adresi, siteye geldiği adres, kullandığı tarayıcı, sitede geçirdiği süre ve gezdiği sayfalar vs)</li>
<li>Sayfaların ve yazıların görüntülenme sayıları (tekil ve çoğul)</li>
<li>Ve şu an aklımda olmayan, ancak notlarımda olan bir kaç şey daha&#8230;</li>
</ul>
<p>Tabii bunların bir de ayarları olacak. Site açılış tarihi düzenlenebilecek, bunun yanında (her ne kadar istemesem de) ziyaretçi bilgilerine de müdahale edilebilecek. Botların da ziyaretçilerle birlikte sayılıp, sayılmayacağı gibi ayrıntılar da olacak. Ve bir de bileşen olarak eklenebilecek. Eklerken de istenilen bilgilerin görünmesi sağlanacak. Örneğin yan menüde (sidebar) sadece &#8220;bugün&#8221; ve &#8220;toplam&#8221; ziyaretçi sayıları gösterilebilecek.</p>
<p>Bu akşam, daha doğrusu gece, sayacı yazmaya başlayacağım kısmetse&#8230; Ve bir hafta içinde de bitirmeyi düşünüyorum&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://eski.ondurart.com/wordpress-ziyaretci-sayaci-sorunsali-2/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Php ile çoklu dil</title>
		<link>http://eski.ondurart.com/php-ile-coklu-dil</link>
		<comments>http://eski.ondurart.com/php-ile-coklu-dil#comments</comments>
		<pubDate>Sun, 01 Nov 2009 12:31:44 +0000</pubDate>
		<dc:creator>ondurart</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[çoklu dil]]></category>
		<category><![CDATA[dil seçme]]></category>
		<category><![CDATA[php çoklu dil]]></category>
		<category><![CDATA[php ile dil]]></category>

		<guid isPermaLink="false">http://www.lestioni.com/?p=458</guid>
		<description><![CDATA[Kimi zaman yazdığımız sistemlerde birden fazla dil desteklemesini isteriz. Sitemizin her hangi bir yerine koyacağımız ufak bir bağlantı ile, zaman zaman dillerin bayrakları ile sitenin tek dokunuş ile bir dilden bir başka dile geçmesini isteriz. Böylece her milletten insana kendimizi açmış oluruz :) Lafı fazla uzatmadan olaya geçelim&#8230; Öncelikle, bize lazım olacak dosyaları ve klasör [...]]]></description>
			<content:encoded><![CDATA[<p>Kimi zaman yazdığımız sistemlerde birden fazla dil desteklemesini isteriz. Sitemizin her hangi bir yerine koyacağımız ufak bir bağlantı ile, zaman zaman dillerin bayrakları ile sitenin tek dokunuş ile bir dilden bir başka dile geçmesini isteriz. Böylece her milletten insana kendimizi açmış oluruz :)</p>
<p>Lafı fazla uzatmadan olaya geçelim&#8230;<br />
<span id="more-458"></span><br />
Öncelikle, bize lazım olacak dosyaları ve klasör yapısını yazalım. Burada anlatacağım çok basit bir yapı. O yüzden de çok fazla dizin ve dosya kullanmayacağız.</p>
<ul>
<li>/lang &lt;&#8212; Dil dosyalarının olacağı lang dizini</li>
<li>/lang/tr.php &lt;&#8212; Türkçe dil dosyası</li>
<li>/lang/eng.php &lt;&#8212; İngilizce dil dosyası</li>
<li>/lang/fr.php &lt;&#8212; Fransızca dil dosyası</li>
<li>index.php</li>
</ul>
<p>Genel olarak bize bu iş için lazım olan dizin ve dosyalar bunlar.  En alttan başlayarak, yani index.php den başlayarak nasıl yapacağımıza bakalım.</p>
<pre class="brush: php; title: ; notranslate">
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
&lt;title&gt;dil denemeleri&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
// adres satırından gelen değişkene göre dil dosyasını alalım
$dil = $_GET['dil'];
// eğer adres satırında her hangi bir dil belirtilmemişse
// ön tanımlı olarak dili Türkçe yapalım
if(!$dil) { $dil = 'tr'; }
// eğer bir dil seçilmişse, o dili alalım
else { $dil = $_GET['dil']; }
// ve dil dosyamızı çağıralım.
include (&quot;lang/$dil.php&quot;);
// _welcome &lt;-- bu sabit dil dosyalarından değere göre değişecek.
echo _welcome;
echo '&lt;br /&gt;';
// _copy yine aynı şekilde.
echo '&lt;strong&gt;'. _copy .'&lt;/strong&gt;';

echo '&lt;br /&gt;&lt;br /&gt;';
// dil değiştirme bölümünde ise _langTR _lang_ENG ve _langFR sabitlerini kullandım.
echo '&lt;a href=&quot;index.php?dil=tr&quot;&gt;'. _langTR .'&lt;/a&gt; || &lt;a href=&quot;index.php?dil=eng&quot;&gt;'. _langENG .'&lt;/a&gt; || &lt;a href=&quot;index.php?dil=fr&quot;&gt;'. _langFR .'&lt;/a&gt;';

?&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>index.php genel olarak bu şekilde olacak. Tabii duruma ve kullanışa göre şekillendirilebilir ancak şimdilik kavramak için bu yeterli.  Burada önemli olan, dil dosyalarında kullanacağımız sabitleri iyi belirlemek.</p>
<p>Şimdi de dil dosyalarımıza bakalım. Tüm dosyaları tek tek yazmayacağım, bir tek kod içinde hepsini göstereceğim, siz bölersiniz :)</p>
<pre class="brush: php; title: ; notranslate">
// tr.php &lt;--- Türkçe dil dosyası
define('_welcome','Sitemize Hoş Geldiniz');
define('_copy','kodlama: lestioni');
define('_langTR','Türkçe');
define('_langENG','İngilizce');
define('_langFR','Fransızca');

// eng.php &lt;--- İngilizce dil dosyası
define('_welcome','Welcome to our site');
define('_copy','coded by lestioni');
define('_langTR','Turkish');
define('_langENG','English');
define('_langFR','French');

// fr.php &lt;--- Fransızca dil dosyası
define('_welcome','Bienvenue sur notre site');
define('_copy','codée par lestioni');
define('_langTR','Turc');
define('_langENG','Anglais');
define('_langFR','Français');
</pre>
<p>Dil dosyaları da bu şekilde olacaklar. Ne yapıldığını da anlatmak gerekirse, sanırım en kolay yol, değişkenlerden yola çıkmak olur. Tek farkı, sabitler bir betik içinde değişkenler gibi tekrar tekrar değiştirilemezler. Ne değer verilmişse o. $kelime değişkenine sayfa başında bir değer verip, sayfa sonunda farklı bir değer ile kullanmak mümkündür, ancak sabitlerde bunu yapamazsınız. <a href="http://forum.ceviz.net/php/62660-define-kullanimi.html" target="_blank">Buradaki sayfada</a> çok güzel bir anlatım var.</p>
<p>Kodların çalışan halini görmek için <a href="http://lestioni.com/deneme/dil/" target="_blank">buraya tıklayabilirsiniz</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eski.ondurart.com/php-ile-coklu-dil/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php ile şifre güvenliği..</title>
		<link>http://eski.ondurart.com/php-ile-sifre-guvenligi</link>
		<comments>http://eski.ondurart.com/php-ile-sifre-guvenligi#comments</comments>
		<pubDate>Thu, 08 Oct 2009 00:22:45 +0000</pubDate>
		<dc:creator>ondurart</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[md5()]]></category>
		<category><![CDATA[sha1()]]></category>
		<category><![CDATA[şifre saklama]]></category>
		<category><![CDATA[şifreleme yöntemi]]></category>
		<category><![CDATA[veri koruma]]></category>

		<guid isPermaLink="false">http://www.lestioni.com/?p=372</guid>
		<description><![CDATA[bütün web programcıların dertlerinden birisidir şifreleri saklamak.. sadece şifre değil, kullanıcılardan alınan tüm önemli bilgilerin (kimlik numarası gibi) şifrelenerek saklanması gerekmektedir.. hemen her programcı da bu işlem için ya md5() ya da sha1() fonksiyonlarını kullanır.. bazı kişiler md5(md5($veri)) gibisinden kullanıma da gider.. ya da md5(sha1($veri)) olarak kullanırlar.. tabii tersi de mümkün.. işi abartıp, 10 tane [...]]]></description>
			<content:encoded><![CDATA[<p>bütün web programcıların dertlerinden birisidir şifreleri saklamak.. sadece şifre değil, kullanıcılardan alınan tüm önemli bilgilerin (kimlik numarası gibi) şifrelenerek saklanması gerekmektedir.. hemen her programcı da bu işlem için ya<a href="http://tr.wikipedia.org/wiki/MD5" target="_blank"> md5()</a> ya da <a href="http://tr.wikipedia.org/wiki/SHA1" target="_blank">sha1()</a> fonksiyonlarını kullanır.. bazı kişiler <strong>md5(md5($veri))</strong> gibisinden kullanıma da gider.. ya da <strong>md5(sha1($veri))</strong> olarak kullanırlar.. tabii tersi de mümkün.. işi abartıp, 10 tane md5&#8242;i iç içe yazanlar da yok değil.. ancak en iyi şifreleme yöntemi, kendi üreteceğin şifreleme algoritmasıdır..<br />
<span id="more-372"></span></p>
<p>md5() ve sha1() fonksiyonlarının geri dönüşümü yoktur.. ancak çözülmeyecek değillerdir.. bazı siteler, daha önce girilmiş olan basit kelimelerin karşılıklarını veriyorlar.. siz bir md5 çıktısını yapıştırdığınızda, size asıl kelimeyi veriyorlar.. aşağıda bir örnek var.. site adresini vermeyeceğim tabii :)</p>
<p style="text-align: center;"><img class="size-full wp-image-373  aligncenter" title="md5_kir" src="http://eski.ondurart.com/wp-content/uploads/2009/10/md5_kir.jpg" alt="md5_kir" width="456" height="72" /></p>
<p>burada görüldüğü gibi, şifrenizi <strong>123456</strong> olarak girerseniz, md5 ile bir defa şifrelense de, şifrenizi ele geçirebilirler.. tabii bu biraz da programcının uyguladığı şifrelemeye bakıyor :)</p>
<p>şimdi, çok basit bir veri şifreleme örneği vereceğim.. bu şekilde verileriniz bir parça daha güvenli olacaktır.. açıklamaları zaten kodun içerisinde var..</p>
<pre class="brush: php; title: ; notranslate">
function sifre_sifre($sifre)
{
	// şifremizi md5 ile şifreleyelim..
	$sif_1 = md5($sifre);
	// bir de sha1 ile şifreleyelim..
	$sif_2 = sha1($sifre);
	/*
		2 farklı şekilde şifrelenmiş olan şifremizden, bir tane şifre oluşturalım..
		oluştururken, md5 den bir tane, sha1 den bir tane olacak şekilde, 4er tane
		olacak şekilde, rastgele basamaklar kullanalım..
	*/
	$karistir = $sif_1[4].$sif_2[1].$sif_1[10].$sif_2[9].$sif_1[30].$sif_2[15].$sif_1[20].$sif_2[11];
	// son olarak da karışmış olan şifreyi md5 den geçirelim..
	return md5($karistir);
}

// kullanımı:
$sifre = sifre_sifre($sifre);
</pre>
<p>tabii bunu aynen bu şekilde kullanmak olmaz.. kendinize göre düzenleyip, biraz da ek yapmak daha sağlıklı olur.. peki bu kodun avantajı nedir?</p>
<p>örnek olarak, kullanıcın şifresini <strong>123456</strong> şeklinde belirlediğini varsayalım.. normalde veritabanında tek bir <strong>md5()</strong> uygulanmış şifremiz <strong>e10adc3949ba59abbe56e057f20f883e</strong> olarak gözükecektir.. <strong>sha1()</strong> uygulanmış hali ise <strong>7c4a8d09ca3762af61e59520943dc26494f8941b</strong> şeklinde.. birileri veritabanınızı ele geçirir ve şifreleri kırmayı başarırsa göreceği şifreniz de yine <strong>123456</strong> olacaktır.. ki bunu istemeyiz..</p>
<p>oysa, yukarıdaki fonksiyonu kullanırsak, kişinin bulabileceği şifre <strong>8 haneli olacak</strong>.. <strong>123456</strong> için çıkacak sonuç ise <strong>dcba3fe7</strong> olacaktır.. böylece şifrelerimizi çalmış kişiyi yanıltmış olacağız :) o kadar uğraş boşa gidecek, yazık olacak :)</p>
]]></content:encoded>
			<wfw:commentRss>http://eski.ondurart.com/php-ile-sifre-guvenligi/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>php ile tc kimlik numarası kontrolü..</title>
		<link>http://eski.ondurart.com/php-ile-tc-kimlik-numarasi-kontrolu</link>
		<comments>http://eski.ondurart.com/php-ile-tc-kimlik-numarasi-kontrolu#comments</comments>
		<pubDate>Tue, 29 Sep 2009 01:32:07 +0000</pubDate>
		<dc:creator>ondurart</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[kimlik numarası]]></category>
		<category><![CDATA[kimlik numarası doğrulama]]></category>
		<category><![CDATA[kimlik paylaşım sistemi]]></category>
		<category><![CDATA[kimlk numarası sorgulama]]></category>
		<category><![CDATA[nüfus ve vatandaşlık işleri]]></category>
		<category><![CDATA[php ile kimlik doğrulama]]></category>
		<category><![CDATA[php ile kimlik numarası]]></category>
		<category><![CDATA[php ile tc kimlik]]></category>
		<category><![CDATA[tc kimlik]]></category>
		<category><![CDATA[tc kimlik no doğrulama]]></category>
		<category><![CDATA[tc kimlik numarası]]></category>

		<guid isPermaLink="false">http://www.lestioni.com/?p=310</guid>
		<description><![CDATA[2000 yılından itibaren kullanmaya başladığımız tc kimlik numaraları, 2008 yılının mayıs ayından beridir, yapacağımız her resmi işlemde tc kimlik numarasının kullanılması zorunlu hale getirildi.. bununla birlikte bazı internet siteleri de (özellikle alışveriş siteleri) üye kayıtlarında tc kimlik numarası istiyor.. üye olduğumuz sitelerde, kimlik numaralarını doğrulayabilmek için çeşitli yöntemler kullanırlar.. büyük şirketler bu işlemi nüfus ve vatandaşlık [...]]]></description>
			<content:encoded><![CDATA[<p>2000 yılından itibaren kullanmaya başladığımız tc kimlik numaraları, 2008 yılının mayıs ayından beridir, yapacağımız her resmi işlemde tc kimlik numarasının kullanılması <a href="http://www.milliyet.com.tr/default.aspx?aType=HaberDetay&amp;ArticleID=503044&amp;ver=12" target="_blank">zorunlu hale getirildi</a>.. bununla birlikte bazı internet siteleri de (özellikle alışveriş siteleri) üye kayıtlarında tc kimlik numarası istiyor.. üye olduğumuz sitelerde, kimlik numaralarını doğrulayabilmek için çeşitli yöntemler kullanırlar.. büyük şirketler bu işlemi <a href="http://www.nvi.gov.tr" target="_blank">nüfus ve vatandaşlık işleri</a>&#8216;nin <a href="http://www.nvi.gov.tr/Hakkimizda/Projeler,Kps.html" target="_blank">kimlik paylaşım sistemi</a> ile otomatik yapıyorlar.. tabii her bir sorgu için belirli bir ücret ödüyorlar..</p>
<p>kimlik numarası doğrulama işlemini mantık olarak php ile nasıl yaparız, onu göreceğiz..<br />
<span id="more-310"></span></p>
<p>öncelikle, kimlik numaralarının algoritmasını belirtelim..</p>
<ul>
<li>kimlik numaraları 11 haneden oluşur..</li>
<li>her bir hane rakamsal değer içerir.. kesinlikle harf barındırmazlar..</li>
<li>0 (sıfır) ile başlamazlar..</li>
<li>1, 3, 5, 7 ve 9. basamakların toplamının 7 katından, 2, 4, 6 ve 8. basamakların toplamı çıkartıldığında, çıkan sonucun 10&#8242;a bölümünden kalan sayı (mod10), kimlik numaramızın 10. hanesine eşittir..</li>
<li>ilk 10 basamağın toplamından çıkan sonucun 10&#8242;a bölünmesinden kalan sayı da, 11. haneye eşittir..</li>
</ul>
<p>biraz karışık göründüğünün farkındayım ama aslında hiç de öyle değil :) kodumuz ile birlikte açıklayalım..</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

// kimlik numaramız..
$kno = 24598732561;
// kimlik numaramızın 11 haneli ve tamamen rakamlardan oluşup oluşmadığını
// kontrol ediyoruz..
if (eregi(&quot;^[0-9]{11,11}&quot;, $kno))
{
   // kimlik numaramız 0 (sıfır) ile başlıyorsa uyarı verip
   // işlemi durduruyoruz..
   if($kno[0] == 0)
   {
   	echo '&lt;strong&gt;'.$kno .': &lt;font color=&quot;red&quot;&gt;yanlış..&lt;/font&gt;&lt;/strong&gt;';
   	exit();
   }
   // tek haneleri (1, 3, 5, 7 ve 9. basamaklar) topluyoruz..
   $tekler = $kno[0] + $kno[2] + $kno[4] + $kno[6] + $kno[8];
   // çift haneleri (2, 4, 6 ve 8. basamaklar) topluyoruz..
   $ciftler = $kno[1] + $kno[3] + $kno[5] + $kno[7];
   // 10. basamağı kontrol etmek için; tekler toplamını 7 ile çarpıp,
   // çiftler toplamından çıkarıyoruz ve çıkan sonucun 10'a bölümünden
   // kalanı alıyoruz (mod10)
   $basamak10 = ($tekler * 7 - $ciftler) % 10;
   // ilk 10 haneyi toplayıp, 10'a bölümünden kalanı alıyoruz (mod10)
   $toplam = ($tekler + $ciftler + $kno[9]) % 10;
   // çıkan basamak10 değeri, kimlik numaramızın 10. basamağı ile eşleşiyor mu
   // kontrol ediyoruz..
   if($basamak10 != $kno[9])
   {
      echo '&lt;strong&gt;'.$kno .': &lt;font color=&quot;red&quot;&gt;yanlış..&lt;/font&gt;&lt;/strong&gt;';
   }
   // ilk 10 basamağın toplamının mod10 değeri, 11. basamak ile eşleşiyor mu
   // kontrol ediyoruz..
   if($toplam != $kno[10])
   {
      echo '&lt;strong&gt;'.$kno .': &lt;font color=&quot;red&quot;&gt;yanlış..&lt;/font&gt;&lt;/strong&gt;';
   }
   // yukarıdaki her iki eşleşmede de eşitsizliğe baktık.. eğer eşitlik varsa
   // aşağıdaki sonuç ekrana yansıyacaktır..
   else
   {
      echo '&lt;strong&gt;'.$kno .': doğru..&lt;/strong&gt;';
   }
}
// eğer kimlik numarası 11 haneden az veya çok ya da rakam harici karakterler
// içeriyorsa, kod hata verecek ve işlemi durduracak..
else
{
   echo '&lt;strong&gt;'.$kno .': &lt;font color=&quot;red&quot;&gt;yanlış..&lt;/font&gt;&lt;/strong&gt;';
   exit();
}

?&gt;
</pre>
<p>kodların içinde ne yaptığımızı gayet açık şekilde anlattığımı düşünüyorum.. kodun çalışan halini (bir küçük form eki ile birlikte) <a href="http://lestioni.com/deneme/kimlikno.php" target="_blank">buraya tıklayarak</a> deneyebilirsiniz.. kullanım kolaylığı açısından da bir fonksiyona dönüştürebilirsiniz..</p>
<p>bu kodun gerçek sonuçlar vermeyeceğini, sadece mantıken bir sorgulama yapabileceğinizi unutmayın..</p>
]]></content:encoded>
			<wfw:commentRss>http://eski.ondurart.com/php-ile-tc-kimlik-numarasi-kontrolu/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>php ile ziyaretçi bilgileri..</title>
		<link>http://eski.ondurart.com/php-ile-ziyaretci-bilgileri</link>
		<comments>http://eski.ondurart.com/php-ile-ziyaretci-bilgileri#comments</comments>
		<pubDate>Mon, 28 Sep 2009 18:03:16 +0000</pubDate>
		<dc:creator>ondurart</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[çerez]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[internet tarayıcısı]]></category>
		<category><![CDATA[ip adresi]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[sunucu protokolü]]></category>
		<category><![CDATA[uzak host]]></category>
		<category><![CDATA[web browser]]></category>
		<category><![CDATA[web tarayıcı]]></category>

		<guid isPermaLink="false">http://www.lestioni.com/?p=287</guid>
		<description><![CDATA[php ile bir site hazırladığınızda, sitenizi ziyaret eden kullanıcıların her türlü bilgisini de alabilirsiniz.. ip adresi, sitenize hangi adres üzerinden geldiği, kullandığı internet tarayıcısı, tarayıcı dili gibi bilgileri öğrenebiliriz.. özellikle kullanıcının doldurmasını istediğimiz formlarda bu özelliklerden faydalanmak mümkün.. ya da sadece zevk olsun diye kullanıcıların bu bilgilerini de alabiliriz :) peki, bu bilgileri hangi kodlarla, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://php.net/" target="_blank">php</a> ile bir site hazırladığınızda, sitenizi ziyaret eden kullanıcıların her türlü bilgisini de alabilirsiniz.. <em>ip adresi, sitenize hangi adres üzerinden geldiği, kullandığı internet tarayıcısı, tarayıcı dili</em> gibi bilgileri öğrenebiliriz.. özellikle kullanıcının doldurmasını istediğimiz formlarda bu özelliklerden faydalanmak mümkün.. ya da sadece zevk olsun diye kullanıcıların bu bilgilerini de alabiliriz :)</p>
<p>peki, bu bilgileri hangi kodlarla, nasıl alabiliriz? o da şu şekilde:<br />
<span id="more-287"></span></p>
<p>önce, hangi kodları kullanabiliriz, onlara bakalım..</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

	echo 'ip adresi: &lt;strong&gt;'. $_SERVER['REMOTE_ADDR'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'uzak host: &lt;strong&gt;'. gethostbyaddr($_SERVER['REMOTE_ADDR']) .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'internet tarayıcısı: &lt;strong&gt;'. $_SERVER['HTTP_USER_AGENT'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'geldiği adres: &lt;strong&gt;'. $_SERVER['HTTP_REFERER'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'tarayıcı dili: &lt;strong&gt;'. $_SERVER['HTTP_ACCEPT_LANGUAGE'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'sıkıştırma isteği: &lt;strong&gt;'. $_SERVER['HTTP_ACCEPT_ENCODING'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'sunucu protokolü: &lt;strong&gt;'. $_SERVER['SERVER_PROTOCOL'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'karakter seti: &lt;strong&gt;'. $_SERVER['HTTP_ACCEPT_CHARSET'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'kabul: &lt;strong&gt;'. $_SERVER['HTTP_ACCEPT'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'istek metodu: &lt;strong&gt;'. $_SERVER['REQUEST_METHOD'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'uzak port: &lt;strong&gt;'. $_SERVER['REMOTE_PORT'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'gerçek ip (proxy ile gelmişse): &lt;strong&gt;'. $_SERVER['HTTP_X_FORWARDED_FOR'] .'&lt;/strong&gt;';
	echo '&lt;br /&gt;';
	echo 'çerezler: &lt;strong&gt;'. $_SERVER['HTTP_COOKIE'] .'&lt;/strong&gt;';

?&gt;
</pre>
<p>kodlar bunlar.. peki hangisi ne iş yapıyor? tam olarak nedirler?</p>
<ul>
<li><strong>ip adresi:</strong> bilgisayarımızın internette kullandığı, <strong>66.249.65.104</strong> gibi görünen adresidir.. ip adresinden kişinin ev adresini rahatlıkla bulabilirsiniz.. tabii suç duyurusunda bulunmak gerek :)</li>
<li><strong>uzak host:</strong> ip adresinin hangi alana ait olduğunu görebilirsiniz.. <strong>66.249.65.104</strong> ip adresine sahip google botunun uzak host çıktısı <strong>crawl-66-249-65-104.googlebot.com</strong> şeklinde.. böylece sitenizi ziyaret eden kişinin gerçek kişi mi yoksa bir bot mu olduğunu anlayabilirsiniz..</li>
<li><strong>internet tarayıcısı:</strong> kullanıcının hangi tarayıcı ile (<a href="http://www.google.com/chrome" target="_blank">chrome</a>, <a href="http://www.mozilla-europe.org/tr/firefox/" target="_blank">firefox</a>, <a href="http://www.apple.com/safari/" target="_blank">safari</a>, <a href="http://www.opera.com/" target="_blank">opera</a> vb) sitenizi ziyaret ettiğini gösterir..</li>
<li><strong>geldiği adres:</strong> ziyaretçi sizin sitenize hangi adres üzerinden geldi? bunun cevabını bu kod ile alabilirsiniz..</li>
<li><strong>tarayıcı dili:</strong> internet tarayıcısının hangi dile göre ayarlandığını gösterir..</li>
<li><strong>sıkıştırma isteği:</strong> tarayıcı, internet sayfasının sıkıştırılmış halini istiyorsa burada belirtir.. bütün tarayıcılar bunu isterler.. amaç ağ trafiğini düşürmek.. google haricindeki diğer botlar ise böyle bir istekte bulunmazlar..</li>
<li><strong>sunucu protokolü:</strong> internet tarayıcıları http/1.1 ile iletişim kurarlar.. yine google dışındaki botlar http/1.0 kullanırlar..</li>
<li><strong>istek metodu:</strong> normal şartlarda istek metodu olarak <strong>get</strong> kullanılır.. örneğin tarayıcının adres satırında girdiğimiz değerler get metodu ile iletilirler.. ancak formlarda genelde <strong>post</strong> kullanılır..</li>
<li><strong>uzak port:</strong> kullanıcı bilgisayarının, internet sitesi ile iletişime geçmek için kullandığı port numarasıdır..</li>
<li><strong>gerçek ip:</strong> eğer siteye proxy ile girilmişse, proxy bize kullanıcının gerçek ip adresini verir..</li>
<li><strong>çerezler:</strong> sitemiz ile kullanıcıya çerez (cookie) göndermişsek, bu kod yardımı ile görebiliriz..</li>
</ul>
<p>buradaki kodlar yardımı ile, her ziyaretçiye farklı sayfalar göstermemiz mümkündür.. ya da bazı tarayıcıları kullanan kişileri sitemize almayabiliriz :)</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

$tarayici = $_SERVER[&quot;HTTP_USER_AGENT&quot;];
if (strstr($tarayici, 'MSIE'))
{
	echo '&lt;strong&gt;internet explorer&lt;/strong&gt; ile giremezsin!';
	exit();
}

?&gt;
</pre>
<p><a href="http://www.lestioni.com/deneme/ziyaretci_bilgileri.php" target="_blank">buraya tıklayarak</a> yukarıdaki kodların nasıl çalıştığını da görebilirsiniz..</p>
]]></content:encoded>
			<wfw:commentRss>http://eski.ondurart.com/php-ile-ziyaretci-bilgileri/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

