Apabila menggunakan rangka kerja Laravel untuk pembangunan web, kita sering perlu melompat antara halaman. Lompatan ini dilaksanakan melalui penghalaan Kita boleh menggunakan kaedah redirect()
dalam pengawal untuk mengubah hala halaman ke URL yang ditentukan. Kadangkala kita perlu melaksanakan fungsi "kembali ke halaman sebelumnya" Artikel ini akan memperkenalkan cara melaksanakan fungsi ini dalam Laravel.
HTTP_REFERER ialah medan pengepala dalam protokol HTTP, yang merekodkan URL halaman sebelumnya yang mengakses halaman semasa. Kita boleh melaksanakan fungsi "kembali ke halaman sebelumnya" dengan mengakses HTTP_REFERER.
Pertama, kita perlu menggunakan kaedah back()
dalam Pengawal untuk mengubah hala halaman ke halaman sebelumnya: Kaedah
public function someAction(Request $request) { // 一些操作 return redirect()->back(); }
back()
akan mengubah hala halaman ke URL yang ditentukan oleh HTTP_REFERER, Ini membolehkan fungsi "kembali ke halaman sebelumnya".
Perlu diambil perhatian bahawa HTTP_REFERER ialah medan pengepala HTTP yang dihantar oleh klien, jadi nilainya mungkin diusik atau mungkin tidak wujud. Jika HTTP_REFERER tidak wujud atau nilainya tidak boleh dipercayai, kita perlu menggunakan kaedah lain untuk melaksanakan fungsi "kembali ke halaman sebelumnya".
Rangka kerja Laravel menyediakan perkhidmatan yang dipanggil sesi Kami boleh menggunakan sesi untuk menyimpan URL "halaman sebelumnya" dan membacanya apabila diperlukan untuk melaksanakan fungsi "kembali ke halaman sebelumnya".
Pertama sekali, simpan URL halaman semasa dalam sesi dalam Pengawal:
public function someAction(Request $request) { // 一些操作 $previousUrl = url()->previous(); $request->session()->put('previous_url', $previousUrl); return redirect()->route('some_other_route'); }
Kaedah url()->previous()
digunakan di sini untuk mendapatkan URL halaman sebelumnya halaman semasa. Kemudian gunakan kaedah $request->session()->put()
untuk menyimpan URL ini ke dalam sesi.
Seterusnya, di mana kita perlu "kembali ke halaman sebelumnya", kita boleh mendapatkan URL yang disimpan sebelum ini daripada sesi dan mengubah hala halaman ke URL ini:
public function someOtherAction(Request $request) { // 一些操作 $previousUrl = $request->session()->get('previous_url'); if (!empty($previousUrl)) { return redirect()->to($previousUrl); } // 如果session中没有上一个页面的URL,就返回首页 return redirect()->route('home'); }
Gunakan di sini $request->session()->get()
kaedah mendapatkan URL yang disimpan sebelum ini daripada sesi. Jika URL ini wujud dalam sesi, gunakan kaedah redirect()->to()
untuk mengubah hala halaman ke URL ini, dengan itu merealisasikan fungsi "kembali ke halaman sebelumnya".
Perlu diambil perhatian bahawa penggunaan sesi boleh menyebabkan isu keselamatan jika tiada sekatan dikenakan. Penyerang boleh memalsukan nilai dalam sesi untuk melaksanakan serangan Pemalsuan Permintaan Silang Tapak (CSRF). Oleh itu, kami harus menambah beberapa langkah keselamatan apabila menggunakan sesi, seperti menggunakan token untuk mengesahkan kesahihan permintaan.
"Kembali ke halaman sebelumnya" ialah fungsi yang sangat biasa dalam aplikasi web, dan rangka kerja Laravel menyediakan pelbagai kaedah untuk melaksanakan fungsi ini. Kita boleh menggunakan medan atau sesi pengepala HTTP_REFERER untuk mencapai fungsi ini. Perlu memilih kaedah yang paling sesuai mengikut keadaan sebenar. Tidak kira kaedah yang digunakan, anda perlu memberi perhatian kepada langkah keselamatan untuk mengelakkan pemalsuan permintaan merentas tapak dan isu keselamatan lain.
Atas ialah kandungan terperinci laravel melompat ke halaman sebelumnya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!