Kembali ke halaman sebelumnya dengan header (“Location:”); di PHP
124
Judul pertanyaan ini menjelaskan pertanyaan saya. Bagaimana cara mengarahkan pengunjung halaman PHP kembali ke halaman sebelumnya denganheader( "Location: URL of previous page" );
Perhatikan bahwa ini mungkin tidak bekerja dengan halaman aman (HTTPS) dan itu ide yang sangat buruk secara keseluruhan karena header dapat dibajak, mengirim pengguna ke beberapa tujuan lain. Header bahkan mungkin tidak dikirim oleh browser.
Idealnya, Anda ingin:
Tambahkan alamat pengirim ke permintaan sebagai variabel kueri (mis.? Back = / list)
Tentukan halaman pengembalian dalam kode Anda (mis. Semua pengiriman formulir yang berhasil dialihkan ke halaman daftar)
Beri pengguna opsi ke mana mereka ingin pergi berikutnya (mis. Simpan dan lanjutkan mengedit atau hanya Simpan)
@ Col sehingga Anda dapat membuktikan masalah praktis dengan ini?
Pekka
1
Menggunakan perujuk, setelah sebelumnya menguji apakah sudah disetel dan valid, dalam konteks halaman ke halaman yang ditentukan bisa menjadi praktik yang dapat diterima dengan sempurna - sebagian besar browser mengirimkan HTTP_REFERER yang tepat.
Pekka
1
@Col Saya telah menggunakan ini dalam produksi ketika saya harus menyelesaikan sesuatu untuk demo. Seperti yang Anda lihat dari jawaban saya, saya memberikan tiga solusi lain yang akan saya gunakan alih-alih pengalihan berdasarkan HTTP_REFERER.
Dimitry
2
@Madmartigan kedengarannya seperti perilaku yang sangat aneh, satu-satunya petunjuk yang bisa saya lihat di 'net yang menyebabkannya adalah beberapa masalah pengalihan. Bagaimanapun, saya setuju bahwa menggunakan referer bukanlah cara jika Anda membutuhkan keamanan 100%
Ini terdengar sangat pintar, tetapi di FF10 saya mengerti "Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."Jadi ini pada dasarnya tidak dapat digunakan.
Wesley Murch
Wesley Murch, Ini berfungsi dengan baik untuk saya di hampir setiap browser utama termasuk yang Anda sebutkan. Ini hanya berfungsi untuk Anda hanya jika Anda datang ke halaman yang memiliki sesuatu dalam sejarah.
Hammad
5
Ini dapat menyebabkan halaman sebelumnya disajikan dari cache browser.
aksu
14
Anda harus menyimpan lokasi itu entah bagaimana caranya.
Katakanlah itu adalah formulir POST, cukup letakkan lokasi saat ini di bidang tersembunyi lalu gunakan di header()Lokasi.
Hanya sedikit tambahan: Saya percaya itu adalah hal yang umum dan diketahui untuk ditambahkan exit;setelah fungsi tajuk jika kita tidak ingin sisa kode memuat atau mengeksekusi ...
Menyimpan url sebelumnya dalam variabel sesi itu buruk, karena pengguna mungkin mengklik kanan pada beberapa halaman lalu kembali dan menyimpan.
kecuali Anda menyimpan url sebelumnya dalam variabel sesi ke bidang tersembunyi dalam formulir dan setelah menyimpan header ("Lokasi: simpan URL halaman panggilan");
Jawaban:
mencoba:
Perhatikan bahwa ini mungkin tidak bekerja dengan halaman aman (HTTPS) dan itu ide yang sangat buruk secara keseluruhan karena header dapat dibajak, mengirim pengguna ke beberapa tujuan lain. Header bahkan mungkin tidak dikirim oleh browser.
Idealnya, Anda ingin:
sumber
Sangat sederhana, gunakan saja ini
Ini bekerja dengan baik untuk saya
sumber
"Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."
Jadi ini pada dasarnya tidak dapat digunakan.Anda harus menyimpan lokasi itu entah bagaimana caranya.
Katakanlah itu adalah formulir POST, cukup letakkan lokasi saat ini di bidang tersembunyi lalu gunakan di
header()
Lokasi.sumber
Hanya sedikit tambahan: Saya percaya itu adalah hal yang umum dan diketahui untuk ditambahkan
exit;
setelah fungsi tajuk jika kita tidak ingin sisa kode memuat atau mengeksekusi ...sumber
Coba saja ini di Javascript:
Atau Anda bisa mencobanya di PHP:
sumber
Menyimpan url sebelumnya dalam variabel sesi itu buruk, karena pengguna mungkin mengklik kanan pada beberapa halaman lalu kembali dan menyimpan.
kecuali Anda menyimpan url sebelumnya dalam variabel sesi ke bidang tersembunyi dalam formulir dan setelah menyimpan header ("Lokasi: simpan URL halaman panggilan");
sumber