PHP$_SESSION[variable]总是等于相同的东西


PHP $_SESSION[variable] Always Equals Same Thing

我对php或sql没有太多经验,所以我可能缺少一些真正基本的东西。我的主要目标是,如果访问了第一个文件,然后又访问了第二个文件,您将能够访问第二个档案。但是,如果您没有访问第一个文件,您将被拒绝访问。我有一个HTML文件,用于将$_SESSION[upgrade]设置为1。我使用accountify,它"扩展了php的会话支持",所以这可能是一个与accountify相关的问题。另外,由于accountify,一个会话已经在运行。(链接到Accountify)这是完整的文件:

<?php
require '/home/u760887416/public_html/accountify/login.php';
if (!isset($_SESSION['upgrade'])) {
  $_SESSION['upgrade'] = 1; 
};
echo("<p>You were upgraded. <br>Redirecting...</p>");
//this is a test:
if($_SESSION['upgrade'] = 1) {
  echo("<p>complete</p>");
  };
?>

在它被设置为1之后,在我想要的另一个文件中,如果是$_SESSION['upgrade'] = 1,那么它会加载一些代码。这是代码:

<?php
  require '/home/u760887416/public_html/accountify/login.php';
  if($login->loggedIn AND $_SESSION['upgrade'] = 1) {
?>
//code to run...
<?php
  } else { 
?>
//more code to run
<?php
  } 
?>

问题是,在我加载第一个文件并转到第二个文件后(无论我是重置会话、创建新会话还是使用不同的计算机),它总是运行else代码。我在这上面花了太多时间,弄不明白。如果我没有提供足够的信息来解决这个问题,请告诉我。

在if语句中使用==而不是=。使用=$_SESSION['upgrade']的值设置为1,而不是将其与1进行比较。

如果你的第一个文件的声明是这样的,请更改:

if($_SESSION['upgrade'] == 1) {
  echo("<p>complete</p>");
  }; 

此外,我建议使用&&而不是AND运算符。第二个文件中的if应该如下所示:

if($login->loggedIn && $_SESSION['upgrade'] == 1) {
?>
//code to run...
<?php
  } else { 
?>
//more code to run
<?php
  } 
?>