Rumah >pembangunan bahagian belakang >tutorial php >Fahami konsep asas domain silang Sesi PHP

Fahami konsep asas domain silang Sesi PHP

王林
王林asal
2023-10-12 10:07:581293semak imbas

了解 PHP Session 跨域的基本概念

Untuk memahami konsep asas domain silang Sesi PHP, contoh kod khusus diperlukan

Apabila membangunkan aplikasi web, kami sering menghadapi keperluan untuk mengendalikan sesi pengguna. PHP menyediakan fungsi Sesi untuk menjejak status pengguna antara halaman yang berbeza. Walau bagaimanapun, apabila aplikasi web melibatkan akses merentas domain, pengurusan Sesi menjadi lebih rumit sedikit. Artikel ini akan memperkenalkan konsep asas Sesi PHP dan menyediakan beberapa contoh kod untuk membantu pembaca memahami dengan lebih baik.

Pertama, mari kita semak secara ringkas konsep asas Sesi PHP. Sesi ialah mekanisme untuk menyimpan maklumat pengguna di bahagian pelayan, mengenal pasti pengguna melalui ID sesi yang unik. Apabila pengguna mengakses halaman yang menggunakan Sesi, PHP akan menjana ID sesi secara automatik untuk pengguna dan membuat Sesi yang sepadan pada bahagian pelayan. Selepas itu, tidak kira berapa banyak halaman yang dilayari pengguna, selagi ia berada dalam tempoh sah (yang boleh dikawal dengan menetapkan masa tamat Sesi), PHP boleh memulihkan keadaan sesi pengguna melalui ID sesi.

Walau bagaimanapun, apabila ia berkaitan dengan akses merentas domain, masalahnya menjadi lebih rumit sedikit. Akses merentas domain merujuk kepada halaman web di bawah satu nama domain yang meminta sumber di bawah nama domain lain. Disebabkan oleh sekatan dasar asal penyemak imbas, akses merentas domain dilarang secara lalai. Sesi bergantung pada kuki yang dibawa oleh penyemak imbas semasa menghantar permintaan untuk pengenalan dan pengurusan keadaan. Apabila kami menggunakan Sesi dalam nama domain yang berbeza, disebabkan oleh dasar asal penyemak imbas yang sama, kuki Sesi tidak boleh dibawa, mengakibatkan ketidakupayaan untuk menjejaki status sesi pengguna secara normal.

Untuk menyelesaikan masalah ini, kami boleh menggunakan beberapa cara teknikal untuk mencapai pengurusan Sesi merentas domain. Di bawah ialah beberapa contoh kod khusus untuk menggambarkan cara melaksanakan Sesi merentas domain.

Pertama, kita perlu mengkonfigurasi Sesi pada bahagian pelayan. Buka fail konfigurasi PHP php.ini dan cari item konfigurasi session.cookie_domain. Ubah suai kepada nama domain yang ingin anda kongsikan sesi, sebagai contoh, tetapkannya kepada ".example.com" untuk berkongsi semua subdomain.

session.cookie_domain = ".example.com"

Kemudian, kita perlu menambah sekeping kod di kepala setiap halaman yang perlu berkongsi Sesi untuk menghantar maklumat pengenalan Sesi semasa akses merentas domain. Ini boleh dicapai dengan menetapkan pengepala respons.

<?php
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Origin: http://www.example.com');
?>

Dalam kod di atas, kami menetapkan Access-Control-Allow-Credentials kepada benar, yang bermaksud bahawa bukti kelayakan identiti (iaitu Kuki) dibenarkan untuk dibawa. Pada masa yang sama, tetapkan Access-Control-Allow-Origin kepada nama domain sumber permintaan merentas domain.

Akhir sekali, apabila halaman bahagian hadapan memulakan permintaan merentas domain, kami perlu menetapkan pilihan withCredentials kepada benar supaya penyemak imbas membawa kuki Sesi semasa menghantar permintaan.

fetch('http://api.example.com/data', {
  method: 'GET',
  credentials: 'include'
})

Dalam contoh di atas, kami menggunakan API Ambil untuk memulakan permintaan silang domain Dengan menetapkan pilihan kelayakan untuk 'termasuk', kami memberitahu penyemak imbas untuk membawa bukti kelayakan identiti untuk permintaan merentas domain.

Dengan konfigurasi dan contoh kod di atas, kami boleh melaksanakan pengurusan Sesi merentas domain dalam PHP. Dengan cara ini, halaman di bawah nama domain yang berbeza boleh berkongsi status sesi pengguna seperti biasa.

Untuk meringkaskan, akses merentas domain Sesi PHP perlu dilaksanakan melalui konfigurasi dan kod yang munasabah untuk memastikan keadaan sesi pengguna boleh dikongsi antara halaman dengan nama domain yang berbeza. Dalam pembangunan sebenar, adalah sangat penting untuk memilih cara teknikal merentas domain yang sesuai untuk mengurus Sesi berdasarkan keperluan khusus dan senario perniagaan. Saya harap contoh kod dalam artikel ini akan membantu pembaca.

Atas ialah kandungan terperinci Fahami konsep asas domain silang Sesi PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn