25 Aralık 2008 Perşembe

PHP: Vbulletin tarzı link kısaltma işlemi

Vbulletin (diger forum ve CMS) kullanan sitelerde yazılan mesajlarda kullanılan linkler uzun olduğunda kısaltıldığını farketmişsinizdir. Bölümlenemediği için tasarımı bozan, buna ek olarak görüntü kirliliğine yol açan bu uzun linkleri kısaltmak en mantıklı yol oluyor. Bunun için link_kisalt isimli bir fonksiyon oluşturarak, linklerin karakter sayısı kontrol ettikten sonra linki ekrana yazdıracağız.

Örnek Linkimiz:
http://www.turkwm.com/search?updated-max=2008-12-06T00%3A35%3A00%2B02%3A00&max-results=5

İşlem bittiği andaki görüntüsü:
http://www.turkwm.com/search?updated-max=2008-12-06T00%3A35%3A00%2B02%3A00&max-results=5

<?
function link_kisalt($link,$uzunluk=75) {
if( $uzunluk>45 ) {
// Uzunluk degerini kontrol ediyoruz.
// Eger uzunluk degeri girmezseniz ontanimli degeri 75'tir
// Uzunluk degeri 45'ten fazlaysa bir sonraki adima gecilir.

if( strlen($link)>$uzunluk ) {
// Linkteki karakter sayisi uzunluk degerinden fazla ise
// substr fonksiyonu ile linkten belirli yerler kesiliyor
// Baslangictan uzunluk degerimizin yarisi kadar, sondan ise 10 karakter gosteriliyor.
$link = substr( $link,0,($uzunluk/2) ).'...'.substr($link,-10);
}
}
return $link;
}
// Deneme gosterimi
$url = 'http://www.turkwm.com/search?updated-max=2008-12-06T00%3A35%3A00%2B02%3A00&max-results=5';
echo '<a href="'.$url.'" target="_blank" rel="nofollow">'.link_kisalt($url).'</a>';
// Ornegin 75 karakter degilde, 60 karakterden uzun linkleri kisaltmak isterseniz
// link_kisalt($url) yerine link_kisalt($url,60) yazmaniz gerekir.
?>

Yukarıdaki kodlari ornek.php olarak kaydedip test edebilirsiniz.

24 Aralık 2008 Çarşamba

PHP: Uzmanlardan PHP kullanımına yönelik tavsiyeler

Şüphesiz ki geniş kullanım alanı sebebiyle Web programcıları arasında en popüler dil PHP'dir. PHP sınıfları, PHP makaleleri, Kod örnekleri ve scriptleri bulmak için pek çaba sarfedilmesi gerekmiyor. Fakat tüm bunları kullanırken en önemli nokta olan performans ve stabiliteyi ne kadar göz önünde tutuyoruz? Bu düşünceden yola çıkarsak uzman seviyesindeki kişiler dışında PHP yazarken kendi manifestosunu oluşturan kaç kişi var?

Bu konuda PHP'nin uzmanları ne düşünüyor? Bizlere ne gibi öneriler sunuyorlar? PHP'nin gelişiminde söz sahibi olan (Rasmus Lerdorf) yada büyük projelere imza atmış uzmanlardan önerileri incelediğimizde, daha geniş açıdan bakma fırsatı doğacaktır.

1- Yalnızca ihtiyaç duyduğunuz anlarda PHP kullanın. ( Rasmus Lerdorf )

PHP'nin ortaya çıkması ve geliştirilmesinde kuşkusuz en önemli isim Rasmus Lerdorf'tur. PHP ile yapılabilecek uygulamaların yada geliştirebilecek çözümlerin çerçevesini bilen biri olarak yazdığı yazılarda ve onun ağzından aktarılan yazılarda vurguladığı en önemli konu PHP web geliştirme alanındaki sorunları çözme amacıyla ortaya çıkan bir yaklaşımdır.

Problemlerin çözümü konusunda PHP seçeneklerinizin arasında bulunacak bir araçtır. Şüphesiz ki PHP'nin de limitleri vardır. Bu noktada eğer ki amaç web geliştirme konusunda çözüm üretmek ise, gerektiğinde başka dilleri kullanmaktan çekinmeyin.


2- Ziyaretçilerinize güvenmeyin. ( Dave Child )

Dave Child AddedBytes'ın beyin takımında yer alan kişilerden biridir. Ingilterede yaşamını sürdürüyor. Web Geliştirici olarak bir çok projede yer almıştır. Bir çok programlama dili için ipuçları veren makaleleri bulunmaktadır.

Dave Child'in görüşleri genellikle güvenlikle konularını kapsıyor.

Ziyaretçilerinize güvenmeyin. Çünkü size zarar verebilirler. Bilerek yada bilmeyerek sisteminize zararlı kullanıcı haline gelebilirler. Ziyaretçi tarafından aldığınız verilerin kontrolu konusunda tereddüt yaşarsanız bu sizin için iyi bir başlangıç olmayacaktır. Söz konusu güvenlik olduğunda, paranoyak olmanızda bir zarar yoktur.


PHP ile proje geliştirmeye yeni başlayanlar için güvenlik konulu makaleleri halen sitesinde durmaktadır. 1,2,3,4

3- Önbellek (Cache) Kullanın. ( Ben Balbo )

Ben Balbo Sitepoint yazarlarındandır. Ayrıca Melbourne PHP Grubu ve Open Source Developers Club yönetimindedir. Önbellek uygulaması hakkında makalesi Sitepoint'ten takip edilebilir.

"Caching" konusunda yeni yılda ayrıntılı bir yazı yazacağım. O yüzden bu maddeyi uzun tutmuyorum.

4- Framework kullanın. ( Josh Sharp )

CakePHP,Zend,CodeIgniter, Symfony gibi bir çok framework mevcuttur. Hepsinin kendine göre artıları yada eksileri vardır. Bu noktada seçim web geliştiricisinin olacaktır.

