arşiv

‘PHP ve MYSQL’ kategorisi için arşiv

PHP Manual artık Türkçe

Pazar, 18 Oca 2009

PHP, “PHP: Hypertext Preprocessor” sözcüklerinin baş harfleriyle temsil edilen HTML içine gömülebilir açık kaynak kodlu, genel amaçlı, özellikle site geliştirmeye uygun bir betik dilidir. Dil yapısının önemli bir kısmını C, Java ve Perl gibi dillerden almış, kendisine has özelliklerle bu yapıyı pekiştirmiş, kolay öğrenilen bir dildir. Dilin ana amacı, site geliştiricilerinin devingen sayfalar oluşturmasını çabuklaştırmaksa da PHP ile çok daha fazlasını yapabilirsiniz.

Bu kılavuz temel olarak bir işlev başvuru kılavuzudur. Fakat bunun yanında bir dil kılavuzu, PHP’nin önemli özelliklerinin bazılarının açıklamaları ile tamamlayıcı bazı bilgiler de içermektedir.

Bu kılavuzu çeşitli biçemlerde » http://www.php.net/download-docs.php adresinden temin edebilirsiniz. Bu kılavuzun nasıl geliştirildiğiyle ilgili daha ayrıntılı bilgi edinmek için eklerdeki ‘Kılavuz Hakkında’ bölümüne bakabilirsiniz. PHP’nin tarihçesi ile ilgileniyorsanız onu da ek bölümler arasında bulabilirsiniz.

, ,

php dosya işlemleri

Cuma, 31 Eki 2008

PHP’de yukarıda ele aldığımız include ve require komutları ve biraz sonra değineceğimiz dosya okutma ve yazdırma işlemleri dolayısıyla bir dosyanın varlığı veya yokluğu, ya da bir dosyaya ait sandığımız ismin bid klasöre ait olması, programımızın sağlıklı işleyebilmesi açısından büyük önem taşır. PHP bu amaçla bize bir kaç kullanıma hazır fonksiyon sağlıyor. Burada kısaca bu fonksiyonlara ve nasıl kullanıldıklarına değinelim:

Dosya var mı? file_exits()

Bir dosyanın var olup olmadığını denetleyen bu fonksiyon, dosya varsa true/doğru, yoksa false/yanlış sonucunu verir. Örnek:

[php]
if ( file_exits ( “bir_dosya.txt” ) )
print (”Dosya var!”);
[/php]

Dosya yoksa, program “Dosya var!” yazmadan yoluna devam edecektir.

Dosya mı, dizin mi? is_file() ve is_dir()

Kimi zaman klasörler de tıpkı dosyalar gibi adlandırılabilir. Bir dizinde gördüğümüz ismin gerçekten bir dosyaya ait olup olmadığını bu fonksiyonla sınarız. Sınama doğru, yani isim bir dosyaya ait ise fonksiyon true/doğru, değilse false/yanlış sonuç verir. Örnek:

[php]
if ( is_file ( “bir_dosya.txt” ) )
print (”Bu bir dosyadır!”);
[/php]

İsim bir dosyaya ait değilse program “Bu bir dosyadır!” yazmadan yoluna devam edecektir. Sınamayı ismin bir klasöre ait ait olup olmadığına bakrarak da yaparız. Bu durumda is_dir() fonksiyonunu kullanırız. isim bir dizine aitse fonksiyon true/doğru, değilse false/yanlış sonuç verir. Örnek:

[php]
if ( is_dir ( “/bir_isim” ) )
print (”Bu bir dizindir!”);
[/php]

İsim bir dizine ait değilse program “Bu bir dizindir!” yazmadan yoluna devam edecektir.

Dosya okunabilir mi? is_readable()

Programda kullanmaya karar vermeden önce bir dosyanın erişilebilir ve PHP tarafından okunabilir olup olmadığını sınayan bu fonksiyon, dosya okunabilir ise true/doğru, değilse false/yanlış sonuç verir. Örnek:
[php]
if ( is_readable ( “bir_dosya.txt” ) )
print (”Bu dosya okunabilir!”);
[/php]

Dosya okunabilir değilse program “Bu dosya okunabilir!” yazmadan yoluna devam edecektir. (Unix ortamında varlığını görebildiğimiz her dosyanın okuma izni bulunmayabilir.)

Dosya yazılabilir mi? is_writable()

