Maintien des données de session pendant la transition HTTP/HTTPS
Lors du basculement entre les services HTTP et HTTPS sur le même serveur, les variables de session peuvent être perdues. En effet, l'ID de session HTTP n'est pas transféré à la session HTTPS.
Heureusement, il existe trois façons de transmettre l'ID de session :
1. PHP : session_start()
session_start() établit ou reprend une session en utilisant l'ID de session de la requête (via GET, POST ou cookie). En démarrant un script avec session_start(), vous pouvez normalement définir l'ID de session.
Si l'ID de session n'est pas défini, vous pouvez le récupérer avec session_id() puis le définir en utilisant session_id().
2. PHP : session_id()
Voici un exemple utilisant deux scripts, un pour HTTP et un pour HTTPS, qui conservent les données de session :
Script 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 Script :
<?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. Assurer une liaison appropriée
Les liens HTTP et HTTP doivent être ajustés pour inclure ou exclure le préfixe « www » afin de conserver le même substrat de stockage de données de session.
Assurez-vous que http:// www.example.com/page.php renvoie à https://www.example.com/page.php et http://example.com/page.php renvoie à https://example.com/page.php.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!