Josh Sharp framework kullanımı hakkında yazdığı makalede frameworklerin hem zamandan tasarruf sağlamakta ve kod yazımındaki avantajlarından bahsediyor.

PHP'nin kullanımındaki rahatlık bazen çöküşünüze de sebep olabilir. Fazla kısıtlama olmadığı için kötü yada hatalı kod yazma ihtimaliniz artabiliyor. Çözüm basit: Framework kullanın.


5- Framework Kullanmayın. ( Rasmus Lerdorf )

Bir üstteki tavsiyeye muhalif düşünce PHP'nin babası Rasmus Lerdorf'dan geliyor. Framework kullanımına karşı olmasının sebebi ise performans kayıplarından kaynaklanıyor. Bu düşüncesini de performans testlerini açıklayarak sağlamlaştırdı.

Konuyla alakalı video: Simple is Hard

Şahsi fikrim, kapsamlı projelerde framework kullanımının daha avantajlı olduğunu düşünsemde, irili ufaklı her projenin framework üzerinde geliştirilmesine karşıyım. (Framework kullanmanız gerekiyorsa, Rasmus Lerdorf'un favorisi CodeIgniter. Sebebini anlamak için performans testlerine bakmak yeterli:) )


Konu sonuna PHP ile alakalı Türkçe içerikteki bir kaç linki vermek istiyorum.
www.php.web.tr // Hidayet Doğan
www.hido.net // Hidayet Doğan
ceviz.net PHP
belgeler.org PHP

Burada yer alması gerektiğini düşündüğünüz PHP konulu siteleri yorum olarak eklerseniz, inceleyip listeyi genişletebilirim.

23 Aralık 2008 Salı

PHP Dersleri: Echo ve String



PHP kodları yazarken en sık kullanacağınız öğe echo'dur. Fonksiyon olarak nitelensede, bence php'nin yapı taşlarından biridir. Echo ekrana veri yazdırmak için kullanılır.

İlk üç derste verilen örneklerde bolca sözü geçti. echo'nun kullanımına dair bir kaç konuyu işleyelim.

Metinlerin (String) ekrana yazdırılmasıMetinleri ekrana yazdırırken çift tırnak yada tek tırnak kullanılır.

<?
// HTML kodlarini da katarak echo kullanimi
echo "Turkwm.com <b>PHP</b> Dersleri";
?>


Eğer string bir değişken için tanımlandıysa, tırnak işaretleri kullanmadan değişken yazdırılır.

<?
// HTML kodlarini da katarak echo kullanimi
$degisken="Turkwm.com <b>PHP</b> Dersleri";
echo $degisken;
?>


Hem metinleri hemde tanımlı değişkenleri aynı anda ekrana gönderebilirsiniz.

<?
$turkwm_ders="PHP";
echo "Turkwm.com $turkwm_ders Dersleri";
// Ekrana gönderilecek yazı: Turkwm.com PHP Dersleri
?>


Yukarıdaki örnekte teknik olarak bir yanlışlık yoktur. Fakat aynı echo işlemini tek tırnak ile yaparsak sonuç farklı olur.

<?
$turkwm_ders="PHP";
echo 'Turkwm.com $turkwm_ders Dersleri';
// Ekrana gönderilecek yazı: Turkwm.com $turkwm_ders Dersleri
?>


Değişken ismini ekrana bastırmak istiyorsanız tek tırnak kullanabilirsiniz. Fakat maksat ekrana veri bastırmaksa, şahsi önerim metinleri ve değişkenleri ayrı birer parça gibi düşünüp, echo satırında birleştirmenizdir. Yukaridaki örneği uygulamalı olarak geliştirirsek,

<?
$turkwm_ders="PHP";
echo "Turkwm.com ".$turkwm_ders." Dersleri";
// Ekrana gönderilecek yazı: Turkwm.com PHP Dersleri

$turkwm_ders='PHP';
echo 'Turkwm.com '.$turkwm_ders.' Dersleri';
// Ekrana gönderilecek yazı: Turkwm.com PHP Dersleri
?>


Kodlarınızı yazarken alışkanlıklarınız çok önemlidir. Bu yüzden örnekleri dikkatle incelemenizi öneriyorum. Yukarıdaki yaptığımız işlem, tıpkı ayrı ayrı yazdırırken uyguladığımız gibi, metinleri tırnak içerisinde, değişkenleri olduğu gibi ekrana yazdırma işlemidir.

<?
$degisken="Degiskenler";
echo <<<TURKWM
Bu da cok satirli echo kullanimina bir ornektir.
$degisken ekrana basilir.
Baslangic ve bitis ayni isimle olmalidir.
TURKWM;
?>


Echo kullanımına dair son bir ayrıntı ise kaçış karakterlerini atlamamaktır. Aksi halde hata verecektir. Kaçış işlemi \ işareti ile gerçekleşir. Örnekle açıklamak gerekirse;


<?
echo "Turkwm.com "PHP" Dersleri";
// Ekrana hata mesajı gönderilir.

echo "Turkwm.com \"PHP\" Dersleri";
// Ekrana basılacak yazı: Turkwm.com "PHP" Dersleri
?>



Değişkenlerin oluşturulması ve yapısına dair bir çok şeyi bir önceki derste değişkenleri anlatırken işledik. Echo'daki örnekler ışığında string içeren değişkenleri oluştururken kullanılabilecek bir kaç özelliğe değinebiliriz.

Tek yada çift tırnakla oluşturabilirsiniz.
$turkwm="PHP Dersleri"; ve $turkwm='PHP Dersleri'; arasında fark yoktur.

Tıpkı echoda olduğu gibi kaçış karakterleri kullanılır.
$tektirnak='Turkwm\'de PHP Dersleri devam ediyor';
$cifttirnak="Turkwm'de \"PHP\" Dersleri devam ediyor";

echo $tektirnak;
// Turkwm'de PHP Dersleri devam ediyor çıktısını verecektir.

Bu konuda için de sorularınız olursa yorum bırakabilirsiniz. Bir sonraki dersimizde PHP'deki operatörleri inceleyeceğiz.

21 Aralık 2008 Pazar

PHP Dersleri: Değişkenler

Her programlama dilinde verileri geçici yada kalıcı olarak saklamak için değişkenler kullanılır. PHP'de de bu durum farklılık arzetmiyor. Değişkenler sayı, metin ve dizileri içerebilir.

Örneğin ilk iki derste kullandığımız "Merhaba Dünya" php için stringtir. String kelimesini php ile alakalı gireceğiniz tüm sitede görebilirsiniz. En kaba tabiriyle string kelimesi gordugunuzde aklınıza kelimeler gelsin. Harflerden oluşanlan değişkenlere string, rakamları temsil edenlere integer olarak hitap edeceğiz.

PHP'de değişkenleri ifade etmek için başlarına $ işareti konur.

<?
$degisken="deger";
?>

Değişken tanımlarken dikkat edilmesi gereken kurallar vardır.
1- Değişken isimleri harf yada _ (alt çizgi) başlar.
2- Değişken isimleri küçük harfler, büyük harfler, rakamlar ve _ işaretinden oluşur. (Türkçe karakterler kullanılmaz. a-z,A-Z,0-9 yada _)
3- İki veya daha fazla kelimeden oluşan değişkenler söz konusu olduğunda, ilk harfleri büyük yazmayı yada araya _ işareti koymayı deneyebilirsiniz. ($arabaRengi yada $araba_rengi)
4- PHP büyük-küçük harf ayrımı (case sensitive) yapan bir dildir. Bu yüzden isimlendirdiğiniz değişkeni aynen kullanmalısınız. Yani $turkwm ile $turkWm değişkenleri birbirinden farklıdır.
5- Değişken değerini yazarken " yada ' işaretlerini kullanabilirsiniz.
6- Değişken tanımlandıktan sonra satırı ; işareti ile kapatmayı ihmal etmeyin.

Değişkenleri örneklemek gerekirse;

<?

/*
Değişkenlerin sonunda // ile başlayan kısımlar yorum
satırlarıdır.
Turkwm.com
*/

$turkwm_yazi = "String-Yazı değişken";
// Yazı Tipi Değişken (String)
$turkwm_dizi = array('php', 'framework', 'bloglar', 'eposta');
// Dizi değişken (array)
$turkwm_sayi = 1608;
// Integer Değişken (Rakam)

?>

Bir sonraki dersimizde değişkenleri ekrana basma (echo) ve string (metin) değişken oluşturma konusunda dikkat edilecek noktaları ele alacağız.

Asp ile Ajax post işlemi

Asp ile Ajax Teknolojisini İle Forma Girilen Bilgileri Sayfa Değişmeden Post Etme İşlemini Bir Örnekle Göstereceğim


<---default.asp nin içeriği-->

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">


<script>

function yeni_nesne(){

var nesneyarat;



if (!nesneyarat && typeof XMLHttpRequest!='undefined') {

try {

nesneyarat= new XMLHttpRequest();

} catch (e) {

nesneyarat=false;

}

}

return nesneyarat;

}


function AoL(id,cikti,hedef) {

var aktifform = document.getElementById(id);

var ekranayaz = document.getElementById(cikti);

var ciktiver = new String("");

var name, value;

for(var I = 0; I < aktifform.elements.length; I++){

name = aktifform.elements[I].name;

value = aktifform.elements[I].value;

ciktiver += escape(name) +'='+ encodeURIComponent(value) +'&';

}

var nesneiste = new yeni_nesne();

nesneiste.open("post", hedef, true);

nesneiste.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-9");

nesneiste.send(ciktiver);

nesneiste.onreadystatechange = function() {

if (nesneiste.readyState == 4 && nesneiste.status == 200) {

ekranayaz.innerHTML = nesneiste.responseText;

}

else { ekranayaz.innerHTML = ''; }

}

return false;

}

</script>


</head>

<body>

<form id="form" onSubmit="return AoL(this.id,'sonuc','ajax.asp')">

<label for="adsoyad">Adınız Soyadınız</label><br />

<input type="text" name="adsoyad" id="adsoyad" />

<input type="submit" value="Gönder" />

</form>

<div id="sonuc"></div><div id="sonuc">

</body>

</html>



<--ajax.asp nin içeriği-->



<%

response.charset = "iso-8859-9"

ad = request.form("adsoyad")

If ad="" then

response.write "Form Kutucuğunu Boş Bıraktınız"

Else

response.write "Forma Girilen Bilgi <strong><u>"&ad&"</u></strong>"

End If

%>

Ajax ile yapılan sayfalardaki en büyük sorun türkçe karakter sorunu bunu aşmanın en kolay yolu ajax'ın işlem yaptığı sayfanın başına response.charset = "iso-8859-9 kodunu eklememiz yeterli olacaktır


19 Aralık 2008 Cuma

Php Dersleri: Yazım Kuralları (Syntax)

PHP Dersleri yazı dizisinin ikinci bölümünde yazım kurallarına değineceğiz. İlk bölümde bahsettiğimiz gibi genel olarak Perl ve C ile benzerlik göstermektedir. PHP kodları <? ve ?> işaretleri arasında yazılır. Bu iki anahtar arasında yazılan her şey sunucu tarafından derlenir. Satır sonları ; işareti ile kapatılır.


Örnek yazım şekli;
<?
// Kodlar bu alanda yer alacaktır.
?>

Örneği elle tutulur hale getirirsek:
<?
echo "Turkwm.com PHP Dersleri";
?>

Yukarıdaki kodları içeren bir php dosyası browser'da çağrıldığında aşağıdaki çıktıyı verecektir.

Turkwm.com PHP Dersleri


Örnekte kullanılan echo fonksiyonu, istenilen her çeşit verinin ekrana basılması için kullanılan php fonksiyonudur.

PHP dosyaları varoluş sebebinden dolayı web sitelerini oluşturan diğer elemanlarıda içerebilir. Bir php dosyasının içinde, php kodları, HTML tagları, javascript kodları bulunabilir. HTML ile birlikte kullanıma bir örnek vermek gerekirse;

<html>
<title>Turkwm.com - PHP Dersleri</title>
<body>
<?
echo "Merhaba Dünya!";
?>
</body>
</html>



Yukarıdaki örneklerde echo fonksiyonu ile ekrana bastırdığımız Merhaba Dünya yazısı php'de string olarak bilinir. Değişken tiplerini bir sonraki dersimizde işleyeceğiz. Fakat yazım kuralları ile alakalı kısmını anlatmak gerekiyor. Bir string (metin) ile bir değişken yada fonksiyon çıktısını ekrana yazdırırken "birleştirmemiz" gerekmektedir.

Şöyle ki;

<?
echo "Tarih: ".date('d-m-Y');
?>


Gördüğünüz gibi, Tarih kelimesini parantezler içinde yazdık. Ve günün tarihini date fonksiyonu ile alıp tırnak işaretleri arasındaki yazı ile birleştirdik.

PHP'de Yorum Satırları

Yorum satırları sunucu tarafından derlenmeyen bölümlerdir. Yorum satırlarını ifade eden özel işaretler bulunmaktadır. Tek satırlık yorumlarda // ve # işaretleri, çok satırlı yorumlar için /* */ işaretleri kullanılır.

<?
// Tek satırlık yorum örneği
# Bir başka örnek
echo "Merhaba Turkwm.com ";
/*
Yukarıda ki yorumlar ve bu alanda yer alan yorumlar
ekrana basılmayacaktır. Okuduğunuz bu satırlar
çok satırlı yorum örneğidir. Bu php dosyası ekrana sadece
Merhaba Turkwm.com yazısını yazdıracaktır.
*/
?>


Bir sonraki dersimizde Değişkenler'i inceleyeceğiz.

Serkan Denizbey

PHP Dersleri: PHP'ye Giriş


Turkwm.com faaliyetlerine dair alınan kararlar çerçevesinde bir php yazı dizisi hazırlama konusu gündeme geldiğinde heyecanlanmıştım. Yürüttüğüm projelerde ağırlıklı olarak LAMP (Linux/Apache/mySQL/PHP) kullansamda, daha önce konu hakkında makale yada bir anlatımım olmamıştı. Umarım faydalı bir yazı dizisi olacaktır. Başta Turkwm.com yönetimindeki arkadaşlar olmak üzere, bu yazı dizisini takip edecek her bireyden, eksik yada yanlış olduğunu düşündükleri konuda beni acilen uyarmalarını diliyorum. Ve Başlıyoruz..

PHP Nedir?

"Personal Home Page" kelimelerinin kısaltması olarak bilinen PHP, Zeev Suraski ve Andi Gutmans'ın katılımıyla piyasaya sürülen 3. versiyonu ile birlikte PHP: Hypertext Preprocessor olarak anılmaktadır. Sunucu taraflı bir dildir. Yani, bir php sayfası istendiğinde, php sayfasını yorumlar ve HTML çıktısını kullanıcının tarayıcısına gönderir. Bu yönüyle Windows sistemlerdeki ASP ile aynı mantıkta çalışır. Örnek şema ağaıda verilmiştir.
Buna ek olarak, açık kaynak ve cross-platform denilen bir çok işletim sisteminde çalıştırılabilmesi php hanesine yazılacak artılar arasındadır.
PHP'nin yazım stili (syntax) Perl ve C gibi ataları ile benzerlik gösterir. Ayrıca php4'te başlayan ve php5'de doyasıya kullanılan Nesne yönelimli programlama (Object Oriented Programming-OOP) desteği ile tercih edilme sebeplerine bir yenisini daha eklemiştir.

PHP birçok veritabanı ile uyumlu çalışabilir. Yaygın olarak mySQL ile kullanılmasına rağmen, MSSQL, Oracle, PostgreSQL, Sybase gibi bir çok veritabanını kullanabilir.

Nerden başlarım?

PHP kullanmak için sisteminize kurmanız gerekmektedir. Linux kullanan arkadaşların konuya vakıf olduklarını düşünüyorum. (Yanılıyorsam lütfen yorumlarda bildirin, Linux için kuruluma dair bir yazı daha yazarım) Windows'da PHP'yi tanımak isteyen arkadaşlar için içinde Apache, Mysql ve PHP'nin bulunduğu paket programları önerebilirim. Bu programlar arasında Wampserver'i indirebilirsiniz.


Wampserver kurulumu için dosyayı çift tıklayıp ilerlemeniz yeterlidir. (Resimli Antalım) Ek bir ayar gerekmez. Kurulumu tamamladıktan sonra c:\wamp\www\ dizini altına php dosyalarınızı koyabilirsiniz. Browser'ınıza http://localhost/ yazdığınızda web serverınızla çalışmanız başlayacaktır.

Ilk Scriptimiz;
1- Bir php dosyası oluşturun (örneğin: turkwm.php)
2- Dosyanın içine aşağıdaki satırları girin.
<?
echo "Merhaba Dunya";
?>
3- http://localhost/turkwm.php adresini ziyaret edin.

Ilk yazı burda sona eriyor. Ikinci yazıda yazım kurallarını ele alacağız.

Serkan Denizbey

17 Aralık 2008 Çarşamba

PHP: Php ile Döviz Bilgilerini Yayınlamak (PHP5)

Döviz kurlarına ilişkin birçok sitede, değişik varyasyonlarda kullanışlı hazır kodlar bulunmaktadır. Bu kodlara ek olarak PHP5'le birlikte gelen simplexml_load_file fonksiyonu ve SimpleXMLElement sınıfı ile döviz kurlarını alan bir kod örneğini çalıştıracağız.

Anlaşılacağı üzere simplexml_load_file fonksiyonu kullanarak bilgiler alınacağı için, verilerin bir XML dosyasında olması gerekiyor. Bu aşama da iki seçenek belirmektedir. Merkez Bankası'ndan verileri alıp bir XML dosyasına yazdırabilirsiniz, yahut xml formatında döviz bilgileri sunan bir sitedeki dosyası kullanabilirsiniz. Altınkaynak.com sitesi piyasa bilgilerini XML olarak sunmaktadır.Dolayısı ile ikinci yolu baz alarak konuya devam ediyorum.

İşlem iki kısımdan oluşuyor.

1- simplexml_load_file kullanarak XML'deki içeriği nesne haline getirilmesi.
2- Seçtiğimiz kurları ekrana basılması

Kod:

<?php
// Turkwm.com - Doviz kurlari
// Aralık 2008
$xml = @simplexml_load_file('http://xml.altinkaynak.com/doviz.xml');

$cikti='';
$cikti.='Dolar<br />';
$cikti.='Alis='.$xml->DOVIZ[1]->ALIS.'<br />';
$cikti.='Satis='.$xml->DOVIZ[1]->SATIS.'<br />';
$cikti.='Euro<br />';
$cikti.='Alis='.$xml->DOVIZ[2]->ALIS.'<br />';
$cikti.='Satis='.$xml->DOVIZ[2]->SATIS.'<br />';
$cikti.='Sterlin<br />';
$cikti.='Alis='.$xml->DOVIZ[4]->ALIS.'<br />';
$cikti.='Satis='.$xml->DOVIZ[4]->SATIS.'<br />';
$cikti.='Japon Yeni<br />';
$cikti.='Alis='.$xml->DOVIZ[8]->ALIS.'<br />';
$cikti.='Satis='.$xml->DOVIZ[8]->SATIS.'<br />';

echo $cikti;
?>

Bu uygulamanın çalışabilmesi için sunucunuzda php5 yuklu olmalidir. Sunucunuzdaki php versiyonunu öğrenmek için bir php dosyası oluşturup aşağıdaki kodları ekleyerek browser'da görüntülemeniz yeterlidir.

<?php
echo 'Sunucunuzdaki PHP Versiyonu: ' . phpversion();
?>

Kendi tasarımınıza adapte edebilirsiniz. Cron yada cache(önbellek) kullanarak belirli aralıklarla güncelleyebilirsiniz. Amaç örneği sunmak olduğu için kodun bu hali yetecektir. Takıldığınız konuları yorum kısmında aktarmaktan çekinmeyin.

Demo: Döviz Kurları

Download: Php4 ve Php5 için ayrı ayrı düzenlenmiş kodların bulunduğu arşiv dosyasıdır.

8 Aralık 2008 Pazartesi

Bayramınız Kutlu Olsun

Kurban bayramınız mübarek olsun. Maneviyatı ve birlikteliği yaşamaya vesile olan bu güzel günlerde sevdiklerimizi ihmal etmeyelim. Sevdiklerinizle, huzurlu ve mutlu bir bayram geçirmeniz dileğiyle, bayramınız kutlu olsun.

Bayram notları: Yılın son bayramına kavuştuk. Turkwm.com 'da minik bir ara veriyoruz. Bayramın ikinci günü Bursa'da (Kent Meydanı,Korupark yada Mudanya) buluşup yeni yıla kadar devreye alınması gereken fikirleri laptop eşliğinde masaya yatıracağız. Bayramda yolunuz düşerse katılım serbest olacaktır.

7 Aralık 2008 Pazar

Blogger: Sayfa başlığına SEO düzenlemesi

Blogger/Blogspot üzerindeki bloglar içinde SEO (Arama Motoru Optimizasyonu) uygulamaları yapılabilmektedir. Başlık düzenlemesi'de bunlara örnektir.


Aşağıdaki değişiklikleri yaptığınızda neler olacak ?



Sitenizin sadece ana sayfasının başlığında blogunuzun ismi görünecek. Diğer sayfalarda ise sayfanın ismi görüntülenecek. Sayfanın ismi, yazının başlığı ile aynıdır.

Nasıl yaparım ?
1- Blogger'a giriş yapın. Sırasıyla Yerleşim/HTML'yi Düzenle bölümüne geçin.

2- Şablonunuzun başlangıç kısımlarında olan <title><data:blog.pageTitle/></title> kodlarını bulun.

3- Bulduğunuz kodları silerek aşağıdaki kodları ekleyin.

<b:if cond='data:blog.pageType == &quot;index&quot;'>
<title><data:blog.title/></title>
<b:else/>
<title><data:blog.pageName/></title>
</b:if>

4- Şablonu kaydedin.

Verilen bu yöntemde, yazılarınızın olduğu sayfaya girildiğinde, web tarayıcısında yazının başlığı, sayfa başlığı olarak görüntülenecektir. Siz bu görünüme, blogunuzun ismini de eklemek isterseniz, 3. madde de verdiğimiz kod yerine aşağıdaki kodları ekleyin.

<b:if cond='data:blog.pageType == &quot;index&quot;'>
<title><data:blog.title/></title>
<b:else/>
<title><data:blog.pageName/>-<data:blog.title/></title>
</b:if>

Uygulanması ve kullanımı en basit blogger eklentisidir. Problem yaşarsanız yorum kısmına bırakabilirsiniz.

6 Aralık 2008 Cumartesi

Adhood: Turkticaret.net'e dair tepkilerin yeni adresi



Internet sitelerinin sahiplerinin büyük bir çoğunluğu için önem arzeden konulardan biri web sitesinden gelir etmektir. Bu konuda yurtdışı sponsorlarının ödeme/ödememe problemleri ile uğraşmaktan bıkan, gelen çeklerin paraya dönüştürülmesinde sorun yaşayan web sitesi sahipleri için Türk reklam pazarının firmaları ile çalışmayı seçtiler.

Google'ın Adsense programı dışında düzenli ödeme yapan yada Türk hitlerini değerlendiren popüler firmaların olmaması sebebiyle Linkz, Adnet, Mynet ADklik, Reklamstore ve Adtech gibi internetteki reklam pazarının önemli oyuncuları büyük aşama kaydetti. Bazı münferit sorunlar dışında, ve kontör konusundaki etik anlaşmazlıkları gözardı edersen bu firmalar site sahiplerine maddi getiri anlamında büyük fayda sağladılar. Bu pazara dahil olacağı birkaç ay önce açıklanan Turkticaret.net için beklemedeydik. Hatta yazar arkadaşlar Adhood reklam servisinin devreye girdiklerini bu site içinde duyurdular.

Gözlemde bulunmadan yazmak istemedim. Bilindiği üzere hosting/domain konusunda fazlasıyla şikayet aldığı için, bu servisin nasıl işleyeceği konusunda tereddütlerim vardı. Üzülerek belirtmek isterim ki, Turkticaret.net bu konuda da profesyonelce davranamadı.

Akşam saatlerinde Adhood ile alakalı bilgilere ulaşmak için Google'da bir araştırma yaptım. Aralarında devlet sitelerininde bulunduğu bir çok hosting müşterisinin web sitesine konulan toolbar reklam yüzünden bir çok forum başlığı açılmış. Açıldığı gün 70.000'in üzerinde reklam yayıncısını gördüğümde böyle bir durumu öngörmemiştim.

Yapıcı bir eleştiri getirmek gerekirse, TurkTicaret.net'in geri adım atması, ve talep eden müşterilerinin bu reklam servisinden faydalanması için gerekli çalışmaları başlatması en doğru karar olacaktır. Hukuki konulara vakıf olmadığım için işin bu yönüne hiç girmiyorum. Fakat kaymakamlık sitelerine dahi eklenen bu reklamın sözleşmede geçmemesinden ötürü kanuni olarak bir yaptırıma sebep olur mu? Buda hukuki konularının profesyonellerinin görüşleri ile netleşecektir.

Gerek müşteri sayısı, gerekse sunulan hizmetlerin çerçevesi düşünüldüğünde, alanında büyük bir güç olan Turkticaret.net'in bu mağduriyeti ortadan kaldırmasını umuyorum.

Forumlarda ve kişisel bloglardaki yorumlarda not aldığım bazı tavsiyeleri sıralamak istiyorum. Umuyorum ki Turkticaret.net'den bir yetkili okur.

1- Bünyesinde birçok yetenekli yazılımcı ve tasarımcı bulunduran bir firmanın böyle bir servisin web sitesini wordpress üzerinden sunması tepki çekmiş. /*Çok önemli bir ayrıntı olmasa da, prestij ve vizyon ayrı bir şeydir.*/

2- Sitenin web tarayıcılarda sorun çıkarması. Firefox ile üye olanlar bu yönde şikayet belirtmişler.

3- Sözleşmede yayıncının haylice aleyhine olan bazı maddeler. (Örneğin, "Yayıncının", "Adhood" tarafından belirlenen sürelerde ödemenin yapılmaması halinde işbu sözleşmeyi feshetmeyeceğini ve/veya " Adhood’a ve Adhood Programının yapımcısı ve yöneticisi" aleyhine sözleşmeye ve ödemeye ilişkin edimlerin yerine getirilmediğini iddia etmeyeceğini kabul, beyan ve taahhüt eder. Bu durumda, Yayıncı ancak beş günden az olmamak üzere süre vererek akdi feshedebilir...)

4- Önceleri ücretsiz hostlardaki reklam frame ve bannerlarını kaldırmak için uğraşan insanlar, şimdi ücretini ödediği serviste reklam kaldırma yollarını arıyorlar.

Türk girişimcilerin sanal dünyaya yatırımlarını desteklemek Türk web dünyasındaki bir çok insanın ortak düşüncesidir. Adhood'u bir çok kişi ön yargısız bekledi. Bu yazıyı yazmaktaki amacı da Adhood'u baltalamak değil, izlenen yoldan sapmadığı takdirde, kendisini baltalamaması için eleştiri bazlı yapıcı öneriler sunmaktır. Umarım dikkate alan yetkili birileri çıkar.

5 Aralık 2008 Cuma

Google: Friend Connect beta versiyonu ile devrede.

Google'ın sosyal ağlara yönelik prjesinin görücüye çıktığını haber vermekten mutluyum.
Daha interaktif bir site ve kullanıcının aktivitesini artırması sebebiyle hiti artan bir web siteniz olmasının önü açılacak. Google Friend Connect şu an beta versiyon ile hizmet veriyor. Başvuran webmasterlara test imkanı sunuluyor.

Friend Connect ile neler yapılabilir?
Başvurunuz onaylandıktan sonra Friend Connect sayfasındaki yönergeleri izleyerek, snippet adı verilen küçük kod parçalarını kullanarak sitenizdeki sosyal aktiviteleri hızlandırabilirsiniz.
Bunları yaparken programlama bilginiz olmasına gerek kalmıyor. Kullanıcılar sitenize katılabilir, Profile olusturabilir yada linkleyebilir ve diğer üyelerle iletişim halinde kalabilirler.
Tüm bunlar gelişirken, üyelerinizin bu işlem için yeni bir kullanıcı adı/şifre oluşturması gerekmeyecektir.
Friend Connect sayesinde varolan Google,AOL,Yahoo veya OpenID hesapları ile giriş yapabilirler.

Konuya ilişkin hazırlanan videoyu izlemenizi öneririm:


http://www.youtube.com/watch?v=N94s7ix0JPo


Şu sıralar Friend Connect'i test amaçlı olarak bir sitede kullanmaya başladım.
Yorum ve sonuç raporu tarzında birşeyler yazmak için yeterli tecrübe edindiğimde bunada yer vereceğim.

Friend Connect'in tadını çıkarmanız dileğiyle,

3 Aralık 2008 Çarşamba

googlehostedservice

Turkwm.com'a yeni yazar ve editör kadrosu oluşturma çalışmaları ekseninde alt yapı çalışmaları sürüyor. İş bu sayfa, kadromuza Gmail destekli mail @turkwm.com uzantılı mail adresi sunabilmek için hazırlanan doğrulama sayfasıdır.


Yıl sonuna doğru yazılarıyla web geliştiricileri ve web tasarımcıları başta olmak üzere Web teknolojileri ve IT sektörlerindeki arkadaşlara bilgilerini aktaracak takım arkadaşlarını Turkwm.com'da bekliyor olacağız.

2 Aralık 2008 Salı

Blogger: Navbar kaldırmak ve kurallar

Blogspot/Blogger'da yazan blogcular için en göze batan şey google'ın sayfanın üstüne koydugu Navbar olsa gerek. Konuyla alakalı birçok platformda görüşler yazıldı. Blogger yardım sayfalarında net bilgi olmadığı için, ve kolaylıkla kaldırılabildiği için sorun çıkmayacağını düşünenler ağırlıkta oldu.

Turkwm.com 'u blogger'da host etme kararı almadan önce araştırdığımız ilk konu da Navigasyon barının kaldırılması konusu olmuştu. Blogger'in yardım sayfalarında Navbarın kaldırılması ile alakalı tek bilgi, blogunu FTP yoluyla paylaşanları kapsıyordu. Geçtiğimiz ay içinde blogger'ın googledaki grubunda ilk kez resmi ağızdan konuyla alakalı cevap geldi.

While we don't recommend or support the removal of the Blogger navbar,
there is nothing in our Terms of Service that explicitly mandate its
use.

Bu cevap her ne kadar serbest olduğunu ilan etmese de, yasak olduğuna dair bir maddenin olmadığını gösteriyor. Daha sonrasında da son kararı soruyu soran kişiye bıraktığını belirtiyor.

Konuyla ilgili yeni gelişmeler olduğunda yer vereceğim. Navbarsız bloglar ;)

