如何通过条件判断屏蔽指定页面中include引入的header?
解决方案
下面几种方法都能从根源上避免在指定页面引入header:
方法一:通过当前页面文件名判断排除
先获取当前执行的页面文件名,再在原有登录判断逻辑外层加一层排除判断,比如要排除登录页login.php:
$current_page = basename($_SERVER['PHP_SELF']); // 列出不需要显示header的页面 $exclude_pages = ['login.php', 'register.php']; if (!in_array($current_page, $exclude_pages)) { if ($this->session->userdata('user_login')) { include 'logged_in_header.php'; } else { include 'logged_out_header.php'; } }
方法二:控制器层面设置开关(适用于CodeIgniter这类框架)
从你的代码里用到$this->session来看,推测是使用CodeIgniter框架。可以在不需要显示header的控制器方法里,给视图传递一个标识变量:
比如登录控制器的方法:
public function login() { $data['show_header'] = false; $this->load->view('login_view', $data); }
然后在视图的header引入逻辑处,先判断这个变量:
if (!isset($show_header) || $show_header !== false) { if ($this->session->userdata('user_login')) { include 'logged_in_header.php'; } else { include 'logged_out_header.php'; } }
普通页面默认不设置$show_header或者设为true,就会正常引入header。
方法三:封装成可控制的函数
把header引入逻辑封装成一个函数,需要显示header的页面调用函数,不需要的就不调用:
function load_header($show = true) { if (!$show) return; if ($this->session->userdata('user_login')) { include 'logged_in_header.php'; } else { include 'logged_out_header.php'; } }
普通页面调用load_header();,登录页这类页面调用load_header(false);或者直接不调用该函数。
内容的提问来源于stack exchange,提问作者Ignição Online
相关产品推荐
相关产品推荐

