Bir sonraki çözümü buldum. Nesneyi işleyerek POST
isteği işledikten sonra yeniden yönlendirmeden kaçabilirsiniz history
.
Yani HTML formunuz var:
<form method=POST action='/process.php'>
<input type=submit value=OK>
</form>
Bu formu sunucunuzda işlediğinizde /the/result/page
, Location
başlığı aşağıdaki gibi ayarlayarak kullanıcıyı yönlendirmek yerine :
$cat process.php
<?php
process POST data here
...
header('Location: /the/result/page');
exit();
?>
POST
Düzenlenmiş verileri işledikten sonra küçük işlersiniz <script>
ve sonuç/the/result/page
<?php
process POST data here
render the <script> // see below
render `/the/result/page` // OK
?>
<script>
Eğer bir şekilde oluşturulması gerekir:
<script>
window.onload = function() {
history.replaceState("", "", "/the/result/page");
}
</script>
Sonuç:
Gördüğünüz gibi form verilerini edilir POST
için ed process.php
senaryo.
Bu komut dosyası, verileri işler POST
ve /the/result/page
aynı anda oluşturmayı şunlarla işler :
- yönlendirme yok
POST
Sayfayı yenilediğinizde yeniden veri yok (F5)
POST
tarayıcı geçmişinde önceki / sonraki sayfaya gittiğinizde tekrar yok
UPD
Başka bir çözüm olarak ben sormak özellik isteği Mozilla FireFox kurulumu için kullanıcılara izin vermek ekip NextPage
gibi çalışacak başlığındaki Location
başlık ve makyaj post/redirect/get
modası desen.
Kısacası. Sunucu form POST
verilerini başarıyla işlediğinde :
- Kurulum
NextPage
başlığı yerineLocation
POST
Form verilerinin işlenmesinin sonucunu kalıpta GET
istek için işleneceği şekilde post/redirect/get
işleyin
NextPage
Üstbilgiyi gördüğünüzde tarayıcı sırayla :
- Ayarlama
window.location
ile NextPage
değerine
- Kullanıcı sayfayı yenilediğinde, tarayıcı yeniden form verileri yerine
GET
istek için pazarlık yaparNextPage
POST
Bence bu uygulanırsa mükemmel olur, değil mi? =)