On 20-Feb-2003, Adwin wrote:
> waktu submit, data saya post ke satu page yg isinya hanya script php (anggap 
> aja namanya proses.php) yg bertugas memproses / insert / update/ delete dkk 
> (pokoknya yg berhubungan dengan database). Begitu script ini selesai 
> memproses, langsung manggil header("Location:say_success.php"); 
> Jadi browser ga meng cache proses.php, kalau tombol BACK di pencet, akan 
> langsung kembali ke page awal (yg berisi form) bukan ke proses.php. 
> Jadi data yg masuk ga akan dobel kalau di pencet Back/Foward (kecuali kalau 
> udah di back, user nekan tombol submit lagi, ya data bisa masuk lagi....) 

Kalo ada SOLUSI yg bisa menyelesaikan 100% masalah, kenapa pilih
WORKAROUND yg cuma bisa menyelesaikan 50% masalah? Semua yg anda
lakukan di atas akan percuma kalo usernya double-click tombol submit.
Anda malah bilang sendiri di kalimat terakhir anda di atas bahwa yg
anda lakukan tetap ada pengecualiannya.

> *di proses.php tidak boleh terdapat fungsi semacam echo, soalnya ini bakal 
> error kalau ketemu fungsi header(Location...)

Boleh saja, kalo pake feature output buffering dr PHP.

> Biar lebih yakin dan aman, bisa pakai header("Cache-control:no-cache"); 

Seperti yg saya bilang sebelumnya, dg header() dan sejenisnnya itu
anda *meminta* client utk melakukan sesuatu, client (yg nakalan)
tidak harus melakukan apa yg anda minta. Saya bisa buat HTTP client yg
tidak mempedulikan header Cache-control maupun sejenisnya. Jadi
menggunakan header(...) itu tidak membuat saya yakin maupun aman.

Memang kedengeran kayak saya ini paranoid banget, tapi org nakal akan
mempergunakan celah sekecil apa pun, jadi kita juga gak bisa
meninggalkan lobang sekecil apa pun :)

Ronny

-- 
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3

Kirim email ke