Rumah >pembangunan bahagian belakang >tutorial php >Perkaitan storan silang domain dan rentas tapak Sesi PHP

Perkaitan storan silang domain dan rentas tapak Sesi PHP

王林
王林asal
2023-10-12 09:57:391038semak imbas

PHP Session 跨域与跨站点存储的关联

Sesi PHP Perkaitan antara storan merentas domain dan merentas tapak memerlukan contoh kod khusus

Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet, domain merentas domain dan storan merentas tapak menjadi semakin penting dalam pembangunan. Dalam pembangunan PHP, menggunakan Sesi untuk menyimpan data sesi pengguna adalah cara biasa. Artikel ini akan menumpukan pada storan merentas domain dan merentas tapak Sesi PHP dan menyediakan beberapa contoh kod khusus.

1 Pengenalan kepada PHP Session
PHP Session ialah teknologi yang digunakan untuk memindahkan dan menyimpan data antara halaman yang berbeza. Apabila pengguna melawat tapak web, pelayan memberikan ID Sesi unik kepada setiap pengguna dan menyimpan ID Sesi ini dalam penyemak imbas pengguna. Melalui ID Sesi, pelayan boleh mengenal pasti pengguna yang berbeza dan menyimpan data sesi pengguna dalam memori atau cakera sebelah pelayan supaya data boleh diperoleh apabila pengguna melawat halaman lain.

2. Storan merentas domain sesi
Dalam pembangunan sebenar, kadangkala kita perlu mendapatkan atau menetapkan data Sesi di bawah nama domain lain dalam halaman di bawah satu nama domain, yang melibatkan Cross-domain Sesi isu penyimpanan. Untuk mencapai storan merentas domain, kami boleh menggunakan parameter Kuki atau URL untuk lulus ID Sesi.

  1. Gunakan Kuki untuk lulus ID Sesi

Pertama, pada pelayan yang menyimpan data Sesi, anda perlu menetapkan atribut domain Sesi kepada nama domain peringkat atas, supaya data Sesi yang sama juga boleh diakses di bawah nama domain lain. Contohnya, jika anda ingin berkongsi data Sesi di bawah dua nama domain, domain1.com dan domain2.com, anda boleh menetapkan atribut domain Sesi kepada ".com", seperti yang ditunjukkan di bawah:

ini_set("session.cookie_domain", ".com");

Seterusnya, Fungsi session_start() perlu dipanggil di kepala setiap halaman untuk membuka Sesi dan menyimpan ID Sesi dalam Kuki, contohnya:

session_start();
setcookie("PHPSESSID", session_id(), time()+3600, "/", ".com");

Pada halaman dengan nama domain lain, anda boleh baca nama domain Dapatkan ID Sesi dengan menggunakan Kuki di bawahnya dan gunakan ID Sesi untuk mengakses data Sesi, contohnya:

session_id($_COOKIE["PHPSESSID"]);
session_start();

// 读取Session数据
$data = $_SESSION["data"];

Cara menggunakan Kuki untuk lulus ID Sesi adalah agak mudah, tetapi perlu diambil perhatian bahawa memandangkan Kuki disimpan dalam penyemak imbas Dalam pelayan, terdapat risiko keselamatan tertentu, jadi penyulitan dan pengesahan yang sesuai diperlukan apabila menghantar ID Sesi merentas domain.

  1. Gunakan parameter URL untuk lulus ID Sesi

Jika anda tidak mahu menggunakan Kuki untuk lulus ID Sesi, anda juga boleh lulus Sesi ID sebagai parameter URL. Pertama, pada pelayan tempat data Sesi disimpan, ID Sesi perlu ditambahkan pada URL, contohnya:

session_start();

// 获取Session ID
$sessionId = session_id();

// 将Session ID添加到URL中
$url = "http://domain2.com/index.php?PHPSESSID=" . $sessionId;

// 跳转到另一个域名的页面
header("Location: " . $url);
exit();

Pada halaman dengan nama domain lain, ID Sesi dalam URL boleh diperolehi melalui pembolehubah $_GET , dan gunakan ID Sesi untuk mengakses data Sesi, contohnya:

