<?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>t-infection.com &#124; tasarım oyuncakları, web teknolojileri &#187; Bartuc</title>
	<atom:link href="http://www.t-infection.com/author/bartuc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.t-infection.com</link>
	<description>tasarım oyuncaklarımız ve web teknolojilerine dair kısa kısa...</description>
	<lastBuildDate>Sat, 02 Apr 2011 17:47:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A&#8217;dan Z&#8217;ye cPanel Sunucu Kurulum ve Ayarlaması</title>
		<link>http://www.t-infection.com/adan-zye-cpanel-sunucu-kurulum-ve-ayarlamasi/</link>
		<comments>http://www.t-infection.com/adan-zye-cpanel-sunucu-kurulum-ve-ayarlamasi/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 01:10:47 +0000</pubDate>
		<dc:creator>Bartuc</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[cPanel sunucu]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[sunucu]]></category>
		<category><![CDATA[sunucu kurulumu]]></category>

		<guid isPermaLink="false">http://www.t-infection.com/?p=645</guid>
		<description><![CDATA[
Merhabalar. Uzun zamandır buraya yazamıyorum, bu yüzden sanırım sizlere bir özür borçluyum. Bu aradan sonra, hep PHP hep PHP nereye kadar diyerek, farklı bir konudan bahsetmek istedim sizlere.
cPanel bir hostingimiz var. Sitemiz zamanla o kadar büyüdü ki, artık hosting, VPS hak getire, mecbur sunucu almamız gerekiyor. Fakat, sunucu alacağımız yer, çoğu yer gibi sadece kurulumu [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.t-infection.com/adan-zye-cpanel-sunucu-kurulum-ve-ayarlamasi/"><img src="http://t-infection.com/w3/cpanelgiris.gif" border="0" alt="cPanel" /></a></p>
<p>Merhabalar. Uzun zamandır buraya yazamıyorum, bu yüzden sanırım sizlere bir özür borçluyum. Bu aradan sonra, hep <a title="PHP" href="http://www.t-infection.com/tag/Php">PHP</a> hep PHP nereye kadar diyerek, farklı bir konudan bahsetmek istedim sizlere.</p>
<p><a title="cPanel" href="http://www.t-infection.com/tag/cPanel">cPanel</a> bir hostingimiz var. Sitemiz zamanla o kadar büyüdü ki, artık hosting, <a href="http://www.t-infection.com/tag/Vps">VPS</a> hak getire, mecbur sunucu almamız gerekiyor. Fakat, sunucu alacağımız yer, çoğu yer gibi sadece kurulumu yapıp veriyor. Birdünya ayar var, bunları ne yapacağımızı bilmiyoruz, cPanel sunucumuz oldu fakat güvenli mi, sağlam mı, ayarları yeterli mi, en ufak bir fikriniz yok.</p>
<p>Bu dökümanda, bir web hosting satıcısı ver server admini olarak, en genel ayarları nasıl yapmanız gerektiğini anlatacağım.<br />
<span id="more-645"></span><br />
<strong>Önemli: Bu işlemler sırasında sunucunuza zarar verecek olursanız, kesinlikle mesuliyet kabul etmiyoruz. Ayrıca, işlemleri aynı anda değil her birini tek tek sırayla yapmalısınız.<br />
</strong></p>
<p>İlk kontrol etmemiz gereken şey, sunucumuzun hostname &#8216;idir. Bunun önemi çok büyüktür, sağlıklı bir sunucu olması için bunu düzgünce ayarlamak şarttır. Networking Setup -&gt; Hostname kısmına girerek, hostname &#8216;i değiştiriyoruz. Burada dikkat edilmesi gereken şey şu. Eğer hostname server.siteadi.com olacaksa, siteadi.com domain kontrol panelinize girip nameserver tanımlaması yapmalı ve sunucu ip&#8217;sine server olarak atama yapmalısınız. Bundan sonra, hostname değiştirebilirsiniz. cPanel sizi &#8220;hostname için A kaydı bulunmuyor&#8221; şeklinde uyarınca da, eklemesi için gerekli butonu tıklayın, artık bu aşamayı geçebiliriz.</p>
<p>İkinci olarak ise, nameserver A kayıtları eklenmelidir. Server Configration -&gt; Basic cPanel/WHM Setup bölümüne girerek nameserver ayarını bulalım ve &#8220;Add an A entry for this nameserver&#8221; seçeneklerini tıklayalım, bunu bütün nameserverlarımız için yapmamız gerekiyor.</p>
<p>Bu iki ayarı düzgünce yaptıktan sonra, sunucumuz fonksiyonel hale gelecektir. Bu noktadan sonrasında, güvenlik vb.. ayarları yaparak sunucumuzu sorunsuz hale getireceğiz.</p>
<p>İlk yapacağımız şey, Tweak Settings bölümüne girerek Boxtrapper bulmak ve etkisizleştirmektir. Boxtrapper, sorunlu bir sistem ve sunucumuzun IP adresinin SPAM karalistelerine alınmasına sebep olabiliyor. Bu iş için bize SpamAssassin yeterli.</p>
<p>Bunu kaldırıp ayarlarımızı kaydettikten sonra, Service Configration kısmından Exim Configration Editor kısmına giriyoruz ve alt taraftan &#8220;Advanced Editor&#8221; linkine tıklıyoruz. Bu açılan sayfada, ilk kısma(ilk textarea&#8217;ya) tırnak işaretleri olmadan &#8220;log_selector = +arguments +subject&#8221; ibaresini ekleyip kaydediyoruz, cPanel de Exim&#8217;i baştan başlatıp ayarlarımızı kaydediyor. Bu işlem, Exim&#8217;in daha sorunsuz ve daha düzgün şekilde log tutmasına yarıyor.</p>
<p>Sırada, PHP ayarlarımız var. PHP, hatalı ayarlarla çok sorun çıkaracak bize, güvenlik denen bir olay olmadığı için. Ola ki birine host açarsanız shell scriptler ile çok rahat bir şekilde sunucunuzu ele geçirebilirler. Service Configration kısmından PHP Configration Editor&#8217;e giriyoruz ve üst taraftan &#8220;Switch to advanced mode&#8221; seçeneğini seçiyoruz. Sonrasında ise, &#8220;disable_functions&#8221; kısmını bularak tırnaklar olmadan aynen şunu yapıştırıyoruz:</p>
<pre class="brush: plain;">&quot;shell_exec,exec,system,glob,cat,dl,openbasedir,popen,proc_close,proc_get_status,proc_nice,proc_open,escapeshellcmd,escapeshellarg,show_source,posix_mkfifo,mysql_list_dbs,get_current_user,getmyuid,pconnect,link,symlink,pcntl_exec,ini_alter,parse_ini_file,leak,apache_child_terminate,posix_kill,posix_setpgid,posix_setsid,posix_setuid,proc_terminate,syslog,fpassthru,allow_url_fopen,stream_select,socket_select,socket_create,socket_create_listen,socket_create_pair,socket_listen,socket_accept,socket_bind,socket_strerror,pcntl_fork,pcntl_signal,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,openlog,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,virtual,name&quot;</pre>
<p>Sonrasında ise, &#8220;enable_dl&#8221; ayarını bularak &#8220;Off&#8221; konumuna getirip ayarlarımızı kaydediyoruz. Evet, artık güvenli bir PHP&#8217;miz var.</p>
<p>Şimdi FTP&#8217;mizi güvenli hale getirelim. Yine Service Configration kısmından FTP Server Configration kısmına giriyoruz ve &#8220;Allow Anonymous Logins&#8221;, &#8220;Allow Anonymous Uploads&#8221;, &#8220;Allow Logins With Root Password&#8221; kısımlarını &#8220;No&#8221; olarak seçip kaydediyoruz. Böylece, FTP&#8217;miz de artık taş gibi güvenli. Tabi ki, isimsiz FTP server çalıştıracaksanız, yani FTP server&#8217;a kullanıcı adı ve şifre olmadan halka açık bağlantı yapacaksanız, ilk seçeneği &#8220;Yes&#8221; olarak seçmelisiniz.</p>
<p>Şimdi ise gelelim Nameserver&#8217;ımıza. Varsayılan nameserver Bind, sorunlu bir sistem. Çok sıkıntı yaşatıyor. &#8220;Nameserver selection&#8221; bölümüne gelerek, Bind&#8217;den çok daha stabil ve hızlı olan &#8220;NSD&#8221; &#8216;yi seçiyoruz ve kaydediyoruz, bu işlem de tamamlanıyor.</p>
<p>Şimdi gelelim, birtakım cPanel add-onlarına. cPanel kısmından &#8220;Manage Plugins&#8221; bölümüne giriyoruz. İlk olarak, http://pro.cpanel.net/activate adresine gidiyoruz ve sunucumuzun IP adresini yazarak Pro eklentisini aktifleştiriyoruz. Daha sonra, Manage Plugins bölümünden &#8220;pro&#8221;, &#8220;clamavconnector&#8221;, &#8220;modbandwidth&#8221;, &#8220;modsecurity&#8221; seçerek alttaki Save butonuna tıklıyoruz ve bu eklentiler sunucumuza kuruluyor, birazcık uzun sürebilir ama önemli eklentiler bu şekilde geliyor, ImageMagick dahil.</p>
<p>Bu aşamayı da tamamladık, artık sunucumuzun derlemesini yapabiliriz. Derleme, sunucunun en önemli kısmıdır. Hangi modüller yüklenecek, hangileri yüklenmeyecek, hepsini bu şekilde belirleyeceğiz. Ben en güvenli ve en sık kullanılan ayarlara göre anlatıyorum, eğer ne yaptığınızı bilmiyorsanız, anlattıklarımdan şaşmamanızı öneririm, zira sunucunuza zarar verebilirsiniz.</p>
<p><strong>Önemli:</strong> Bu derleme işlemi kesinlikle yarıda kesilmemelidir. Yarıda kesilmesi durumunda sunucunuza format atılması ve tekrar kurulması gerekebilir. Eğer tarayıcı pencereniz kapansa bile derleme işlemi arkaplanda çalışmaya devam edecektir, yeter ki derleme işleminin bittiğinden emin olmadan sunucunuza kesinlikle reboot yaptırmayın.</p>
<p>Software kısmından Easy Apache (Apache Update) kısmına giriyoruz. &#8220;Start customizing based on profile&#8221; tıklıyoruz. Apache 2.2 seçip next step diyoruz. PHP 5 seçiyoruz, PHP 4 seçiliyse kaldırıyoruz, seçili olmamalı. Next step tıklıyoruz ve en alttaki, yani en günel seçeneği seçiyoruz. Şu anda en günce PHP versiyonu 5.2.8, yani daha yenisi olmadığı sürece 5.2.8 seçiyoruz. Next step tıklıyoruz, Frontpage, Mod SuPHP, Ioncube Loader for PHP, Mod Bandwidth, Mod Security ve Zend Optimizer for PHP seçiyoruz, bunların dışında seçili olan varsa kaldırıyoruz. Alttan &#8220;Exhaustive Options List&#8221; tıklıyoruz. Apache Build-In Modules kısmından <strong>sadece<a name="apache"></a></strong> şunların seçili olduğundan emin oluyoruz: Asis, AuthnDefault, Env, Expires, Fileprotect, Frontpage, Headers, Mod SuPHP, Proxy, UniqueID. Daha sonra Other Modules kısmında <strong>sadece</strong> şunların seçili olduğundan emin oluyoruz: &#8220;IonCube Loader for PHP&#8221;, &#8220;Mod Bandwidth&#8221;, &#8220;Mod Security&#8221;, &#8220;Zend Optimizer for PHP&#8221;. Şimdi ise, PHP ayarlarına geliyoruz ve sadece aşağıdakilerin seçili olduğundan emin oluyoruz: &#8220;Bcmath, CGI, Calendar, Curl, CurlSSL, Discard Path, FTP, GD, Gettext, Iconv, Imap, Magic Quotes, Mbregex, Mysql, Mysql of the system, POSIX, Path Info Check, Pear, Sockets, TTF (Free Type), Zlib. Sadece bunlarınseçili olduğundan emin olduktan sonra, Prefrences ve diğer kısımlara dokunmadan en alttaki &#8220;Save and Build&#8221; butonunu tıklıyoruz ve build başlıyor.</p>
<p>Build bittiğinde, cPanel bunu bize söylüyor. Bittikten sonra, Service Configuration bölümünden Apache Configration &#8216;a giriyoruz ve buradan &#8220;PHP and SuExec Configuration&#8221; bölümüne giriyoruz. &#8220;PHP 5 Handler&#8221; olarak suphp seçiyoruz, &#8220;PHP 4 Handler&#8221; none olarak kalıyor, &#8220;Apache suEXEC&#8221; ise On yapıyoruz ve &#8220;Do a dryrun&#8221; kutucuğunu <span style="text-decoration: underline;"><strong>işaretlemeden</strong></span> Save New Configuration diyoruz. Artık Harika bir sunucu konfigrasyonumuz var. Apache-PHP ile ilgili son ayar olarak, yine Apache Configuration&#8217;a giriyoruz ve &#8220;Memory Usage Restrictions&#8221; kısmını tıklayıp Proceed diyoruz. Artık arızalı scriptlerin sunucumuzu şişirmesi, kilitlemesi gibi şeyler de sözkonusu olmayacak.</p>
<p>Bu ayarları tamamladıktan sonra, Security kısmından Security Center bölümüne giriyoruz. cPHulk Brute Force Protection, PHP open_basedir Tweak, Apache mod_userdir Tweak, SMTP Tweak ve Shell Fork Bomb Protection ayarlarını açık konuma getiriyoruz, Compilers Tweak kısmında ise &#8220;Disable Compilers&#8221; tıklıyoruz. Artık, son derece güvenli bir sunucuya sahibiz.</p>
<p>Nihayet WHM ayarlarımızı tamamladık. Şimdi sunucumuza root olarak SSH ile giriş yapıyoruz. İlk önce, /etc/ssh/sshd_config dosyasını editliyoruz ve &#8220;Protocol 2,1&#8243; ayarının başına # koyarak etkisizleştiriyoruz, &#8220;Protocol 2&#8243; ayarının başındaki # işaretini ise kaldırıyoruz. Dilerseniz, Port 22 kısmından portu da değiştirebilirsiniz, SSH bağlanmak isteyen yetkisiz kişileri engelleyecektir, <strong>fakat önce, değiştireceğiniz portun kullanılmadığından ve herhangi bir firewall kullanıyorsanız firewall&#8217;da bu portun açık olduğundan emin olmalısınız. </strong>Bu dosyayı kaydedip çıkıyoruz ve &#8220;service sshd restart&#8221; yazarak SSH server&#8217;ı baştan başlatıyoruz, böylece yaptığımız ayarlar geçerli oluyor.</p>
<p>Şimdi, tmpfs bölümünü güvenli hale getirmek için /etc/fstab dosyasını editliyoruz. <strong>Bu dosyayı düzenlerken çok dikkatli olmalısınız, yapacağınız bir hata sunucunuza format atılmasını gerektirecektir. Söylediğimin dışında kesinlikle başka bir işlem yapmayınız.</strong> buradan tmpfs bölümünü buluyoruz ve aynı satırdaki defaults yazısının yanına ,noexec,nosuid ekliyoruz. Yani o satır şu şekilde görünmeli:</p>
<p>tmpfs                   /dev/shm                tmpfs   defaults,noexec,nosuid        0 0</p>
<p>Dosyayı kaydetmeden önce 3 kere kontrol ediyoruz, özellikle bu eklemeyi yapınca txt editörün herhangi bir kısmı alt satıra almadığından emin oluyoruz, alt satıra almışsa alta alınan kısmı tekrar yukarı çıkarıyoruz ve dosyamızı kaydedip çıkıyoruz. Bu ayarın da etkin olması için mount -o remount,noexec,nosuid /dev/shm komutunu çalıştırıyoruz.</p>
<p>Bunu da hallettikten sonra, sunucuda gerek duyulmayan, gereksiz yere sunucuyu yoracak bütün fonksiyonları kapatıyoruz. Sırasıyla, hata verirse önemsemeden(failed yazabilir, başka hata verebilir, önemli değil) aşağıdaki komutları çalıştırıyoruz:</p>
<p>service cups stop<br />
chkconfig cups off<br />
service xfs stop<br />
chkconfig xfs off<br />
service atd stop<br />
chkconfig atd off<br />
service nfslock stop<br />
chkconfig nfslock off<br />
service canna stop<br />
chkconfig canna off<br />
service FreeWnn stop<br />
chkconfig FreeWnn off<br />
service cups-config-daemon stop<br />
chkconfig cups-config-daemon off<br />
service iiim stop<br />
chkconfig iiim off<br />
service mDNSResponder stop<br />
chkconfig mDNSResponder off<br />
service nifd stop<br />
chkconfig nifd off<br />
service rpcidmapd stop<br />
chkconfig rpcidmapd off<br />
service bluetooth stop<br />
chkconfig bluetooth off<br />
service anacron stop<br />
chkconfig anacron off<br />
service gpm stop<br />
chkconfig gpm off<br />
service saslauthd stop<br />
chkconfig saslauthd off<br />
service avahi-daemon stop<br />
chkconfig avahi-daemon off<br />
service avahi-dnsconfd stop<br />
chkconfig avahi-dnsconfd off<br />
service hidd stop<br />
chkconfig hidd off<br />
service pcscd stop<br />
chkconfig pcscd off<br />
service sbadm stop<br />
chkconfig sbadm off<br />
service webmin stop<br />
chkconfig webmin off<br />
service ossec stop<br />
chkconfig ossec off</p>
<p>Bunların hepsini sırasıyla çalıştırdıktan sonra, gereksiz bütün servisler kapanmış oluyor.</p>
<p>Bu kadar çok ayar yaptık, şimdi cPanel&#8217;in bu ayarlar karşısında kendini kaybetmesini önleyelim. İlk olarak /scripts/upcp komutunu çalıştırarak cPanel update yapıyoruz. Bu işlemin bitmesini bekliyoruz, bittiğinden emin olmadan daha sonraki adımlara geçmiyoruz. Bittiğinden emin olamıyorsanız, ne olur ne olmaz diyeek yarım saat beklemenizi öneririm. Eğer yavaş bir bağlantı varsa, 2 saat bekleyin ki bir sorun çıkmasın. Bu işlem bittikten sonra da, /scripts/makecpphp komutunu çalıştırarak cpanelin kendine çeki düzen vermesini sağlıyoruz.</p>
<p>Bu işlem de bittikten sonra, service cpanel restart komutuyla cPanel&#8217;imizi baştan başlatıyoruz. Artık Her anlamda taş gibi çalışan bir sistemimiz var. Son olarak da, apache derlemesi apache&#8217;nin aklını bulandırabileceğinden, /scripts/rebuildhttpdconf komutuyla apache konfigrasyonumuzu tekrar düzenletiyoruz ve service httpd restart komutuyla apache&#8217;mizin sağlam konfigrasyonla çalışmasını sağlıyoruz.</p>
<p>İşte hepsi bu kadar, artık sapasağlam ve son derece güvenli bir cPanel sunucunuz var.</p>
<p>İşinize yarayabilecek birkaç ücretsiz eklenti:</p>
<ul>
<li><a href="http://www.configserver.com/cp/cse.html">Configserver Explorer</a></li>
<li><a href="http://www.configserver.com/cp/cmq.html">Configserver Mail Queues</a></li>
<li><a href="http://www.configserver.com/cp/cmm.html">Configserver Mail Manage</a></li>
</ul>
<p>Hayırlı uğurlu olsun.</p>
<p><strong>Önemli: Bu işlemler sırasında sunucunuza zarar verecek olursanız, kesinlikle mesuliyet kabul etmiyoruz.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.t-infection.com/adan-zye-cpanel-sunucu-kurulum-ve-ayarlamasi/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WordPress&#8217;de Yazılan Son Mesajlar</title>
		<link>http://www.t-infection.com/wordpressde_yazilan_son_mesajlar/</link>
		<comments>http://www.t-infection.com/wordpressde_yazilan_son_mesajlar/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 01:20:41 +0000</pubDate>
		<dc:creator>Bartuc</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[php uygulama]]></category>
		<category><![CDATA[son mesajlar]]></category>

		<guid isPermaLink="false">http://www.t-infection.com/?p=434</guid>
		<description><![CDATA[Merhabalar, uzun zamandır ne yazık ki yoğunluktan ötürü çok yazı yazamadım. Şimdi ise, bir çok kişiye lazım olabilecek basit bir uygulama yapımını öğreniyoruz.
Bu uygulama ile, istediğiniz bir wordpress blog&#8217;dan son mesajları çekebilirsiniz. Hem de veritabanı bilgilerine ihtiyaç duymadan, yazılan son mesajların başlığını sayfada gösterebiliriz.

İlk olarak, verileri çekebilmemiz için bize gereken şey, verileri çekeceğimiz wordpress blog [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar, uzun zamandır ne yazık ki yoğunluktan ötürü çok yazı yazamadım. Şimdi ise, bir çok kişiye lazım olabilecek basit bir uygulama yapımını öğreniyoruz.</p>
<p>Bu uygulama ile, istediğiniz bir wordpress blog&#8217;dan son mesajları çekebilirsiniz. Hem de veritabanı bilgilerine ihtiyaç duymadan, yazılan son mesajların başlığını sayfada gösterebiliriz.</p>
<p><span id="more-434"></span></p>
<p>İlk olarak, verileri çekebilmemiz için bize gereken şey, verileri çekeceğimiz wordpress blog sayfasının RSS adresi. Mesela, t-infection.com &#8216;un rss adresi http://www.t-infection.com/feed/rss/ &#8216;dir.</p>
<p>Bunu belirleyip not aldıktan sonra, PHP yazmaya başlayalım.</p>
<p>İlk olarak, son kaç mesajı çekeceğimizi ve hangi RSS adresinden çekeceğimizi belirtelim. Bu örnekte ben son 5 mesajı alıyorum.</p>
<p>___________________________________<br />
&lt; ?php<br />
$mesajsayisi = 5;<br />
$adres = &#8220;http://www.t-infection.com/feed/rss/&#8221;;<br />
?&gt;<br />
___________________________________</p>
<p>Bunu belirttikten sonra, &#8220;for&#8221; döngüsünde kullancağımız bir geçici değer oluşturalım, bu değeri for döngüsünde kullanacağız ve mesaj sayısının bir fazlası olması gerekiyor, böylece istediğimiz sayıda mesajı alsın ve dursun.</p>
<p>___________________________________<br />
&lt; ?php<br />
$mesajsayisi = 5;<br />
$adres = &#8220;http://www.t-infection.com/feed/rss/&#8221;;</p>
<p>$c = $mesajsayisi+1;<br />
?&gt;<br />
___________________________________</p>
<p>Şimdi ise, arasinial isminde bir fonksiyon oluşturalım. Bu fonksiyon, bir değerdeki istediğimiz bölümlerin arasındaki kısmı çekip alacak bir fonksiyondur.</p>
<p>___________________________________<br />
&lt; ?php<br />
$mesajsayisi = 5;<br />
$adres = &#8220;http://www.t-infection.com/feed/rss/&#8221;;</p>
<p>$c = $mesajsayisi+1;</p>
<p>function arasinial($a,$b,$data,$kacinci)<br />
{<br />
$x = explode($a,$data);<br />
$z = explode($b,$x[$kacinci]);<br />
$oh = $z[0];<br />
if($x &amp;&amp; $z) { return $oh; } else { return false; }<br />
}<br />
?&gt;<br />
___________________________________</p>
<p>Bu fonksiyonumuzu da oluşturduktan sonra, RSS sayfasını açıp içindeki verileri bir değişken olarak kaydedelim. bu iş için bize file_get_contents fonksiyonu gerekiyor.</p>
<p>___________________________________<br />
&lt; ?php<br />
$mesajsayisi = 5;<br />
$adres = &#8220;http://www.t-infection.com/feed/rss/&#8221;;</p>
<p>$c = $mesajsayisi+1;</p>
<p>function arasinial($a,$b,$data,$kacinci)<br />
{<br />
$x = explode($a,$data);<br />
$z = explode($b,$x[$kacinci]);<br />
$oh = $z[0];<br />
if($x &amp;&amp; $z) { return $oh; } else { return false; }<br />
}</p>
<p>$tumsayfa = file_get_contents($adres);<br />
?&gt;<br />
___________________________________</p>
<p>$tumsayfa değişkenine RSS içindeki verilerin tamamını aktardık. Yani, bu RSS sayfasının bütün kaynak kodunu içeriyor. Bizim şimdi yapmamız gereken, bu kaynak kodunu parçalayıp son 5 mesajı almak. Fakat o da ne! RSS sayfasının karakter kodlaması utf8 olduğu için, ISO-8859-9 kodlama kullanan sayfalarda çekilen veriler bozuk geliyor! Önce bu bozuk harfleri düzeltelim, sonra parçalamaya başlayalım.</p>
<p>___________________________________<br />
&lt; ?php<br />
$mesajsayisi = 5;<br />
$adres = &#8220;http://www.t-infection.com/feed/rss/&#8221;;</p>
<p>$c = $mesajsayisi+1;</p>
<p>function arasinial($a,$b,$data,$kacinci)<br />
{<br />
$x = explode($a,$data);<br />
$z = explode($b,$x[$kacinci]);<br />
$oh = $z[0];<br />
if($x &amp;&amp; $z) { return $oh; } else { return false; }<br />
}</p>
<p>$tumsayfa = file_get_contents($adres);</p>
<p>$tumsayfa = str_replace(&#8220;ÄŸ&#8221;, &#8220;ğ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä&#8221;, &#8220;Ğ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã¼&#8221;, &#8220;ü&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ãœ&#8221;, &#8220;Ü&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;ÅŸ&#8221;, &#8220;ş&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Å&#8221;, &#8220;Ş&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä°&#8221;, &#8220;İ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä±&#8221;, &#8220;ı&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã¶&#8221;, &#8220;ö&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã–&#8221;, &#8220;Ö&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã§&#8221;, &#8220;ç&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã‡&#8221;, &#8220;Ç&#8221;, $tumsayfa);<br />
?&gt;<br />
___________________________________</p>
<p>Bu işlemi ben arka arkaya str_replace kullanarak yaptım. Türkçe karakterlerin bozuk olan utf8 karşılıklarını türkçe halleri ile değiştirdim. Aynı işlem array ile de yapılabilir, nasıl isterseniz.</p>
<p>Şimdi sırada RSS içindeki &lt;item&gt; kısımlarını kesip, yani mesajları kesip gerisini atmaya geldi. Bu iş için arasinial fonksiyonunu kullanıyoruz ve &#8220;&lt;language&gt;en&lt;/language&gt;&#8221; ile &#8220;&lt;/channel&gt;&#8221; kısımlarının arasını alıp ayrı bir değişken belirliyoruz. Böylece elimizde sadece &lt;item&gt; içeren mesaj kısımları kalıyor.</p>
<p>___________________________________<br />
&lt; ?php<br />
$mesajsayisi = 5;<br />
$adres = &#8220;http://www.t-infection.com/feed/rss/&#8221;;</p>
<p>$c = $mesajsayisi+1;</p>
<p>function arasinial($a,$b,$data,$kacinci)<br />
{<br />
$x = explode($a,$data);<br />
$z = explode($b,$x[$kacinci]);<br />
$oh = $z[0];<br />
if($x &amp;&amp; $z) { return $oh; } else { return false; }<br />
}</p>
<p>$tumsayfa = file_get_contents($adres);</p>
<p>$tumsayfa = str_replace(&#8220;ÄŸ&#8221;, &#8220;ğ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä&#8221;, &#8220;Ğ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã¼&#8221;, &#8220;ü&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ãœ&#8221;, &#8220;Ü&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;ÅŸ&#8221;, &#8220;ş&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Å&#8221;, &#8220;Ş&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä°&#8221;, &#8220;İ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä±&#8221;, &#8220;ı&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã¶&#8221;, &#8220;ö&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã–&#8221;, &#8220;Ö&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã§&#8221;, &#8220;ç&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã‡&#8221;, &#8220;Ç&#8221;, $tumsayfa);</p>
<p>$veriler = arasinial(&#8220;&lt;language&gt;en&lt;/language&gt;&#8221;, &#8220;&lt;/channel&gt;&#8221;, $tumsayfa, 1);<br />
?&gt;<br />
___________________________________</p>
<p>Şimdi ise, bu &lt;item&gt; kısımlarının her birini parçalayalım. Bu iş için explode bize yardımcı olacak. Buradaki kritik nokta şu ki, explode fonksiyonu kullanıldığında, patlatılan değerin ilk kısmı [0] olarak atanır. Fakat biz &lt;item&gt; kısmını patlatacağımız için ve bizim değişkenimiz &lt;item&gt; ile başladığı için, ilk değer olan [0] değeri boş olacak. Bu yüzden for döngümüzü 0 yerine 1 ile başlatacağız ve yine aynı sebepten dolayı istediğimiz mesaj sayısının bir fazlası olan geçici bir değişken tanımladık.</p>
<p>___________________________________<br />
&lt; ?php<br />
$mesajsayisi = 5;<br />
$adres = &#8220;http://www.t-infection.com/feed/rss/&#8221;;</p>
<p>$c = $mesajsayisi+1;</p>
<p>function arasinial($a,$b,$data,$kacinci)<br />
{<br />
$x = explode($a,$data);<br />
$z = explode($b,$x[$kacinci]);<br />
$oh = $z[0];<br />
if($x &amp;&amp; $z) { return $oh; } else { return false; }<br />
}</p>
<p>$tumsayfa = file_get_contents($adres);</p>
<p>$tumsayfa = str_replace(&#8220;ÄŸ&#8221;, &#8220;ğ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä&#8221;, &#8220;Ğ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã¼&#8221;, &#8220;ü&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ãœ&#8221;, &#8220;Ü&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;ÅŸ&#8221;, &#8220;ş&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Å&#8221;, &#8220;Ş&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä°&#8221;, &#8220;İ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä±&#8221;, &#8220;ı&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã¶&#8221;, &#8220;ö&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã–&#8221;, &#8220;Ö&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã§&#8221;, &#8220;ç&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã‡&#8221;, &#8220;Ç&#8221;, $tumsayfa);</p>
<p>$veriler = arasinial(&#8220;&lt;language&gt;en&lt;/language&gt;&#8221;, &#8220;&lt;/channel&gt;&#8221;, $tumsayfa, 1);</p>
<p>$parcalar = explode(&#8220;&lt;item&gt;&#8221;, $veriler);<br />
?&gt;<br />
___________________________________</p>
<p>Bu patlatma işini de yaptıktan sonra geriye sadece for döngüsü kaldı. Bu for döngüsünde &lt;title&gt; ve &lt;/title&gt; kısımlarının arasını alıp bunu başlık yapacağız, &#8220;&lt;link&gt;&#8221; ve &#8220;&lt;/link&gt;&#8221; kısımlarının arasını alarak bunu url yapacağız ve linkimizi oluşturacağız. Açıklamaları for döngüsünün kodlarının içinde bulacaksınız.</p>
<p>Bu işlemden sonra ise, aşağıdaki gibi, uygulamamız hazır ve çalışır durumda.</p>
<p>___________________________________<br />
&lt;?php<br />
$mesajsayisi = 5;<br />
$adres = &#8220;http://www.t-infection.com/feed/rss/&#8221;;</p>
<p>$c = $mesajsayisi+1;</p>
<p>function arasinial($a,$b,$data,$kacinci)<br />
{<br />
$x = explode($a,$data);<br />
$z = explode($b,$x[$kacinci]);<br />
$oh = $z[0];<br />
if($x &amp;&amp; $z) { return $oh; } else { return false; }<br />
}</p>
<p>$tumsayfa = file_get_contents($adres);</p>
<p>$tumsayfa = str_replace(&#8220;ÄŸ&#8221;, &#8220;ğ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä&#8221;, &#8220;Ğ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã¼&#8221;, &#8220;ü&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ãœ&#8221;, &#8220;Ü&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;ÅŸ&#8221;, &#8220;ş&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Å&#8221;, &#8220;Ş&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä°&#8221;, &#8220;İ&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ä±&#8221;, &#8220;ı&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã¶&#8221;, &#8220;ö&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã–&#8221;, &#8220;Ö&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã§&#8221;, &#8220;ç&#8221;, $tumsayfa);<br />
$tumsayfa = str_replace(&#8220;Ã‡&#8221;, &#8220;Ç&#8221;, $tumsayfa);</p>
<p>$veriler = arasinial(&#8220;&lt;language&gt;en&lt;/language&gt;&#8221;, &#8220;&lt;/channel&gt;&#8221;, $tumsayfa, 1);</p>
<p>$parcalar = explode(&#8220;&lt;item&gt;&#8221;, $veriler);</p>
<p>for($i=1;$i&lt;$c;$i++) {<br />
$a = arasinial(&#8220;&lt;title&gt;&#8221;, &#8220;&lt;/title&gt;&#8221;, $parcalar[$i], 1); //explode ile parçaladğımız değerin arasını alıp değişken belirliyoruz<br />
$b = arasinial(&#8220;&lt;link&gt;&#8221;, &#8220;&lt;/link&gt;&#8221;, $parcalar[$i], 1); //explode ile parçaladğımız değerin arasını alıp değişken belirliyoruz<br />
echo &#8220;&lt;a href=\&#8221;".$b.&#8221;\&#8221;&gt;&#8221;.$a.&#8221;&lt;/a&gt;&lt;br&gt;&#8221;; // nihayet sayfaya basılacak olan link<br />
}<br />
?&gt;<br />
___________________________________</p>
<p>Umarım iyi anlatabilmişimdir, umarım işinize yarar.</p>
<p>Dipnot: iG:Syntax Hiliter eklentisi kafayı yediği için kodları bu şekilde ekledim, anlaşılmaz olduysa affola, kodları buradan kopyalayıp Dreamweaver ya da başka bir PHP editörüne yapıştırarak daha düzgün görebilirsiniz. <strong>Ayrıca tırnakları WordPress yatırdığı için normal tırnak ile değiştirmelisiniz, yoksa hata verecektir.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.t-infection.com/wordpressde_yazilan_son_mesajlar/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP Standartlarında Kodlama 3: If-Else Kullanımı</title>
		<link>http://www.t-infection.com/php-standartlarinda-kodlama-3-if-else-kullanimi/</link>
		<comments>http://www.t-infection.com/php-standartlarinda-kodlama-3-if-else-kullanimi/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 13:41:35 +0000</pubDate>
		<dc:creator>Bartuc</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[PHP Kodlama]]></category>
		<category><![CDATA[Standart PHP Kodlama]]></category>

		<guid isPermaLink="false">http://www.t-infection.com/?p=310</guid>
		<description><![CDATA[Merhabalar, PHP Standartlarında Kodlama serisinin 3. yazısını yazmadan önce, bir açıklama yapma gereği duydum. Bu yazı serisinin amacı PHP kodlamayı öğretmekten ziyade, doğru PHP kodlamayı öğretmektir. Yani sizin yazdığınız ve çalışan kodlarda, farklı methodlar kullanıyorsanız bile, bu yazdığım şekilde kullanmanız en iyisi olacaktır, hiçbir sunucuda uyum sorunu yaşamadan kodlama yapabileceksiniz.
Yazıya başlarken, öncelikle if ve else [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar, PHP Standartlarında Kodlama serisinin 3. yazısını yazmadan önce, bir açıklama yapma gereği duydum. Bu yazı serisinin amacı PHP kodlamayı öğretmekten ziyade, doğru PHP kodlamayı öğretmektir. Yani sizin yazdığınız ve çalışan kodlarda, farklı methodlar kullanıyorsanız bile, bu yazdığım şekilde kullanmanız en iyisi olacaktır, hiçbir sunucuda uyum sorunu yaşamadan kodlama yapabileceksiniz.</p>
<p>Yazıya başlarken, öncelikle if ve else nedir onu açıklayayım.</p>
<p>IF, Türkçesi &#8220;eğer&#8221;, else ise Türkçesi &#8220;değilse&#8221; olan kelimelerdir.</p>
<p><span id="more-310"></span>Bu ikili PHP&#8217;nin vazgeçilmezleridir.</p>
<p>Örnek vermek gerekirse,</p>
<pre class="brush: php;">$a = 1; // örnek değişkenimizi tanımlayalım
if($a == 1) { //eğer $a'nın değeri 1 ise
echo &quot;Evet, a'nın değeri 1'e eşittir.&quot;;
} else { // değilse
echo &quot;Hayır, a'nın değeri 1'e eşit değil.&quot;;
</pre>
<p><strong>Peki bunu anladık, ya işler biraz daha karışırsa ne olacak? Birden çok koşul veya değere birden çok tanımlama gerekirse ne olacak?</strong></p>
<p>Bunun da cevabı çok zor değil.</p>
<pre class="brush: php;">$a = 1; // örnek değişkenimizi tanımlayalım
$b = 2; // örnek değişkenimizi tanımlayalım
$c = 3; // örnek değişkenimizi tanımlayalım

if(($a == 1) || ($b == 1)) { // eğer $a veya $b 1'e eşitse, || ile veya sağladık
echo &quot;Tamam.&quot;; // koşul sağlandı.
}

if(($a == 1) &amp;&amp; ($b == 1)) { // eğer $a ve $b 1'e eşitse, &amp;amp;&amp;amp; ile ve sağladık
echo &quot;Tamam.&quot;; // koşul sağlanmadı($b eşit değildir 1), işlem yapılmayacak
}

if(($a == 1) &amp;&amp; ($c != 5)) { // eğer $a 1'e eşitse ve $c 5'e eşit değilse
echo &quot;Tamam.&quot;; // koşul sağlandı.
}</pre>
<p>Örneklerden de anlayacağınız gibi, eşitlik koşulunu belirtirken == kullanıyoruz, eşit olmama koşulunu belirtirken ise != kullanıyoruz. Buna dikkat edilmeli, if koşullarında çift eşittir işareti(eşitlik koşulu) veya ünlemle birlikte eşittir işareti(eşit olmama koşulu) kullanılır.<br />
<strong><br />
Peki ya aynı değişkenin farklı değerleri için işlem yapmak gerekirse?</strong><br />
İşte bu noktada, işin içine &#8220;else if&#8221; komutu giriyor.</p>
<pre class="brush: php;">if($a &lt; 5) { //$a 5'den küçükse
echo &quot;a, 5'den küçük.&quot;;
} else if(($a &gt;= 5) &amp;&amp; ($a &lt; 10)) { //$a 5'den büyük ya da 5'e eşitse ve 10'dan küçükse
echo &quot;a, 5'den büyük ya da 5'e eşit ve 10'dan küçük.&quot;;
} else { //eğer $a, yukarıdaki koşullara uymuyorsa, yani bu örneğe göre 10'dan büyükse
echo &quot;a, 10'dan büyük&quot;;
}</pre>
<p>Burada dikkat edilmesi gereken şey şu, else if kullandığınızda döngünüzü else ile bitirmelisiniz, yani hiçbir koşul sağlanmadığında ne olacağını da belirtmelisiniz.</p>
<p><strong>Not: İlk makalemde değişken tanımlamaktan bahsetmiştim. Eğer okuduysanız hatırlayacağınız gibi sayılar için tırnak kullanmıyoruz. Eğer sayı değil de metin eşitliği yapıyorsanız tırnak kullanmalısınız. Örnek tanımlama:</p>
<pre class="brush: php;">if($a == &quot;cihan&quot;) {
echo &quot;cihan.&quot;;
}</pre>
<p>İşinize yarayabilecek 2 kod:</p>
<pre class="brush: php;">if(isset($_GET['id'])) { //eğer url'de id varsa, örneğin index.php?id veya index.php?id=2
echo &quot;tanımlanmış&quot;;
}

if(!isset($_GET['id'])) { //eğer url'de id yoksa
echo &quot;tanımlanmamış&quot;;
}

if(is_numeric($a)) { //eğer $a değeri sayısal bir değerse
echo &quot;sayısal&quot;;
}

if(!is_numeric($a)) { //eğer $a değeri sayısal bir değer değilse
echo &quot;sayısal değil&quot;;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.t-infection.com/php-standartlarinda-kodlama-3-if-else-kullanimi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP Standartlarında Kodlama 2: Sessionlarla Çalışmak</title>
		<link>http://www.t-infection.com/php-standartlarinda-kodlama-2-sessionlarla-calismak/</link>
		<comments>http://www.t-infection.com/php-standartlarinda-kodlama-2-sessionlarla-calismak/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 02:01:07 +0000</pubDate>
		<dc:creator>Bartuc</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[PHP Kodlama]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[Standart PHP Kodlama]]></category>

		<guid isPermaLink="false">http://www.t-infection.com/?p=281</guid>
		<description><![CDATA[Merhabalar, daha önce PHP Standartlarında değişken tanımlama ve bunların en doğru kullanımını anlatmıştım, şimdi ise sessionlara el atacağım. Sessionların bir çok farklı kullanım şekli var fakat burada en sağlıklısını açıklamaya çalışacağım, uzun birşey değil zaten. Yine de, bir çok kişinin yaşadığı uyum sorunları(PHP versiyonları arası) engellenmiş olacak.
Session bildiğiniz gibi aynı oturum dahilinde sayfalar arasında değişken [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar, daha önce PHP Standartlarında değişken tanımlama ve bunların en doğru kullanımını anlatmıştım, şimdi ise sessionlara el atacağım. Sessionların bir çok farklı kullanım şekli var fakat burada en sağlıklısını açıklamaya çalışacağım, uzun birşey değil zaten. Yine de, bir çok kişinin yaşadığı uyum sorunları(PHP versiyonları arası) engellenmiş olacak.</p>
<p>Session bildiğiniz gibi aynı oturum dahilinde sayfalar arasında değişken taşımanızı sağlar. Yani a.php sayfasında tanımlanacak olan bir değişkeni b.php sayfasında da kullanmanız gerekiyorsa, sessionlar yardımınıza koşuyor.</p>
<p><span id="more-281"></span></p>
<p><strong>En önemli şey, kesinlikle ama kesinlikle, globals kullanmayın. Sadece session kullanın.</strong> Çünkü globals de yapabileceğiniz ufacık bir hata ile sadece sizin siteniz de değil, bütün sunucuyu tehdit altına atarsınız.</p>
<p>Sayfada sessionlarla çalışılacaksa, ilk olarak, sayfanın en üstlerinde bir yer olması daha iyi olur,</p>
<pre class="brush: php;">session_start();</pre>
<p>kodunu ekliyoruz. Bu kod eklenmediği sürece, sayfada hiçbir şekilde session çalıştıramazsınız. Yani yazdığınız kod çalışmıyorsa ilk önce bunu ekleyip eklemediğinizi kontrol edin, bilmemkaç saat kodlarda hata aramayın(başıma gelmişti :) ). Bu kodu ekledikten sonra, sayfada sessionlarla çalışabiliriz.</p>
<p>Burada PHP standartlarına göre dikkat etmemiz gereken şey şu. <strong>session_register()</strong> veya <span style="color: #000000;"><span style="color: #0000bb;">HTTP_SESSION_VARS</span></span> kullanacağımıza, session tanımlarken ve bunlarla işlem yaparken, $_SESSION[] kullanmak daha sağlıklı.</p>
<pre class="brush: php;">$_SESSION['uyeadi'] = &quot;Bartuc&quot;; // tanımladık
$uyeninadi = $_SESSION['uyeadi']; // kullandık</pre>
<p>Session&#8217;u bitirmek için ise, unset() kullanabiliriz veya boş bir değer verebiliriz, farketmez, hangisi kolayınıza gelirse. Yine de, session&#8217;dan tamamen kurtulmak için unset kullanmak daha iyi.</p>
<pre class="brush: php;">unset($_SESSION['uyeadi']); // session'u siler
$_SESSION['uyeadi'] = &quot;&quot;; // sessiona boş bir değer verir</pre>
<p>Burada belirttiğim şey PHP standartlarında olduğu için, localhostta çalıştı sunucuda çalışmadı ya da tersi durumları bu kodlarla yaşamazsınız. Rahat rahat kodlar, heryerde rahat rahat kullanabilirsiniz :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.t-infection.com/php-standartlarinda-kodlama-2-sessionlarla-calismak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>PHP Standartlarında Kodlama 1: Değişken Tanımlama</title>
		<link>http://www.t-infection.com/php-standartlarinda-kodlama-1-degisken-tanimlama/</link>
		<comments>http://www.t-infection.com/php-standartlarinda-kodlama-1-degisken-tanimlama/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 13:27:23 +0000</pubDate>
		<dc:creator>Bartuc</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Değişkenler]]></category>
		<category><![CDATA[PHP Kodlama]]></category>
		<category><![CDATA[Standart PHP Kodlama]]></category>

		<guid isPermaLink="false">http://www.t-infection.com/?p=261</guid>
		<description><![CDATA[Merhabalar, PHP ile ilgili 2. yazımla tekrar beraberiz. Bu makaleyi daha önce yazmış olmama rağmen, burada yayınlamak istedim çünkü, PHP standartlarında kodlama yapmak çok önemlidir. Her ne kadar, farklı şekillerde yazdığınız kodlar çalışsa da veye çalışıyor görünse de, kodu uslubuyla yazmadıysanız daha sonra başınızı ağrıtabilir.
Hani olur ya, localhost&#8217;da çalışan kod sunucuda çalışmaz, ya da PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar, PHP ile ilgili 2. yazımla tekrar beraberiz. Bu makaleyi daha önce yazmış olmama rağmen, burada yayınlamak istedim çünkü, PHP standartlarında kodlama yapmak çok önemlidir. Her ne kadar, farklı şekillerde yazdığınız kodlar çalışsa da veye çalışıyor görünse de, kodu uslubuyla yazmadıysanız daha sonra başınızı ağrıtabilir.</p>
<p>Hani olur ya, localhost&#8217;da çalışan kod sunucuda çalışmaz, ya da PHP versiyon güncellenir eskiden çalışan kodlar çalışmaz filan, PHP Standartlarında Kodlama serisini bu yüzden yazmaya karar verdim, php.net standartlarına göre en uygun, en standart kodlamayı yapmanın püf noktalarını anlatmak için. Aklıma geldikçe ve vakit buldukça en çok yapılan hataları ve en doğru kullanımları anlatacağım.</p>
<p><span id="more-261"></span></p>
<p>Bir değişkeni tanımlarken fazla ne detay olabilir diyebilirsiniz. Fakat php.net der ki, eğer tanımlanan değişken bir sayıysa, bunu tanımlarken tırnak <strong>kullanmamalıyız</strong>.</p>
<pre class="brush: php;">$degisken = 556456;</pre>
<p>gibi.</p>
<p>Harf ya da bir metin tanımlarken, tırnaklar kullanırız, açılış/kapanış tırnağının aynısı tanımladığımız metnin içinde geçiyorsa önüne \ koyarız. Peki, &#8221; ya da &#8216; kullanılabiliyorken, hangisini nerede kullanmalıyız?</p>
<pre class="brush: php;">$bartuc = 'cihan';
$degisken = 'sadasd dasdasdas $bartuc';</pre>
<p>şeklinde kullandığımızda ve bunu echo yaptırdığımızda, sayfaya aynen <strong>sadasd dasdasdas $bartuc </strong>şeklinde basılır. Fakat;</p>
<pre class="brush: php;">$bartuc = 'cihan';
$degisken = &quot;sadasd dasdasdas $bartuc&quot;;</pre>
<p>kullandığımızda, sayfaya basılan şey aynen <strong>sadasd dasdasdas cihan</strong> olacaktır. Yani, &#8216; kullanıldığında içindeki değişkenler değişken olarak algılanmaz ve sayfaya aynen basılır, &#8221; kullanıldığında ise değişkenler okunur.</p>
<p>Eğer;</p>
<pre class="brush: php;">$bartuc = 'cihan';
$degisken = &quot;sadasd dasdasdas \$bartuc&quot;;</pre>
<p>şeklinde, çifttırnak içinde $ değişken tanımlama karakterimizi \ ile birlikte kullanırsak, tek tırnaktan farkı kalmayacak ve değişkeni algılamadan basacaktır.<br />
Peki, çift tırnak içinde değişken kullanmak sağlıklı mıdır? Çalışacak da olsa, <strong>sağlıklı değildir.</strong> Kullanılması gereken en sağlıklı format, yazdığımız metinler ile değişkenleri birbirinden . karakteri ile ayırmaktır. yani;</p>
<pre class="brush: php;">$degisken = &quot;sadasd dasdasdas $bartuc&quot;;</pre>
<p>ve</p>
<pre class="brush: php;">$degisken = &quot;sadasd dasdasdas &quot;.$bartuc; //ya da
$degisken2 = &quot;sadasd dasdasdas &quot;.$bartuc.&quot; sadasdsa dasdasd &quot;.$bartuc2.&quot; dasdasd&quot;;</pre>
<p>aynı işi göreceklerdir ama, alttaki kullanım biçimi daha sağlıklıdır, olması gereken budur. Peki çok karışık bir kod yazıyorsanız ve bütün değişkenleri tek tek böyle ayırmak istemiyorsanız veya ayırarak bir sonuca varamıyorsanız ne yapacaksınız? sprintf() fonksiyonu burada yardımımıza yetişiyor. Basit bir örnekle bu fonksiyonun kullanımını anlatacağım.</p>
<pre class="brush: php;">$tanim1 = &quot;kere&quot;;
$tanim2 = &quot;dört&quot;;
$tanim3 = &quot;beş&quot;;
$degisken = &quot;iki $tanim1 iki $tanim2 eder. üç ya da $tanim3 değil.&quot;;</pre>
<p>yerine;</p>
<pre class="brush: php;">$tanim1 = &quot;kere&quot;;
$tanim2 = &quot;dört&quot;;
$tanim3 = &quot;beş&quot;;
$degisken = sprintf(&quot;iki %s iki %s eder. üç ya da %s değil.&quot;, $tanim1, $tanim2, $tanim3);</pre>
<p>kullanmak daha sağlıklı olacaktır. Peki burada tam olarak ne yaptık?<br />
sprintf fonksiyonunda ilk parametre, tanımlanacak olan metindir. bu metinin içindeki değişkenleri %s karakteri ile değiştiririz. tırnağımızı kapatıp virgülümüzü koyduktan sonra, yani ilk parametreyi bitirdikten sonra, sırasıyla yerleştirdiğimiz %s&#8217;lerin yerlerine hangi değişkenler gelecekse ayrı parametreler halinde ekleyerek parantezimizi kapatıp fonksiyonu sonlandırırız.</p>
<p><strong>Tanımladığımız bir değişkeni sayfaya bastırırken de aynı kurallar geçerlidir. Unutulmamalı ki, hiçbir değişken, doğrudan sayfaya kod halinde basılmayacağı sürece, tırnak içinde kullanılmamalıdır.</strong></p>
<pre class="brush: php;">echo &quot;$cihan&quot;;</pre>
<p>ve</p>
<pre class="brush: php;">echo $cihan;</pre>
<p>aynı işi yapsalar da, kullanmak için alttaki seçilmelidir.</p>
<p>Basit şeylerden bahsettim, daha sonra daha farklı fonksiyonların kullanımıyla ilgili ayrıntılı dökümanlar yazacağım.</p>
<p>Görüşmek üzere.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.t-infection.com/php-standartlarinda-kodlama-1-degisken-tanimlama/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>SQL&#8217;de Kabus, SQL Injection!</title>
		<link>http://www.t-infection.com/sqlde-kabus-sql-injection/</link>
		<comments>http://www.t-infection.com/sqlde-kabus-sql-injection/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 19:15:19 +0000</pubDate>
		<dc:creator>Bartuc</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[PHP Güvenlik]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Injection]]></category>

		<guid isPermaLink="false">http://www.t-infection.com/?p=253</guid>
		<description><![CDATA[Merhaba t-infection okurları, bu sitedeki ilk yazımda, PHP&#8217;ye ilk başladığım zamanlar en çok yaptığım bir hatayı ve bunu nasıl düzelteceğimizi anlatmak istedim. Eğer PHP yazıyorsanız, ilk başta öğrenmeniz gereken önemli noktalardan birisidir, aksi taktirde bütün emekleriniz boşa gidebilir.
SQL injection denen method ile, veritabanınıza yetkisiz işlem yaptırılabilir. Bu yetkisiz işlemler ile, veritabanınızdaki bir tablo tamamen boşaltılabilir, [...]]]></description>
			<content:encoded><![CDATA[<p>Merhaba t-infection okurları, bu sitedeki ilk yazımda, PHP&#8217;ye ilk başladığım zamanlar en çok yaptığım bir hatayı ve bunu nasıl düzelteceğimizi anlatmak istedim. Eğer PHP yazıyorsanız, ilk başta öğrenmeniz gereken önemli noktalardan birisidir, aksi taktirde bütün emekleriniz boşa gidebilir.</p>
<p>SQL injection denen method ile, veritabanınıza yetkisiz işlem yaptırılabilir. Bu yetkisiz işlemler ile, veritabanınızdaki bir tablo tamamen boşaltılabilir, veriler silinebilir veya veri eklenebilir, daha da kötüsü yazdığınız script bir yönetim paneline sahipse buraya izinsiz girişler olabilir.</p>
<p>SQL injection methodları farklılık gösterebilir, URL ile yapılabilir(GET), sitedeki formlar ile yapılabilir(POST). Temel mantığı ise, sizin yazdığınız SQL sorgularını safdışı bırakarak çalıştırılmak istenen sorguların çalıştırılmasıdır. Burada bu methodları tabi ki anlatmayacağım, bunun yerine PHP&#8217;de SQL injection&#8217;a karşı nasıl önlemler alabileceğimizi anlatacağım.<span id="more-253"></span></p>
<p>Basit bir SQL sorgumuz olsun, url ile gelen id&#8217;ye sahip makaleyi veritabanından seçelim.</p>
<pre class="brush: php;">$query = mysql_query(&quot;SELECT * FROM makaleler WHERE id=$_GET['id']&quot;, $baglanti);</pre>
<p>Bu şekilde kullandığınızda, çok büyük bir tehlike içerisindesiniz demektir. Bu sorguyu güvenli hale getirmek için sprintf fonksiyonunu da kullanacağız(bunu sadece daha düzenli bir kod yazımı için kullanıyoruz) ve sorgumuzu aşağıdaki hale getireceğiz:</p>
<pre class="brush: php;">$id = $_GET['id'];
$id = get_magic_quotes_gpc() ? stripslashes($id) : $id;
$id= function_exists(&quot;mysql_real_escape_string&quot;) ? mysql_real_escape_string($id) : mysql_escape_string($id);
$query = mysql_query(sprintf(&quot;SELECT * FROM makaleler WHERE id='%s'&quot;, $id), $baglanti);</pre>
<p>Sorgumuzu buhale getirerek kimsenin SQL&#8217;imize dokunmamasını sağlamış oluyoruz.</p>
<p>Bir örnek daha vermek gerekirse;</p>
<pre class="brush: php;">$query = mysql_query(&quot;INSERT INTO makaleler(baslik, icerik, yazan) VALUES ($_POST['baslik'], $_POST['icerik'], $_POST['yazan'])&quot;, $baglanti);</pre>
<p>yerine;</p>
<pre class="brush: php;">function guvenliyap($value) { // kullandığımız kodları fonksiyon haline getirelim
$value = get_magic_quotes_gpc() ? stripslashes($value) : $value;
$value= function_exists(&quot;mysql_real_escape_string&quot;) ? mysql_real_escape_string($value) : mysql_escape_string($value);
return $value;
}

$query = mysql_query(sprintf(&quot;INSERT INTO makaleler(baslik, icerik, yazan) VALUES ('%s', '%s', '%s')&quot;, guvenliyap($_POST['baslik']), guvenliyap($_POST['icerik']), guvenliyap($_POST['yazan'])), $baglanti);</pre>
<p>kullanarak güvenliğimizi sağlamış oluyoruz.</p>
<p>Kısacası, URL veya POST ile gelen bütün verileri bir filtreden geçirerek, bu gelen verinin içinde bulunabilecek &#8216; işaretlerini \&#8217; haline getiriyoruz. Böylece bu gelen verilerdeki zararlı işaretler, sorgumuzun içine karışmıyor ve SQL injection ile sitemize zarar vermek isteyen kişiler avuçlarını yalıyorlar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.t-infection.com/sqlde-kabus-sql-injection/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