SEO: Yönlendirme nasıl yapılmalıdır? (301 Redirect)


Domainler taşındığında yada sayfaların isimleri değiştiğinde varolan adreslemeyi, yeni sisteme yönlendirme ihtiyacı doğar. Bu bağlamda en sık başvurulan html etiketi refresh olmaktadır.

<meta equiv="refresh" content="0; url=http://www.turkwm.com/yeni-icerik.html">

Content parametresindeki sıfır sayısı, refresh işlemi için beklenecek sürenin saniye cinsinden karşılığıdır. SEO'nun ülkemizde ilk tartışılmaya başladığı yıllarda net bilgiler yerine kulaktan dolma bilgilerle davranıldığı için, refresh konusunda hala tam bir uzlaşma sağlanamamıştır. Kimileri refresh süresi 30 saniye oluyorsa sorun olmayacağını düşünüyor, kimileriyse 5 saniyenin yeterli olduğunu düşünüyor.

Google'ın konuyla alakalı destek sayfalarında bu konuda net bilgi verilmemiş. Aksine daha farklı bir görüş sunmuş.

However, it is not supported by all browsers and can be confusing to the user. The W3C recommends that this tag not be used. We recommend using a server-side 301 redirect instead.


Son mesajı tercüme edersek, "sunucu taraflı 301 yönlendirmesini tavsiye ediyoruz." Evet, google meta etikenin bir parametresi olan refresh yerine sunucu taraflı yönlendirmeyi öneriyor.

