我对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
}
?>