首页 新闻 会员 周边

php开发,ecshop中要增加一个特定用户才能看到的导航栏

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-08 17:35

我现在想实现的是:在首页导航栏上增加一个专区,这一项只有特定的用户才能看到,其它用户看不到。 
我的users表中增加了一个字段 usertype tinyint(4) 默认是0,现在我规定只有usertype为2时才能看到增加的导航栏。 
于是我在index.php里这样写的代码

 $user_id = $_SESSION['user_id'];   
 $sqlshowsal = "SELECT usertype FROM " . $GLOBALS['ecs']->table('users') . " WHERE user_id = '$user_id'";  
 $row = $GLOBALS['db']->getRow($sqlshowsal);  
 $usertype = $row['usertype'];    
 $smarty->assign('showqudaoflag',   $usertype);//设置标记  

在index.dwt页面是这样写的:

<!-- {if ($showqudaoflag eq 2 ) }-->  <li ><a href="group_buy.php">渠道专区</a></li>  <!-- {/if} --> 

可是结果是: 如果会员不登陆,那导航栏就不显示我增加的内容,会员如果登陆,导航栏就显示我增加的内容了,不管他的usertype是不是等于2。这显然不是我想达到的目的。 

我调试了半天 ,当我在  设置标记前一行加上这样一行代码时

die("<script language='javascript'> alert('$usertype');</script>");  

弹出的框显示的$usertype 显示完全正确。说明我从数据库中获取到的值是正确的,但是为什么,$userype 明明弹出时为0,但是 在index.dwt页面,仍然还显示导航栏呢? 
谁能帮我解决一下这个问题。 谢谢了!

红场小烟的主页 红场小烟 | 初学一级 | 园豆:199
提问于:2013-03-08 12:50
< >
分享
最佳答案
0

又调试了下,发现是缓存问题。而且清楚浏览器缓存也不起作用,必须在ecshop后台点击清楚缓存按钮才能起效果。

但是这样显然是不行的,你不可能时刻都手动清空缓存。于是搜索了一下,如何清楚ecshop缓存。

打开includes/cls_template.php,找到下面一段
  if (file_put_contents($this->cache_dir . ‘/’ . $cachename . ‘.php’, ‘<?php exit;?>’ . $data . $out) === false)
{
trigger_error(‘can/’t write:’ . $this->cache_dir . ‘/’ . $cachename . ‘.php’);
}

将这一段注释掉问题得以解决。

记住缓存,这个问题真是困扰了我好久,当然也花费了不少时间。

红场小烟 | 初学一级 |园豆:199 | 2013-03-08 17:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册