Sunucu tarafındaki yönlendirme işlemi nasıl yapılır ?

php,asp,cgi,ruby ..vs sunucu tarafında derlenen programlama dillerinde 301 yönlendirmesini yapabiliriz. Buna ek olarak windows sunucularda IIS yönlendirmesinden, linux sunucularda da .htaccess 'den faydalanılabilir.

Yönlendirme Örnekleri;
PHP Yönlendirme
<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.turkwm.com/yeni-adres/" );
?>

ASP Yönlendirme
<%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.turkwm.com/yeni-adres/"
%>

ASP .NET Yönlendirme
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.turkwm.com/yeni-adres/");
}
</script>


JSP (Java) Yönlendirme
<%
response.setStatus(301);
response.setHeader( "Location", "http://www.turkwm.com/yeni-adres/" );
response.setHeader( "Connection", "close" );
%>

CGI PERL Yönlendirme
$q = new CGI;
print $q->redirect("http://www.turkwm.com/yeni-adres/");

Ruby on Rails Yönlendirme
def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.turkwm.com/yeni-adres/"
end

ColdFusion Yönlendirme
<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://www.turkwm.com/yeni-adres/">

htaccess ile yönlendirme

Apache redirect ile:

Redirect 301 / http://www.turkwm.com/yeni-adres/

