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();
?>