我已经设置并运行了我的登录和会话有效性函数。我想做的是在每个页面的开头包含此文件,并根据该文件的输出,它将显示所需的信息,或者,如果用户未登录,则只需显示登录表单(这是一个包含)。
我将如何做到这一点?我不介意使用 IF 语句来测试包含的输出,但我不知道如何获取此输入。
目前,登录/会话函数根据发生的情况返回 true 或 false。
谢谢。
编辑:这是我的登录/会话检查中使用的一些代码,但我希望我的主文件基本上知道包含的文件(下面的代码)是否返回了真或假。
if ($req_method == "POST"){
$uName = mysql_real_escape_string($_POST['uName']);
$pWD = mysql_real_escape_string($_POST['pWD']);
if (login($uName, $pWD, $db) == true){
echo "true"; //Login Sucessful
return true;
} else {
echo "false";
return false;
}
} else {
if (session_check($db) == true){
return true;
} else {
return false;
}
}
你可以的意思
是if (include 'session_check.php') { echo "yeah it included ok"; }
或
登录检查.php'
if (some condition) $session_check=true;
else $session_check=false;
某处页面.php
include 'session_check.php';
if ($session_check) { echo "yes it's true"; }
或者您可能期望登录检查.php运行并回显"true",在这种情况下您做错了。
编辑:
是的,是后者。您不能从包含的文件中返回某些内容,这是过程而不是函数。请改为执行此操作并查看上文
if (session_check($db) == true){
$session_check=true;
} else {
$session_check=false;
}
实际上。。
$session_check=session_check($db);
就够了
根据要检查的位置,可能需要声明global $session_check;
或者可以改为设置常量。
你可以有一个包含的文件来设置一个变量:
<?php
$allOk = true;
并在主文件中检查它:
<?php
include "included.php";
if ($allOk) {
echo "go on";
} else {
echo "There's an issue";
}
你的问题似乎对php如何包含工作有一些困惑,所以我要稍微解释一下,我认为这将解决你的问题。
当您在 PHP 中包含某些内容时,就像在没有包含的情况下在该页面上运行代码一样,就像您复制和粘贴一样。所以你可以这样做:
包括我.php
$hello = 'world';
主.php
include 'includeme.php';
print $hello;
这将打印"世界"。
与其他语言不同,包含文件在 PHP 中的放置位置也没有限制。所以你也可以这样做:
if ($whatever = true) {
include 'includeme.php';
}
现在这两个都被认为是"坏代码"。第一个是因为您使用全局作用域来传递信息,第二个是因为您有意在包含中运行全局范围的内容。
对于"好"代码,所有包含的文件都应该是类,你应该创建该类的新实例并做一些事情,但这是一个不同的讨论。