Yasin Koç'un Kişisel Günlüğüdür..

 
Php ve Path Info

Gönderen: yasin 11.12.2012 21:27:05

Yazının Kategorisi: Php Bu yazı 7840 kez okundu.

Yazının Türü: İpucu Bu yazıya 0 yorum yapıldı.

Bayadır geliştirme işleriyle uğraşmadığım için tahmin edersiniz ki kodlar üzerindeki hakimiyetimi kaybettim denebilir. Tabii tam anlamıyla değil muhakkak. İnsan zorda olunca bazı şeyleri hızlandırılmış olarak yeniden kazanabiliyor. Belki de zaman geçtikçe bakış açısının farklılaşmasındandır. Neyse..

Yaklaşık 1 aydır sunucumda bi sorunla uğraşmaktaydım. Zaman zaman site üzerinde seo düşüyordu. Kendi kendine bir düzeldi, bir geri geldi derken.. 1 hafta önce komple gitti.
Bikaç gündür komple bu iş üzerine uğraşıyorum. Koca hafta sonu nerdeyse tüm dikkatimi bu işe verdim ama hiçbişey kazanamadım. Yaklaşık 1 yıldır sistem üzerinde yazılımsal hiçbir geliştirme ve değiştirme yapmadığım için (9 ay önceki bi dosya yedeğini kolayca kullanabilirim mesela) sorunu kesinlikle sunucu üzerinde gördüm. Yazılımsal olma ihtimaline karşın, Apache ve php.net dökümantasyonları arasında mekik dokudum ama dikkati çeken hiçbişey yoktu tabii ki. Bu arada sunucu sahiplerinin ilgisizliğine ve bilgisizliğine kızdım, başka sunucular denedim. Denediğim her sunucuda sonuç aynı olunca, yazılımsal hata ihtimalini bırakmadım tabii ki ama sorunun işaret ettiği rewritetı. 
Sonrasında Ysn Web Manager'ın (ysp) hata basma sınıfını devreye sokmanın ve yeniden hakimiyet kazanmanın kaçınılmaz sonucunun farkına vardım ve işledim.

Olan şu: Site açılıyor, menüler paneller mevcut, içerik yok. Diğer linklere gittiğinizde seo yok. Ama bu sistem url parse olarak codeigniter tarzına benzediği için; benzer bi yöntem deneyince o şekilde çalışıyor gözüktü. Daha sonra hata sisteminde $_SERVER globalini ekrana basınca, seo lu sayfada Path Info'nun olmadığını ama diğer şekilde işlediğini gördüm..
Şöyle söyliyim: Sınıf içersinde direk $_SERVER['PATH_INFO'] dizisini direk kullanmak hataymış. Şüphelenmekte haklı olduğumu bugün kanıtlamış olduk tabii ki. Bununla ilgili bi arkadaşımdan yardım isteyince kendisi path_info yu kontrol eden, boşsa orig_path_info dan alan kısa bi şart yazdı. Zaten şart görünür görünmez çalışacağını belli etmişti :)

Velhasıl, sitenin çalışması bi globalin bi değişkene kontrollü aktarılması ile gerçekleşti :) Sonrasında php.net te farkettik ki, path_info ile ilgili bi bug mevcutmuş :)

Neyse, globallerin direk kullanımlarının ne kadar hatalı olduğu benim için yeniden kanıtlanmış oldu.
Üstelik bu hata kısmen açık da getirebilir tabii ki, duruma bağlı olarak.. 

Bu yazım; olur da aynı sorunu yaşayacak olan olursa belki yardımına dokunur amacıyla veya yeni başlayıp da bu yazıya denk gelen arkadaşlar varsa onlara bi yardımı olsun amacındadır.
Ne olursa olsun, fonksiyon ve sınıflar dahil hiçbirşeyi kontrol etmeden ve bi değişkene aktarmadan kullanmayın. Yarın birgün bi bug fix durumları olursa çok zorda kalabilirsiniz yada çok güç güvenlik sorunları arasında kalabilirsiniz..

Bu yüzden, boş zamanlarımda tüm sistemi yeniden gözden geçirme kararı aldım çünkü nerelerde hata yapmış olabileceğimizi değişik bi bakış açısıyla anlamaya başladım.

Benden size bi tavsiye; ne olursa olsun sizden daha çok bilip de milyonlarca insanın yararlandığı sistemleri yazan adamları hafife almayın, emin olun bi bildikleri vardır. Mesela onların default olarak sistemleri seo uyumlu yapmamaları gibi! Biz yaptık da noldu? Şimdi tüm sistemde binlerce satırda link yapısıyla oynamak zorundayım ve bunların opsiyonel olabilmesi için sadece seo ile ilgili bi sınıf oluşturmak zorundayım :) Çok bilmişliğin her zaman bi zararı vardır. Gençlik.. :)

Yasin Koç


Bu habere yapılmış bir yorum yoktur. İlk yorum ekleyen siz olun!

 Yorum Ekle 
İsminiz *:
Email *:
Websiteniz :
Yorumunuz :
Güvenlik Kodu :

 

Kullanıcı Girişi

Kullanıcı Adı:
Şifre:

Bağlantılar

Since 2006. Powered By ysn © Rss