Mod-rewrite modülü ile:

RewriteEngine on
RewriteRule ^(.*)$ http://www.turkwm.com/yeni-adres/$1 [R=301,L]

1 Aralık 2008 Pazartesi

Google: Youtube klonu sitelere süpriz (Kullanım Şartları Değişimi)


Aylar önce Google'ı yakından takip eden bloglarda dillendirilen Youtube videolarının sitelerdeki kullanımına yönelik sınırlamaya dair en somut gelişme dün yaşandı. Aralık 2008 itibarıyla Youtube'un kullanım şartlarını düzenleyen "terms of use" sayfası düzenlendi.

Peki bunun anlamı nedir?
Youtube videolarına ait embed kodları ile yapılan site/blog örnekleri artık her yerde gözümüze çarpıyor. Manuel olarak yada xml/API desteğini kullanan bot'larla çekilen videoları veritabanına ekleyip, izleme sayfasınada Adsense kodlarını yerleştirip işin ticarete döküldüğünü gören Youtube/Google yönetimi bu salgının durulması için böyle bir önlem almış olabilir. Yasal açıdan yada Google aramaları üzerinde nasıl bir yaptırıma gidileceği konusunda net bilgiler yok. Şu an için açık olan tek şey, bu kuralları ihlal eden sitelerde videolar görüntülenmeyecek.

