我对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
代码。我花了太多时间在这上面,无法弄明白。如果我没有提供足够的信息来解决这个问题,请告诉我。
答案 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
}
?>