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

时间:2015-03-28 22:12:47

标签: php session

我对php或sql没有太多经验,所以我可能会遗漏一些非常基本的东西。我的主要目标是,如果访问了第一个文件,然后访问了第二个文件,您将能够访问该第二个文件。但是,如果您不访问第一个文件,则会被拒绝访问。我有一个HTML文件,用于将$_SESSION[upgrade]设置为1.我使用accountify并且它“扩展了php的会话支持”,因此这可能是一个与accountify相关的问题。由于accountify,会话已经在运行。 (Link To 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代码。我花了太多时间在这上面,无法弄明白。如果我没有提供足够的信息来解决这个问题,请告诉我。

1 个答案:

答案 0 :(得分:4)

在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
  } 
?>