İlgili yazılardan tercüme olarak , Birtakım youtube videolarını içeren ve kasıtlı değişiklikler yaparak gelir elde eden bir website görüntüsü vermek istemedikleri için kulanım koşullarını buna göre uygulayacaklarını, youtube koşullarına göre, websiteleri ''reklam ve gelir amaçlı'' kullanamayabileceklerini bildirmişler. Ek olarak, kişiler sevdikleri videoları bloglarında paylaşarak ve altına yorumların eklenmesini isteyerek genel amaçlarının olması koşuluyla
yararlanabilirler şeklinde ek bilgi sunulmuş.

Güncellenen Youtube kullanım şartları ve yardım sayfalarındaki bilgiler ışığında son durum yukarıdaki gibidir. Kanuni yaptırımlara dair bir cümleye rastlamadım. Ama gerek arama motorlarında bir yığın kalabalık ve kirliliğe, buna paralel olarak Adsense oranlarının düşmesine sebep oluyordu. Kanuni yaptırımlara gerek kalmadan dur demenin en kolay yolu bu tarz sitelerin aramalardan yasaklanmasıdır. Belki google duyar sesimizi ;)

Kolbastı, Karadenizin dünyaya açılımı


Faroz kesmesi, Hoptek derken değişimin sol halkası kolbastı ile artık karadeniz dışına taşan bu şahane oyunun tutkunları giderek artıyor. Youtube'a bir göz attığımızda Belçika, Avusturya, Hollanda, Almanya başta olmak üzere birçok avrupa şehrinin caddelerinde bu oyun oynanıyor. Yabancıların dahi öğrenme çabası içinde olduklarını gözlemliyoruz.

