搞开发的朋们友给大家出个ecshop的题目,看看大家的思路

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



如何在ecshop的前台的php页面如index.php,category.php或goods.php中取得后台登录的$_SESSION['admin_id']? 不要说只接拿来用,直接在index.php,category.php或goods.php中直接通过$_SESSION['admin_id']是取不到的,本人觉得挺有意思的一问题

回答:


高手如云,这个问题,我也曾经尝试用4楼的方去解决,但没成功,但看4楼的截图已取到了后台的$_SESSION['admin_id']的值,实际中我是这样解决了,分亨出来供大家参考:

  1. $admin_session_id = $_COOKIE['ECSCP_ID'];
  2. $admin_session_id = substr($admin_session_id, 0, 32);
  3. $admin_session = $db->getRow('SELECT adminid, expiry FROM ' . $ecs->table('sessi**') . " WHERE sesskey = '$admin_session_id'");
  4. $admin_id = 0;
  5. if(!empty($admin_session) && ($sess->_time - intval($admin_session['expiry']) <= $sess->max_life_time))
  6. {
  7. $admin_id = $admin_session['adminid'];
  8. }
复制代码


一、在前台可以取到后台的cookie的,即$_COOKIE['ECSCP_ID'];

二、根据$_COOKIE['ECSCP_ID'],可以的找到后台的session_id

三、根据后台的session_id直接去session表中查找应的admin_id的值

有时在开发的过程中会遇到前台需要判断是否登录的后台的帐号,登录了就开放前台的查看商品或分类的所有权限

setcookie($this->session_name, $this->session_id . $this->gen_session_key($this->session_id), 0, $this->session_cookie_path, $this->session_cookie_domain, $this->session_cookie_secure);

这个问题挺简单的。
你对比下前后台获取session有什么不同就知道了
前台的是
$sess = new cls_session($db, $ecs->table('sessi**'), $ecs->table('sessi**_data'));
后台的是
$sess = new cls_session($db, $ecs->table('sessi**'), $ecs->table('sessi**_data'), 'ECSCP_ID');
多了一个ECSCP_ID 参数,应该是ecshop后台id,CP是control panel 控制面板的意思

而再看方法原型
function __c**truct(&$db, $session_table, $session_data_table, $session_name = 'ECS_ID', $session_id = '')
默认值是ECS_ID,就是说前台不传值,默认使用ECS_ID
通过不同的传值,可以对应的取到当前cookie里面存储的不同的值,可以通过firebug来看

注意看ECSCP_ID 以及 ECS_ID
根据这两个不同的key值,可以从sessi**或者sessi**_data两个表取到对应的值。

所以简单来说就是在前台获取cookie中ECSCP_ID的值也就是后台session_id
再直接用这个值到数据库中取值,可以参考/includes/cls_session.php中load_session方法

学习了

高手如云,这个问题,我也曾经尝试用4楼的方去解决,但没成功,但看4楼的截图已取到了后台的$_SESSION['adm ...
ecshopkaifa 发表于 2012-11-17 09:47



貌似跟我说的没区别..

所以简单来说就是在前台获取cookie中ECSCP_ID的值也就是后台session_id
再直接用这个值到数据库中取值,可以参考/includes/cls_session.php中load_session方法

区别不大,任何一种方法都不能脱离于从cookie中获取session_id,你的方法是重新实例下session的类,我的方法是通过session_id直接查询mysql数据库

我说的是
再直接用这个值到数据库中取值

说参考load_session方法
就是说里面有你写的 sql 语句,自己去看吧

ECSHOP学习资料:http://www.phpally.com

来学习学习!http://www.tmallco.com