Mengekalkan Data Sesi Semasa Peralihan HTTP/HTTPS
Apabila bertukar antara perkhidmatan HTTP dan HTTPS pada pelayan yang sama, pembolehubah sesi mungkin hilang. Ini kerana ID sesi HTTP tidak dipindahkan ke sesi HTTPS.
Nasib baik, terdapat tiga cara untuk lulus ID sesi:
1. PHP: session_start()
session_start() menetapkan atau menyambung semula sesi menggunakan ID sesi daripada permintaan (melalui GET, POST atau kuki). Dengan memulakan skrip dengan session_start(), anda biasanya boleh menetapkan ID sesi.
Jika ID sesi tidak ditetapkan, anda boleh mendapatkannya semula dengan session_id() dan kemudian menetapkannya menggunakan session_id().
2. PHP: session_id()
Berikut ialah contoh menggunakan dua skrip, satu untuk HTTP dan satu untuk HTTPS, yang mengekalkan data sesi:
Skrip HTTP:
<?php // Start session and display a link to transfer session ID. session_start(); $currentSessionID = session_id(); $_SESSION['testvariable'] = 'It worked'; echo '<a href="https://example.com/securePage.php?session=' . $currentSessionID . '">Click to transfer session</a>'; ?>
HTTPS Skrip:
<?php // Retrieve session ID from the GET request. $currentSessionID = $_GET['session']; // Set session ID cookie. session_id($currentSessionID); // Start session. session_start(); // Test retrieval of variable set in HTTP script. if (isset($_SESSION['testvariable'])) { echo $_SESSION['testvariable']; } else { echo 'It did not work.'; } ?>
3. Memastikan Pautan yang Betul
Pautan HTTP dan HTTP mesti dilaraskan untuk memasukkan atau mengecualikan awalan "www" untuk mengekalkan substrat storan data sesi yang sama.
Pastikan bahawa http:// www.example.com/page.php pautan ke https://www.example.com/page.php dan http://example.com/page.php pautan ke https://example.com/page.php.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Data Sesi Apabila Bertukar Antara HTTP dan HTTPS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!