Mesainin bittiği bu saatlerde güne bir nokta koyma amacıyla Youtube'da kolbastı araması yaptığımda genç ve sempatik bir arkadaşımızın bireysel etkinliğiyle mest oldum. Cengiz kardeşimiz Hollanda'da ikamet etmekte. Sözün bittiği bu anda, mikrofonu ve kamerayı ona devrediyorum ;)

İyi seyirler.

Cengiz61 Kolbastı | Youtube'a TR'den nasıl girerim?

Domain pazarının liderleri

Moniker'dan tanıdığım ve Paraguay'dan çıkmış olması sebebiyle ayrı bir sempati beslediğim domainer bir arkadaşla konuşurken laf dönüp dolaşıp domain satan şirketlerin pazar paylarına geldi. Godaddy'nin ilk sırada olduğu listede pek süpriz yok. Directi olarak baslayan, Resellerclub adıyla devam eden Public Domain Registry ilk 10'da. Namecheap benim domainlerle uğraştığım dönemlerde popülerdi. Resellerclub'in listeye girmesiyle ilk 10'dan çıkmış olacakki listede göremedik.

Tekil domain kayıt işlemleri için şirketlerin pek farkları yok. Fakat toplu domain alacaksanız, domainer statüsünde iş yapacaksanız kişisel önerim Moniker yada Enom olacaktır.

