Php $会话变量不是';在托管服务器上无法保存,但在我的本地主机上工作正常

Php $会话变量不是';在托管服务器上无法保存,但在我的本地主机上工作正常,php,html,mysql,variables,session,Php,Html,Mysql,Variables,Session,所以更多细节 我正在创建一个网站,该网站将浏览一系列页面,每个后续页面使用之前页面发布的信息设置一个不同的$\u SESSION变量。第一个之后的每个页面都设置不同的$\u会话变量,该变量在该页面上用于查询数据库,以了解要呈现的信息。然后在另外3页左右之后,所有这些不同的$\u会话变量一起用于查询数据库,以获得匹配的记录 我的问题是,在随后的每一页上,$\u会话变量都会设置得非常好,但当我进入下一页时,以前的相同$\u会话变量现在将设置为null 真正让我困惑的是,这只发生在我正在使用的托管服务

所以更多细节

我正在创建一个网站,该网站将浏览一系列页面,每个后续页面使用之前页面发布的信息设置一个不同的
$\u SESSION
变量。第一个之后的每个页面都设置不同的$\u会话变量,该变量在该页面上用于查询数据库,以了解要呈现的信息。然后在另外3页左右之后,所有这些不同的$\u会话变量一起用于查询数据库,以获得匹配的记录

我的问题是,在随后的每一页上,$\u会话变量都会设置得非常好,但当我进入下一页时,以前的相同$\u会话变量现在将设置为null

真正让我困惑的是,这只发生在我正在使用的托管服务器上。该站点在我的本地主机上按预期工作(如果需要的话,我使用wampserver),在这两个主机上的代码完全相同

第1页

这是在页面的顶部。我将“unset()”放在那里,以清空站点开头的数据

<?php
    session_start();
    unset($_SESSION['brand']);
    unset($_SESSION['model']);
    unset($_SESSION['carrier']);
    unset($_SESSION['size']);
?>
这在服务器上运行得非常好,我将看到$\u SESSION['brand']的设置与预期完全一致

但是,在
page3.php
的底部,我再次
echo$\u SESSION['brand']
并将其设置为null,因此我知道
$\u SESSION
变量仍然存在,它只是空的,对吗


每个页面上都会出现这种情况,我不明白为什么。我不是最擅长使用php的人,但我对php有相当多的了解,我完全不明白为什么这只会发生在我的托管服务器上,而不会发生在我的本地主机上。任何帮助都将不胜感激。

只是一个建议。根据MVC模式,会话应该在控制器中处理。您在视图中处理它,并且视图包含太多PHP代码

由于您在浏览器中打开的URL不是唯一的,因此可能会出现页面的会话问题。例如,假设您正在为您的网站创建登录页面,并且您已成功创建会话。现在,如果您是从URL登录,那么您的会话仅限于此URL。如果您再次打开上面的URL(注意两个URL中的www),那么您将看到您没有登录。因此,请确保您的网页总是以单一类型的URL打开。虽然两个URL都将重定向到同一个目的地,但使用带有www的URL或不带www的URL。也要确保包括

<?php
    session_start();
?>


作为每个php页面中的第一条语句。要了解更多信息,请检查托管服务器上的php.ini。您可能需要在代码中使用
SID
,才能使其正常工作。检查此处的文档:是否可以在第2页的会话暂停?只需确保用于访问网页的URL具有唯一前缀。
<?php

    session_start();
    if(isset($_SESSION['brand']))
    {
        $brand = $_SESSION['brand'];
    }
    else
    {
        $_SESSION['brand'] = $_GET['brand'];
        $brand = $_SESSION['brand'];
    }


    include('../connection/localconnection.php');

    $query = "SELECT DISTINCT Model FROM models WHERE brand = '$brand'";
    $result = $dbc->query($query);

    if(!$result){
        echo "DB error. Could not query database\n";
        echo 'MySQL error: ' . mysql_error();
        exit;
    }
?>
<form action="../options/page3.php" method="post">
    <?php 
        if (mysqli_num_rows($result) > 0) {
            while ($row = mysqli_fetch_assoc($result))
            {
                echo "<input type=\"submit\" id=\"c\" name=\"model\" value=\"{$row['Model']}\"/>";
            }
        } else {

            echo "Query didn't return any result";

        }               
    echo $_SESSION['brand'];
    ?>
</form> 
<?php
    session_start();
?>