2016-05-12 102 views
0

我有3个不同的导航栏,根据用户的权限不同,必须加载不同的导航栏。我在一个不同的php文件中做了一个函数,所以我使用每个页面中的代码。我的问题是,登录后,没有导航栏正在加载。有什么建议可能是什么问题?登录后不显示导航栏

在function.php文件中的代码

function checkAuth() 
{ 
    session_start(); 


    if(empty($_SESSION['role'])) 
    { 
     require_once('menu.php'); 
    } 

    else if ($_SESSION['role'] == "registered"){ 
     include('regnav.php'); 
    } 

    else if ($_SESSION['role'] =="admin"){ 
     include('adminnav.php'); 
    } 




} 

在每一页

<?php 
require_once("function.php"); 
checkAuth(); 
?> 
+1

首先,使用'isset()'而不是'empty()'来检查$ _SESSION ['role']是否存在。其次,你还没有向我们展示menu.php,它有希望设置$ _SESSION ['角色']。第三,这段代码第一次运行时,它会运行menu.php,但不会再运行来设置任何导航栏。 –

+0

@SgtAJ我只有menu.php中的导航栏的HTML和编码的开放,因为我在函数中调用会话,你认为这可能是问题吗? – Chanter

+0

那么,它上面有你的require_once(“function.php”)和checkAuth()的第一页将启动你的会话。在那一点上,显然$ _SESSION ['role']将会被取消,因为我们刚刚开始会话,因此您的require_once(“menu.php”)将会运行,但checkAuth看起来并不像它会再次运行,直到我们击中另一个页面,因此在checkAuth()再次运行之前,不会显示导航栏。 –

回答

0

尝试通过会议结果到函数的代码乞讨:

地方会议呼叫顶部的渲染页面

session_start(); 
$this_session = $_SESSION['role']; 

require_once("function.php"); 

地方,你想渲染菜单

checkAuth($this_session); 

功能

function checkAuth($this_session) 
{  
    if($this_session == ''){include('menu.php');} 
    elseif($this_session == 'registered'){include('regnav.php');} 
    elseif($this_session == 'admin'){include('adminnav.php');} 

} 
+0

我已经试过这个,但仍然没有出现:/ – Chanter

+0

@Chanter测试你的会话,以确保它设置:'if(isset($ _ SESSION ['role'])){echo'yesset' ;} else {echo'not set';}' – petebolduc

+0

会话正在工作,因为我已经做了一个简单的打印r来打印$ _SESSION ['role']中的值并且正在打印角色,但没有显示菜单 – Chanter

0

我会亲自调整你的网页只是一点点,像这样:

在每个页面放顶:

session_start(); 
include('function.php'); 
checkAuth(); 

更改功能:

function checkAuth() 
{ 
    if (!isset($_SESSION['role'])) { require_once('menu.php'); } 

    if ($_SESSION['role'] == 'registered') { include('regnav.php'); } 
    if ($_SESSION['role'] == 'admin') { include('adminnav.php'); } 
} 

这里假设你没有使用你的导航栏文件的功能,因为你不调用任何函数写的导航栏。当然,您可以将两个导航栏都放入函数中,并将这两个函数放入单个navbar.php文件中,该文件将包含在每个页面的顶部(或将函数放入function.php),然后从checkAuth()函数中调用相应的导航栏功能,像这样:

if ($_SESSION['role'] == 'registered') { navbar_registered(); } 
if ($_SESSION['role'] == 'admin') { navbar_admin(); }