Php 是否防止仅继续加载当前文件而不中断父文件的加载?
查看以下结构: groups.phpPhp 是否防止仅继续加载当前文件而不中断父文件的加载?,php,Php,查看以下结构: groups.php <?php session_start(); include('header.php'); if($_SESSION['admin']) { include('groups_admin.php'); } ... html ... ?> groups\u admin.php <?php if(!$_SESSION['admin']) { die(); } ... html ... ?> 组_admin.php的内部-执行
<?php
session_start();
include('header.php');
if($_SESSION['admin'])
{ include('groups_admin.php'); }
... html ...
?>
groups\u admin.php
<?php
if(!$_SESSION['admin'])
{ die(); }
... html ...
?>
组_admin.php的内部-执行die();导致页面的其余部分(包括groups.php)停止加载
如果不包装所有组,那么_admin.php就是一个大的if语句,并将其反转;还有什么方法可以告诉PHP在该文件中停止加载该特定的PHP文件吗?只需在include中返回,例如:
<?php
if(empty($_SESSION['admin']))
{ return false; }
... html ...
?>
很多人不知道可以从包含的文件返回值
只是为了完成这个答案。您还有其他几个不太优雅(但不推荐)的选项
- 您抛出一个异常并在include之外捕获它
- 将其包装在if块中
返回解决方案相比,这是次优的,但我还是无能为力
猜猜看:php支持什么
<?php
if(!$_SESSION['admin'])
{ goto endoffile; }
... html ...
endoffile:
?>
我刚刚发现了自己,它让我回到了过去,回到了我最基本的几年。。。(叹气!)如果您仅以这种方式包含组_admin.php
,那么If(!$\u SESSION['admin'])
条件将永远无法解决true
?还是我遗漏了什么?道歉;我添加了session_start();给我的样本谢谢你;我知道函数中的return,但我没有想到可以在include中使用它。成功了!