Programda kullanmaya karar vermeden önce bir dosyanın yazılabilir olup olmadığını sınayan bu fonksiyon, dosya yazılabilir ise true/doğru, değilse false/yanlış sonuç verir. Örnek:
devamını oku…

, , , , , , , , , ,

Hangi kelime aranarak geldi?

Çarşamba, 29 Eki 2008

Bildiğiniz gibi arama motorları kullanıcılar için artık internetin olmazsa olmazlarından, tabi biz site sahipleri içinde çok önemli.
Peki arama motorlarından (google, msn, yahoo,…) gelen ziyaretçi hangi aramayı yaparak geldi? Bunu bulmak için ufak bi çalışmam var:
[php]
$referer=$_SERVER['HTTP_REFERER'];

if(eregi(”google”,$referer)){
$s=explode(”?”,$referer);
parse_str($s[1]);
$kelime= $q;
}
if(eregi(”yahoo”,$referer)){
$s=explode(”?”,$referer);
parse_str($s[1]);
$kelime= $p;
}
if(eregi(”msn”,$referer)){
$s=explode(”?”,$referer);
parse_str($s[1]);
$kelime= $q;
}
// $kelime arama yaparak geldiği kelime
[/php]
Buna ilaveten hangi sayfaya geldiğini bulmak için
[php]$sayfa=$_SERVER['REQUEST_URI'] // geldiği sayfa[/php]

, , , , ,

PHP -> hayat kurtarabilecek fonksiyonlar

Çarşamba, 29 Eki 2008

Tehlikeli bir değişkenden gelen veriyi işlemlere tabi tutmadan önce ilk olarak önce onaylanamanız ve filtrelemeniz gerekmektedir.Zira bunları yapmazsak basit yöntemlerle hacklenmek elde bile değil.
mysql_real_escape_string
Bu fonksiyon gelen veride mysql’e iş yaptırma olasılığı olan simgelerin önüne veri olarak gösterecek olan \ koyuyor.\x00, \n, \r, \, ‘, “ ve \x1a. Bu şekilde kişinin yazdığı yazı doğrudan yazı olarak veritabanına eklenmiş oluyor. mysql_real_escape_string ile sql injection u ortadan kaldırıyoruz
[php]$query=mysql_real_escape_string($_GET[kelime]);
mysql_query(”insert into arama (kelime) values (’$query’)”);[/php]

htmlentities
Girdilerde olduğu gibi dışarıya sunulan tüm verilerin de (güvenli olarak filtreleyip veritabanına işlediğiniz verilerin dahi) filtrelenmesi gerekmektedir.

Filtrelenmesi gereken en önemli şey probleme yol açabilecek olan HTML tag’leridir. Bunu yapmanın en kolay yolu bütün HTML’i escape işlemine sokan htmlentities() fonksiyon’udur:
[php] echo htmlentities($_GET['kelime']);
?> [/php]
htmlentities ile muhtemel muhtemel XSS (cross site scripting) saldırılarını kaldırırsınız

Eğer tüm html taglarını silmek istemiyorsanız strip_tags() kullanarak bazı html taglarına izin verebilirsiniz.

, , , , ,

SimpleXML ile XML okuma

Cuma, 24 Eki 2008

SimpleXML ile XML okuma

Bir XML belgesini dosyadan okuyup yazdirma.

Bunun icin su fonksiyonlar kullanilir:

$xml = simplexml_load_file($dosyaAdi): verilen dosyadaki xml belgesini okur ve $xml belgesine icerigi getirir. Donus tipi bir nesnedir ve SimpleXMLElement sinifinin bir nesnesidir.

SimpleXMLElement->getName(): XML elemaninin adini dondurur.

SimpleXMLElement->children(): cocuk elemanlari bir SimpleXMLElement dizisi halinde dondurur. Dizinin indisi elemanlarin im isimleri, degerleri de elemanlarin degeridir.

Not.xml belgesi soyle olsun:
[php]
Ali
Zeki
Bulusma
Hafta sonu mutlaka goruselim
[/php]
Bu XML belgesini okuyup yazdiracak Php dosyasi soyle olabilir:
[php]

