. Htaccess - post it veri aktarımı mümkün mü?

3 Cevap php

Ben tüm istekleri index.php için (. Htaccess yoluyla) sessizce yönlendirilir ve daha sonra PHP (REQUEST_URI geçme tarafından) doğru sayfayı göstermek için kullanılan bir web sitesi var.

Çok sahte adrese POST veri göndermek mümkün olup olmadığını merak ediyorum?

Ben şu anda öyle gibi benim formu var

<form action="/whatplant/send-mail" method="post" id="contact-us-form">

Ve benim. Htaccess kuralı

# redirect mail posting to index
     RewriteRule send-mail index.php?send-mail [NC,L]

Benim index.php kontroller çalışıyor ki ($ _GET ['-posta göndermek']) isset.

Ancak bu kendisine gönderilen gereken tüm POST verileri düşüyorlar gibi görünüyor.

Sonrası verileri tutmak için bir yolu var mı? O kadar bilgi göndermez, çünkü basit bir sorgulama formu ile ilgili bir sorun olmayabilir ama ben GET kullanmak istemiyorum.

Teşekkür ederiz!

EDIT: Ben print_r ($ _POST) ile bir test.php için formun eylem değişti ve doğru çıkış var. Eylem index.php gönderilir zaman hala sonrası veri alma sorunları yaşıyorum

İşte index.php yönlendirme benim. Htaccess olduğunu

# serve files and dirs if they exist please, otherwise send to index
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php

3 Cevap

Bu deneyin:

# redirect mail posting to index
     RewriteRule send-mail index.php?send-mail [NC,P]

Bu işlem kurallarını durur ama aynı zamanda (POST verileri korunur anlam) sağlam isteği vekil modülüne kapalı iletilmesi gereken modülü söyler "P" "L" gibi davranır.

Siz sadece index.php yönlendirmek gerekir, ve o script erişim $_SERVER['REQUEST_URI'] "-posta göndermek" bozulmamış, orijinal isteği görmek için.

Bu arada, "kadar bilgi gönderemiyor" POST kullanmak için neden değildir. POST kullanmak nedeni isteği yerine sadece veri almak, sitenizde verileri değiştirmek olacaktır.

"/delete_user?id=1234" sizin gibi bir GET isteği ile sayfanızda bir köprü koymak varsayalım ve sitenizi dizine gibi o zaman bazı arama motoru masum bağlantıyı izler. GET istekleri verileri değiştirmek istekleri için iyi değildir bu yüzden.

Sürece sadece bir iç yeniden yazmak değil, bir HTTP yönlendirmesi kullandığınız gibi, POST verileri kaybetmek olmamalıdır. İşte benim sitede kullanmak kural şudur:

RewriteRule ^(.*)$ index.php/$1 [L]

HTTPLiveHeaders Firefox için uzantısı (ya da benzer bir şey) kullanmayı deneyin ve tüm sayfa isteği izleyebilirsiniz. Eğer bir HTTP yönlendirme almıyorsanız emin olun. Bir HTTP/1.1 3xx yanıtı ve Location: http://address başlığını alırsanız, bu bir sorundur. Deftere Sizin yazma kuralı gerçekleşmesi için neden olmamalıdır. Eğer yönlendiriliyorsunuz iseniz, PHP kodunda bir hata ya da uygulanmakta olan bir başka yazma kuralı da muhtemelen vardır.