session_id($_GET["PHPSESSID"]);
session_start();

// 读取Session数据
$data = $_SESSION["data"];

Kaedah menggunakan parameter URL untuk menghantar ID Sesi secara relatifnya lebih fleksibel, tetapi perlu diingat bahawa URL perlu diubah suai apabila lulus ID Sesi penyulitan dan pengesahan yang betul untuk mengelakkan risiko keselamatan.

3. Sesi storan merentas tapak
Selain storan merentas domain, kadangkala kami juga perlu berkongsi data Sesi antara tapak yang berbeza, yang melibatkan isu storan merentas tapak Sesi . Untuk mencapai storan merentas tapak, kami boleh menggunakan pangkalan data atau storan kongsi untuk menyimpan data Sesi.

  1. Gunakan pangkalan data untuk menyimpan data Sesi

Pertama sekali, pada pelayan yang menyimpan data Sesi, anda perlu mengkonfigurasi kaedah penyimpanan Sesi PHP sebagai storan pangkalan data. Contohnya, gunakan pangkalan data MySQL untuk menyimpan data Sesi:

// 设置Session存储方式为数据库存储
ini_set("session.save_handler", "user");
ini_set("session.save_path", "mysql://user:password@localhost/database/session_table");

Kemudian, anda perlu menulis kod operasi pangkalan data yang sepadan untuk merealisasikan penyimpanan dan pembacaan Sesi. Sebagai contoh, apabila log masuk, data sesi pengguna log masuk boleh disimpan dalam pangkalan data:

session_start();

// 存储Session数据到数据库中
$_SESSION["username"] = "user";
$_SESSION["role"] = "admin";

Pada halaman tapak lain, anda juga perlu mengkonfigurasi kaedah penyimpanan Sesi yang sama dan tulis kod operasi pangkalan data yang sepadan, untuk membaca data Sesi dalam pangkalan data.

  1. Gunakan storan kongsi untuk menyimpan data sesi

Selain storan pangkalan data, anda juga boleh menggunakan storan kongsi untuk menyimpan data sesi. Sebagai contoh, anda boleh menggunakan Redis atau Memcached sebagai storan kongsi untuk melaksanakan storan rentas tapak bagi sesi. Mula-mula, anda perlu memasang dan mengkonfigurasi perkhidmatan Redis atau Memcached pada pelayan tempat data Sesi disimpan. Kemudian, konfigurasikan kaedah storan Sesi PHP sebagai storan kongsi, contohnya, gunakan Redis untuk menyimpan data Sesi:

// 设置Session存储方式为Redis存储
ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://localhost:6379");

Seterusnya, anda perlu menulis kod yang sepadan untuk melaksanakan storan dan bacaan Sesi. Sebagai contoh, simpan data sesi pengguna log masuk dalam Redis:

session_start();

// 存储Session数据到Redis中
$_SESSION["username"] = "user";
$_SESSION["role"] = "admin";

Pada halaman tapak lain, anda juga perlu mengkonfigurasi kaedah penyimpanan Sesi yang sama dan menulis kod yang sepadan untuk membaca data sesi dalam data Sesi.

Dengan menggunakan pangkalan data atau storan kongsi untuk menyimpan data sesi, storan merentas tapak boleh dicapai, menjadikannya mudah untuk berkongsi data sesi antara tapak yang berbeza.

Ringkasan:
Artikel ini memperkenalkan storan merentas domain dan tapak bagi Sesi PHP, dan menyediakan contoh kod khusus menggunakan parameter Kuki dan URL untuk menghantar ID Sesi, serta menggunakan pangkalan data dan storan storan kongsi contoh kod khusus untuk data Sesi. Dalam pembangunan sebenar, mengikut keperluan dan keperluan keselamatan projek, anda boleh memilih kaedah yang sesuai untuk melaksanakan storan silang domain dan rentas tapak Sesi.

Atas ialah kandungan terperinci Perkaitan storan silang domain dan rentas tapak 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