< ?php
$xml = simplexml_load_file("../xml/Not.xml") or
die("XML belgesi yuklenemiyor. “);
echo $xml->getName() . “
\n”;
$cocuklar = $xml->children();
foreach($cocuklar as $cocuk){
echo $cocuk->getName() . “: ” . $cocuk . “
\n”;
}
?>

[/php]
Bu PHP programinin ciktisi soyle olur:
[php]

not
alici: Ali
gon: Zeki
konu: Bulusma
mesaj: Hafta sonu mutlaka goruselim

[/php]

PHP ile Encoding Ayarlamasi

Simdi yukardaki program ile icinde turkce karakterler olan bir XML belgesini okuyalim.

XML belgemiz soyle olsun:
devamını oku…

, , , , ,

Tinyurl adresi alma

Pazartesi, 13 Eki 2008

Bilindiği gibi tinyurl.com uzun web adreslerini kısa versiyonlara çevirebilen bir site.Alttaki php fonksiyonumuzla bu işlemi otomatiğe bağlıyoruz
[php]
function tinyurl($url){
// Url kısaltma
$html = file_get_contents(”http://tinyurl.com/create.php?url=”.$url);
preg_match(’/http:\/\/preview\.tinyurl\.com\/(.*)<\/b>/’, $html, $gelen);
return “http://tinyurl.com/”.$gelen[1];
}
//kullanımı
echo tinyurl(”http://www.sistembilgisi.com”);
//Sonuç : http://tinyurl.com/3s97d9
[/php]

.ini dosyası ve parse_ini_file

Pazar, 20 Tem 2008

Bilindiği gibi ini dosyaları hazırladığımız programların veya script ayarlarının tutulduğu dosyalardır.Birçok php uygulamasının içinde .ini bilgi dosyaları mevcuttur.
Nasıl kullanıldığına dair bir iki ipucu vermek gerekli diye düşündüm
ayar.ini dosyamız:
[php]
[YABANCI]
bmw=1
toyota=23
volkswagen=345
[YERLI]
tofas=12
[/php]
Şimdi bu ayar.ini dosyamızı php de okutup içindeki verileri alalım
[php]
$dosya=parse_ini_file("ayar.ini",true);
echo $dosya['YABANCI']['toyota']; // çıktı 23 olacaktır
echo $dosya['YERLI']['tofas']; // çıktı 12 olacaktır
?>
[/php]
Ne kadarda pratik ve basitmiş

, ,

htmlspecialchars kullanımı

Cuma, 06 Haz 2008

htmlspecialchars – Html deki özel karakterleri html için normal karakterlere dönüştürür.
Kullanımı :
string htmlspecialchars(string metin [, int alıntı_biçimi [, string karakter_seti] ]

Dönüşüm aşağıdaki işlemleri gerçekleşitrir.
* ‘&’ ve işareti ‘&’ a dönüşür.
* ‘ ” ‘ çift tırnak işareti ‘"’ a dönüşür eğer ENT_NOQUOTES parametresi ayarlanmadıysa.
* ‘ ‘ ‘ tek tırnak işareti ‘ ' ‘ a dönüşür eğer ENT_QUOTES parametresi ayarlandıysa.
* ‘ < ' küçüktür ifadesi ' $lt; ' ye dönüşür.
* ' > ‘ büyüktür ifadesi ‘ $gt; ‘ ye dönüşür.

Parametreler :
ENT-QUOTES — bu paremetre ayarlandığında çift tırnak ve tek tırnaklar dönüştürülür.
ENT-NOQUOTES –  bu paremetre ayarlandığında çift tırnak ve tek tırnaklar dönüştürülmesi ihmal edilir.
ENT-COMPAT — bu ön tanımlı parametre ise sadece çift tırnak dönüşümünü yapar tek tırnaklar dönüştürülmez
[php]
$deneme = htmlspecialchars(”Test“, ENT_QUOTES);
echo $deneme;
// <a href='test'>Test</a>
[/php]

htmlspecialchars_decode – Özel html imlerini karaktere dönüştürür.
Kullanımı :
string htmlspecialchars_decode (string metin [int alıntı_biçimi])
bu fonksiyon htmlspecialchars fonksiyonun dönüştürdüğü değerleri tekrar eski haline getirir.
Parametreler :
htmlspecialchars fonksiyonunun paremetreleriyle tamamen aynıdır.
[php]
$str = ‘

this -> "

‘;
echo htmlspecialchars_decode($str);
//Çift tırnak dönüştürülmez burda
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
[/php]

,