‘php’ olarak etiketlenmiş yazılar

PHP include ve function olayı

Pazar, 13 Nisan 2008

PHP ile uzun zamandır uğraşıyorum fakat daha önce farketmediğim basit bir hatamı arkadaşım düzeltti. (Lise arkadaşlarım olmasa ne yapardım bilmiyorum. Seni seviyorum Maçka, Teşekkürler :) )

Kısaca durum şu: include ettiğiniz veya require ile çağırdığınız bir “fonsiyon.php” dosyası içerisinde bulunan fonksiyonlar ayrı birer sayfaymış gibi derlenip, değişkenleri oluşturulup çağırdığınız dosyaya öyle geliyormuş. Bu yüzden fonksiyonlar anlamlı değerler alıp geri dönderemiyormuş. (Caner’in yalancısıyım. Biraz bakındım ama google’de pek bişe bilmiyor sanırım.)

Fakat çözümünü verdi arkadaşım sağolsun. Dosyayı “php” uzantılı olarak değilde farklı birşey yap, o zaman istediğin gibi çalışır dedi. Mesela: “fonksiyon.php” yerine “fonksiyon.uzanti” yaptığınızda dosyanın içindeki php kod parçaları sanki çağırdığınız dosyadaymışçasına iş görüyor.

Fakat bu çözüm biraz riskli çünkü bu şekilde oluşturulan bir dosya tarayıcı tarafından okunabilir hale gelir. Yani www.example.com/fonksiyon.uzanti dersen dosya içeriğini görebilirsin. Caner sağolsun buna da bir çözüm getirmiş, dosya adını tahmin edilemeyecek birşey yapacaksın. Mesela “kimsebilmeznecektigimi.dosyasi” yaparsak (sanırım kimse tahmin edemez :) ) kafadan uydurupta tarayıcıda görüntülenmesi zor olacaktır.

Eminim bu sorunun daha akılcı bir çözümü vardır fakat ben google ile yeteri kadar konuşamadım bu konu üstüne. Fikri olan varsa iletirse sevinirim :)

Kalın sağlıcakla…

php Türkçe Karakter Dönüştürme

Pazar, 06 Ocak 2008

php.JPGTürkçe karakterli bir kelimeden link yapmaya çalıştığınızda (genellikle .htaccess dosyası ile link formatlama yaparken ihtiyaç duyuluyor) türkçe karakterleri ve gereksiz imlaları değiştirmeniz gerekebilir. Bunun için php’nin strtr() veya str_replace() fonksiyonlarını kullanabilirsiniz.

Fakat veritabanına (benimkisi MySql) kaydederken veya çekerken php bazı türkçe karakterleri algılamıyor bu yüzden karakterleri değiştiremiyor. Benim gibi defalarca yazdığınız kodu inceliyorsunuz ve hiçbir hata olmamasına rağmen Ç harfini C’ye dönüştürüyor ama Ğ’yi G yapmıyor mesela :)

Uzun denemeler sonucunda şöyle bir sonuç buldum:

Veritabanına kaydettikten sonra Mysql ile görüntülediğimde “ÐUÞÝ” gibi karakterler gösteriyordu, bende fonksiyonumda bu karakterleri kullanmaya karar verdim ve işe de yaradı.

İşte gerekli işlemi yapan fonksiyon:

function replace_tr($text) {

    $noktalama = array(",", ".", ";", ":", "!", "\\",

"'", "&", "%", "@", "\"", "/", "*", "(", ")");

    $text=str_replace($noktalama, "", $text);//ÐUÞÝOC - ðuþýoc

    $trler = array("Ð", "Ü", "Þ", "Ý", "Ö", "Ç", "ð", "ü", "þ",

"ý", "ö", "ç", " ");

    $engler = array("G", "U", "S", "I", "O", "C", "g", "u", "s",

"i", "o", "c", "-");

    $text=str_replace($trler, $engler, $text);return $text;

}

echo replace_tr("Ganim'in Türkçe karakter çözümü!");

>>Ganimin-Turkce-karakter-cozumu

Noktalamaları kaldırır ve Türkçe karakterleri inglizce alfabesindeki karşılığına dönüştürür.