Merhaba Webkolog takipçileri, bugün sizlere PHP ile web uygulaması inşa ederken göz önünde bulundurmamız gereken kritik pratiklerden ve yazılım mimarisini daha sağlam hale getirecek temel prensiplerden bahsetmek istiyorum.

Yıllardır kod yazarken edindiğim tecrübeler gösteriyor ki, sadece çalışan bir kod yazmak yeterli olmuyor; aynı zamanda sürdürülebilir, güvenli ve performanslı sistemler kurgulamak şart. İsterseniz lafı fazla uzatmadan, projelerimizde yaşam kalitemizi artıracak ve olası krizlerin önüne geçecek maddelere göz atalım.

1. Form Gönderimlerinden Sonra PRG (Post/Redirect/Get) Desenini Uygulayın

Kullanıcıların bir formu doldurup POST işlemi gerçekleştirmesinin ardından, onları doğrudan aynı sayfada bırakmak sıkça yapılan hatalardan biridir. Bu durumda kullanıcı sayfayı tazelediğinde (F5 yaptığında) tarayıcı aynı verileri tekrar göndermek isteyecek ve ekrana o bildiğimiz onay penceresi gelecektir. Yanlışlıkla veritabanına mükerrer kayıt atılmasının önüne geçmek için işlem başarıyla tamamlandığı anda yönlendirme yapmalıyız:

İşlemin bitiminde kullanıcıyı farklı bir adrese veya durum parametresi içeren bir sayfaya yönlendirip işlemi sonlandırmak en temiz çözümdür.

2. Güncelliğini Yitirmiş Veritabanı Sürücülerine Veda Edin

Eski tarz veritabanı bağlantı fonksiyonları çok uzun zaman önce tedavülden kalktı. Artık projelerimizde nesne yönelimli ve güvenli yapılar sunan PDO (PHP Data Objects) veya modern MySQLi kütüphanelerini tercih etmeliyiz. Özellikle PDO kullanmak, farklı veritabanı sistemlerine geçişi kolaylaştırdığı gibi hazırlıklı ifadeler (prepared statements) sayesinde güvenlik katmanımızı da kendiliğinden güçlendirir.

3. XSS ve Veri Doğrulama Konusunda Sıfır Tolerans

Dış dünyadan, yani kullanıcıdan gelen hiçbir veriye körü körüne güvenemeyiz. Web uygulamalarında sıkça karşılaşılan XSS (Cross-Site Scripting) zafiyetlerini engellemek adına, ekrana çıktı basarken verileri mutlaka süzgeçten geçirmeliyiz. Kötü niyetli JavaScript script'lerinin istemci tarafında çalışmasını önlemek için çıktıları güvenli metin formatına dönüştürmek hayati önem taşır.

4. HTML Çıktılarını PHP Kodlarının İçine Boğmayın

Kod bloklarının arasında sürekli string birleştirmeleriyle echo kullanarak devasa HTML yapıları basmak, projenin ilerleyen safhalarında tam bir kabusa dönüşür. Tasarım ile iş mantığını (logic) birbirinden ayırmak, kodun okunabilirliğini doğrudan etkiler. Mimarinizde şablon motorları veya MVC (Model-View-Controller) prensibini benimseyerek görünüm dosyalarınızı ayırmanız, projenize bakım yapmayı son derece kolaylaştıracaktır.

5. Kendinizi Tekrar Etmeyin (DRY - Don't Repeat Yourself)

Aynı kod parçacığını projenin farklı sayfalarında defalarca yazmaktan kaçının. Sık kullanılan mantıksal işlevleri fonksiyonlara, sınıflara (class) veya yardımcı bileşenlere dönüştürün. Böylece gelecekte bir kural değiştiğinde onlarca dosyayı tek tek düzenlemek yerine, sadece ilgili merkezi yapıyı güncellemeniz yeterli olacaktır.

6. Döngü İçinde Veritabanı Sorgusu Çalıştırmaktan Kaçının

Performans kayıplarının en büyük nedenlerinden biri, döngü bloklarının (foreach, for) içerisine veritabanı sorguları yerleştirmektir. 100 elemanlı bir döngüde veritabanına 100 ayrı istek atmak yerine, verileri döngüye girmeden önce toplu halde çekip bellekte işlemek sunucu kaynaklarını korur ve sayfa yüklenme sürelerini ciddi oranda düşürür.

7. Güvenliği En Baştan Bir Standart Haline Getirin

"Sistemimiz zaten küçük, kimse saldırmaz" düşüncesi en büyük tuzaktır. Güvenlik önlemlerini projenin sonuna veya ileri bir tarihe ertelemek yerine, kod yazmaya başladığınız ilk andan itibaren bir alışkanlık haline getirmelisiniz. Input doğrulama, SQL Injection koruması ve yetkilendirme denetimleri her zaman mimarinizin odağında yer almalıdır.

Bu temel kuralları alışkanlık haline getirdiğinizde, yazdığınız projelerin hem daha performanslı çalıştığını hem de kod tabanını yönetmenin çok daha keyifli hale geldiğini göreceksiniz. Kendi projelerinizde uyguladığınız farklı yöntemler varsa yorumlarda paylaşmaktan çekinmeyin.

Hepinize sağlıklı, mutlu ve huzurlu günler dilerim!

Webkolog'u takipte kalın!