1. Arif

    PHP’de “Allowed memory size exhausted” hatası nasıl çözülür?

    Hata, PHP betiğinin memory_limit ile izin verilen bellek sınırını aşmasıyla oluşur. Önce hatayı üreten işlemi küçültün; ardından geçici olarak memory_limit değerini artırıp sorunun gerçekten sınırdan kaynaklandığını doğrulayın. Sorun devam ediyorsa büyük veri kümesini tek seferde belleğe alan...
  2. Arif

    PHP’de tarih ve saat nasıl biçimlendirilir?

    PHP’de tarih ve saati biçimlendirmek için en pratik yöntem DateTimeImmutable nesnesinin format() metodunu kullanmaktır. Elinizde Unix zaman damgası varsa date() de kullanılabilir; ancak saat dilimini açıkça yönetmeniz gereken uygulamalarda DateTimeImmutable ve DateTimeZone birlikte daha...
  3. Arif

    PHP’de URL’den gelen parametreler nasıl alınır?

    İstek URL’sindeki sorgu parametrelerini PHP’de almak için $_GET süper küresini kullanabilirsiniz. Örneğin urun.php?id=42&kategori=kitap adresinde id ve kategori değerleri sırasıyla $_GET['id'] ve $_GET['kategori'] ile okunur. Parametrenin gönderilmediği durumda hata almamak için isset() veya...
  4. Arif

    PHP’de “Headers already sent” hatası nasıl çözülür?

    “Headers already sent” hatası, PHP’nin HTTP başlıklarını göndermesi gereken noktadan önce ekrana çıktı vermesi nedeniyle oluşur. Çözüm için hata mesajındaki “output started at” dosya ve satırını açın; o satırdan önceki boşlukları, görünmez UTF-8 BOM karakterini, HTML çıktısını, echo/print...
  5. Arif

    PHP’de “Call to undefined function” hatası nasıl çözülür?

    İlk olarak hata mesajındaki işlev adını birebir kontrol edin; ardından bu işlevin kendi dosyanızda mı tanımlı olduğunu, gerekli PHP eklentisinin yüklü olup olmadığını ve web sunucusunun kullandığı PHP ile komut satırındaki PHP’nin aynı yapılandırmaya sahip olup olmadığını ayırın. Yazım hatasını...
  6. Arif

    PHP’de oturum açma ve kullanıcı giriş sistemi nasıl yapılır?

    İşleyen ve güvenli bir PHP kullanıcı giriş sistemi için parolayı veritabanında düz metin olarak tutmamalı, kullanıcıyı PDO ile sorgulamalı, password_verify() ile doğrulamalı ve başarılı girişten hemen sonra session_regenerate_id() çağırmalısınız. Ardından kullanıcı kimliğini $_SESSION içine...
  7. Arif

    PHP’de MySQL veritabanına PDO ile nasıl bağlanılır?

    PDO ile MySQL’e bağlanmak için PHP’de PDO_MYSQL sürücüsünün etkin olması, bağlantı bilgilerini içeren bir DSN hazırlanması ve bu bilgilerle bir PDO nesnesi oluşturulması gerekir. Aşağıdaki örnekte bağlantı başarılı olursa sorgularda kullanabileceğiniz bir bağlantı nesnesi elde edilir; başarısız...
  8. Arif

    PHP formundan gelen veriler güvenli şekilde nasıl kaydedilir?

    Form verisini güvenli kaydetmek için istemciden gelen değeri doğrudan SQL sorgusuna eklemeyin. İstek yöntemini kontrol edin, alanları beklenen tipe göre doğrulayın, parola gibi gizli bilgileri uygun biçimde işleyin ve veritabanına PDO hazırlanmış deyimiyle parametre olarak gönderin. Kayıt...
  9. Arif

    PHP’de veritabanı sonuçları sayfalara nasıl bölünür?

    İlk olarak toplam kayıt sayısını bulup kaç kayıt gösterileceğini belirleyin, ardından geçerli sayfa numarasına göre LIMIT ve OFFSET değerlerini hesaplayarak sorguyu çalıştırın. Örneğin sayfa başına 10 kayıt gösterilecekse 3. sayfa için OFFSET değeri 20 olur. Sayfa numarasını aralık içinde tutar...
  10. Arif

    PHP’de “Undefined array key” hatası nasıl giderilir?

    “Undefined array key” hatasını gidermek için diziden bir anahtarı okumadan önce anahtarın gerçekten var olduğunu kontrol edin veya eksik durumda kullanılacak varsayılan değeri tanımlayın. Örneğin $_GET['sayfa'] yerine $_GET['sayfa'] ?? 1 kullanabilirsiniz. Ancak anahtarın mevcut olup olmadığını...
  11. Arif

    PHP sayfası boş görünüyorsa hata mesajları nasıl açılır?

    İlk olarak sayfanın PHP dosyasına, çalıştırılmadan önce hata raporlamayı açan şu satırları ekleyin: <?php error_reporting(E_ALL); ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); Bu kodu mümkün olduğunca dosyanın başına, herhangi bir HTML çıktısından önce yerleştirin...
  12. Arif

    PHP’de e-posta gönderimi neden başarısız olur ve nasıl düzeltilir?

    İlk olarak mail() sonucunun ne anlama geldiğini ayırın: true, iletinin alıcı kutusuna ulaştığını değil, PHP’nin iletiyi yerel gönderim mekanizmasına teslim etmeyi başardığını gösterir; false ise PHP’nin gönderim isteğini kabul ettiremediğini belirtir. Bu nedenle önce alıcı adresini ve başlıkları...
  13. Arif

    PHP’de veritabanına eklenen kayıtlar neden Türkçe karakterleri bozuk gösterir?

    İlk kontrol etmeniz gereken yer PHP dosyasının kendisi değil, verinin geçtiği bütün katmanlardır: tarayıcı, HTTP başlığı, PHP dosyasının kodlaması, veritabanı bağlantısı, tablo/sütun karakter seti ve kullanılan HTML sayfası aynı karakter kodlamasını kullanmalıdır. Yeni kayıtlar eklenirken...
  14. Arif

    PHP’de resim yüklerken dosya türü ve boyutu nasıl kontrol edilir?

    İstemciden gelen dosya uzantısına veya formdaki MIME bilgisine güvenmek yerine PHP’de önce yükleme hatasını, dosya boyutunu, gerçek MIME türünü ve dosyanın geçerli bir resim olup olmadığını kontrol etmelisiniz. Ardından yalnız izin verdiğiniz tür ve boyuttaki dosyaları, rastgele üretilmiş yeni...
  15. Arif

    PHP’de tarih ve saat farklı saat dilimlerinde nasıl doğru gösterilir?

    İlkeleri basit: tarihi bir zaman dilimi bilgisiyle oluşturun, veritabanında mümkünse UTC olarak saklayın ve ekranda göstereceğiniz bölgenin zaman dilimine setTimezone() ile dönüştürün. Kullanıcıdan gelen tarih yerel saat olarak alınıyorsa, bu saatin hangi zaman dilimine ait olduğunu açıkça...
  16. Arif

    PHP’de form verisi nasıl doğrulanır?

    Form verisini doğrulamak için gönderilen değeri önce ham hâliyle alın, boşluk ve biçim kontrollerini uygulayın, geçersiz durumda kullanıcıya hata gösterin; doğrulama başarılıysa değeri beklenen türde işleyip veritabanına parametreli sorguyla kaydedin. Doğrulama, kullanıcının gönderdiği verinin...
  17. Arif

    PHP’de dosya indirme işlemi nasıl yapılır?

    İndirme işlemi için PHP’de dosyanın yolunu doğrulayıp uygun HTTP başlıklarını göndermeniz, ardından dosya içeriğini readfile() ile yanıt olarak aktarmanız yeterlidir. İstemci dosyayı indirmeye başladığında PHP betiği başka çıktı üretmemelidir; aksi durumda dosya bozulabilir veya tarayıcı...
  18. Arif

    PHP’de bir dizindeki dosyalar nasıl listelenir?

    PHP’de bir dizindeki dosyaları listelemek için en pratik yöntem scandir() kullanmaktır. Bu işlev dizindeki girişleri dizi olarak döndürür; ancak . ve .. gibi özel girişleri, alt dizinleri ve dosyaları kendiliğinden ayırmaz. Yalnızca dosya adlarını almak istiyorsanız yolu kontrol ederek...
  19. Arif

    PHP’de kullanıcı şifresi güvenli şekilde nasıl saklanır?

    Kullanıcı şifresini veritabanına düz metin olarak değil, PHP’nin yerleşik password_hash() işleviyle oluşturulan tek yönlü özet değer olarak kaydedin. Girişte gelen şifreyi veritabanındaki değerle karşılaştırmak için password_verify() kullanın. Şifreyi kendiniz md5(), sha1() veya hash('sha256'...
  20. Arif

    PHP’de oturum neden kapanır ve nasıl kalıcı hâle getirilir?

    İlk kontrol etmeniz gereken iki ayrı süre vardır: tarayıcıdaki oturum çerezinin ömrü ve sunucuda tutulan oturum verisinin temizlenme süresi. PHP’de session.cookie_lifetime=0 çerezin tarayıcı kapanınca silinebilmesi, session.gc_maxlifetime=1440 ise oturum verisinin yaklaşık 24 dakika...