ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
PHP'de PRG, "Post/Redirect/Get" (Gönder/Yönlendir/Al) anlamına gelir. Bir formun gönderildikten sonra tekrar gönderilmesini önlemek için tasarlanmış yaygın olarak kullanılan bir tekniktir. Bu tekniği, PHP'de yinelenen form gönderimlerini önlemek için kolayca uygulayabilirsiniz.
Genellikle bir HTML formu, verileri sunucuya POST yöntemiyle gönderir. Sunucu betiği, arka uç veritabanına yeni bir kayıt eklemek veya verileri almak için bir sorgu çalıştırmak gibi daha fazla işlem için verileri alır. Kullanıcı yanlışlıkla tarayıcıyı yenilerse, aynı form verilerinin tekrar gönderilme olasılığı vardır ve bu da muhtemelen veri bütünlüğünün kaybolmasına yol açar. PHP'deki PRG yaklaşımı, bu tuzağa düşmemenize yardımcı olur.
Örnek
Başlamak için, basit bir HTML formu oluşturan ve bunu POST yöntemiyle kendisine geri gönderen aşağıdaki PHP betiğini ele alalım. Kullanıcı verileri doldurup gönderdiğinde, arka uç betiği verileri alır, sonucu oluşturur ve boş formu tekrar göstermek için geri döner.
Sunucunun çalıştığını varsayarak yukarıdaki script belge kök klasörüne yerleştirilir ve tarayıcıda ziyaret edilir.
Verileri doldurun ve gönderin. Tarayıcı sonucu yankılar ve formu yeniden işler. Şimdi tarayıcı sayfasını yenilemeyi denerseniz, aşağıda gösterildiği gibi bir uyarı açılır:
Devam tuşuna bastığınızda aynı veriler tekrar gönderilir.
Sorun aşağıdaki şekille anlaşılabilir:
Sorunu önlemek için PHP betiğinde aşağıdaki adımlar izlenir:
HTML formundan önce gelen PHP betiği yeni bir oturum başlatır.
Formun POST metoduyla gönderilip gönderilmediğini kontrol edin.
Eğer öyleyse, form verilerini oturum değişkenlerinde saklayın.
Tarayıcıyı bir sonuç sayfasına yönlendirin. Bizim durumumuzda, aynı sayfadır. Çıkış komutuyla, daha fazla kod yürütülmediğinden emin olmak için bu betiği sonlandırın.
PHP, REQUEST yönteminin POST olmadığını bulursa, oturum değişkenlerinin ayarlanıp ayarlanmadığını kontrol eder. Ayarlanmışsa, formun yeni kopyasıyla birlikte işlenirler.
Artık form yenilense bile yeniden gönderme ihtimalini başarıyla ortadan kaldırdınız.