İşte Listemiz;

1. Godaddy ( Amerika )
Pazar Payı : 26.015%

2.Enom ( Amerika )
Pazar Payı :8.465%

3.Network Solutions ( Amerika )
Pazar Payı : 6.532%

4.Tucows ( Kanada )
Pazar Payı : 6.386%

5.Melbourne It ( Avustralya )
Pazar Payı: 4.845%

6.Schlund+Partner ( Almanya )
Pazar Payı: 4.280%

7.Wild West Domains ( Amerika )
Pazar Payı: 3.018%

8.Register.Com ( Amerika )
Pazar Payı: 2.616%

9.Moniker ( Amerika )
Pazar Payı: 2.575%

10.Public Domain Registry
Pazar Payı: 1.868%

Wordpress: Yorumları tersten sıralamak

Wordpress'te yorumlar öntanımlı olarak eklenme sırasına göre sayfada görüntülenirler. Bu sıralamanın tersi bir işleme ihtiyaç duyulduğunda neler yapabiliriz?

Bunun için wp-content/themes dizinine geçerek kullandığınız temaya ait klasöre giriniz. Temaya ait dosyalar arasından comments.php 'yi açarak aşağıdaki satırı bulun.

<?php if ($comments) : ?>

hemen altına aşağıdaki satırı ekleyin

<?php $comments = array_reverse($comments); ?>

Blog sayfanızda artık en son eklenen yorumlar en üstte görüntülenecektir. Bunu spesifik sayfalar üzerinde çalıştırmak istersek, yazının id'sine ihtiyaç duyacağız. Kalıcı bağlantı ayarlarından ötürü adres satırında yazının id'sini göremeyen arkadaşlar yönetim panelinden elde edebilirler.

Örneğin sadece 78 nolu yazıdaki yorumların tersten sıralanmasını istiyorsanız, üstte verilen satır yerine aşağıdaki satırı yapıştırmalısınız.

< ?php if (is_page('78')) {$comments = array_reverse($comments,true); } ?>