PHP会话仅在每个页面上显式请求时存储

问题描述

我是PHP新手。我的代码位于所有页面的顶部,旨在通过GET链接选择存储货币。

<?PHP
session_start();

if (isset($_GET['currency'])) {
$_SESSION['currency'] = $_GET['currency'];
}

?>

我还在所有页面上使用以下内容显示所选的货币(如果未选择货币,则使用美元):

<?PHP print isset($_SESSION['currency']) ? "{$_SESSION['currency']}" : 'usd'; ?>

但是会话似乎只是在我选择它的页面上设置货币。假设我在index.PHP上选择了EUR,然后导航到page2.PHP-但是它将显示USD。如果我返回index.PHP,它仍然保存为EUR,但是如果我在其他页面之一上选择了EUR,则需要所有页面来保存EUR。

我将session_start放在每个页面的顶部,我的编码是UTF-8,没有BOM,没有错误显示,我强制使用https和www,以便始终将其视为一个站点

我在做什么错?如何获得我的会话以保存整个站点?如果有帮助,该站点将运行PHP 7.4

解决方法

如果您有这样的话:

<?php
session_start();

if (isset($_GET['currency'])) {
$_SESSION['currency'] = $_GET['currency'];
}

?>

在所有页面的顶部,您没有将货币作为查询参数传递,然后在每个页面上,您将用空的 $ _ GET ['currency']

替换会话> ,

尝试一下

objectId