PHP会话在主页上不起作用

PHP会话在主页上不起作用,php,session,Php,Session,所以我尝试在PHP中添加会话。我的网站有2个页面index.php和page.php。index.php中的脚本是 <?php if(!isset($_SESSION)){ session_start(); } if (isset($_SESSION['counter'])) { $_SESSION['counter']++; } else { $_SESSION['counter'] = 1; } echo $_SESSION['counter']."<br

所以我尝试在PHP中添加会话。我的网站有2个页面index.php和page.php。index.php中的脚本是

<?php
if(!isset($_SESSION)){
    session_start();
}
if (isset($_SESSION['counter'])) {
    $_SESSION['counter']++;
} else {
    $_SESSION['counter'] = 1;
}
echo $_SESSION['counter']."<br>";
?>
<html>
<body>
<a href="page.php">Go to page</a>
</body>
</html>

php中的脚本是

<?php
if(!isset($_SESSION)){
    session_start();
}
if (isset($_SESSION['counter'])) {
    $_SESSION['counter']++;
} else {
    $_SESSION['counter'] = 1;
}
echo $_SESSION['counter']."<br>";
?>
<html>
<body>
<a href="index.php">Go to index</a>
</body>
</html>

当我打开index.php时,它将计数器打印为1。我重新加载了几次,计数器得到了很好的递增。然后,如果我转到page.php,它将显示计数器的正确值(最后一次在index.php+1中看到的值)。我也重新加载了几次那个页面,计数器仍然正确地递增。但是,若我现在转到index.php,它将计数器显示为1,在这里它应该显示在page.php+1中看到的值lats

在我看来,会话变量被销毁了,然后又开始了。我不希望这种事发生。有没有关于如何纠正它的线索??非常感谢您提供的任何帮助。

在使用
$\u会话之前,您应该这样做。写入
session_start()需要在其中使用
$\u会话的页面顶部
。在使用
$\u session
之前,您需要同时启动会话
page.php
index.php
页面,无需使用
isset()
启动会话。大概是这样的:

session_start();
if (isset($_SESSION['counter'])) {
    $_SESSION['counter']++;
} else {
    $_SESSION['counter'] = 1;
}
echo $_SESSION['counter']."<br>";
session_start();
如果(isset($\ U会话['counter'])){
$_会话['counter']++;
}否则{
$\会话['counter']=1;
}
echo$_会话['counter']。“
”;
会话启动()位于顶部,然后应用条件。如果未设置,则回显/执行某些操作。编辑:或者,按照@johncode所说的去做;这是你最好的选择。摆脱
if(!isset($\u SESSION)){
。只需将SESSION_start();这就是你所需要的。你应该总是在页面顶部调用
SESSION_start()
(在任何输出之前)。我删除了
if(!isset($\u SESSION)){
两个页面的行,但它仍然不工作…对我来说很好。旧会话必须仍在内存中,请尝试销毁它,然后再试一次。不,仍然不工作。您是否更改了两个页面
page.php
index.php
?是的,我更改了这两个页面。此ob_start(“ob_gzhandler”);会话_start();if(isset($\u session['counter']){$_会话['counter']++;}其他{$_会话['counter']=1;}echo$_会话['counter']。“
”;