/Users/applezheng/sites/a8vsctest/themes/default
/Users/applezheng/sites/a8vsctest/themes/meilele
跟新的时候需要修改data/config.php 和data/configb.php数据库连接密码信息等。注意不可以复盖。只能是修改哦。里面的东西不太一样。否则启动步了。
includes/inc_constant.php定义了一些常量
admin中的esc_salt是做什么用的,我测试出来时检验密码的。如果复制md5加密后。必须要把这个字段的值也修改为一样。就可以登录了。
1.复制admin 为adminb
2.复制data/config.php,修改data/configb.php
configb.php 中的注释掉ADMIN_PATH行,重新定义为ADMIN_PATH如下
//define('ADMIN_PATH','admin');
define('ADMIN_PATH','adminb');
3.修改adminb中的include/init.php中的
define('ADMIN_PATH','admin'); 为
define('ADMIN_PATH','adminb');
4.访问后台成功。
5.再数据库内复制vsc_admin_user为vsc_admin_provider.
6.前台的模板放在themes/meilele/目录下 .dwt文件
7.后台的模板放在adminb/templates/目录下 .htm.php 文件.
8.修改init.php中的admin_users为users_pro表
并在users_pro中password字段后添加1个字段;action_list text,这个字段好像不用加。
9.修改index.php中的admin_users为admin_provider表
10. privilege.php
找到 privilege.php 修改数据表 admin_user 为我们自己的新表。users_pro
{找到 privilege.php 修改数据表 admin_user 31行为我们自己的新表。admin_provider
替换掉所有的admin_user 为 admin_provider
再替换掉2处init.php中的的admin_user 为 admin_provider
再替换掉3处init.php中的的admin_user 为 admin_provider}
11.登录测试一下。可以了进入adminb目录了。
12.然后开始创建我们自己的登录页面。
13.复制user.php 为uesrb.php (或者是provider.php这个事后来再做更新版本)
14.建立供货商注册页面。复制meilele模板下的user_passport.dwt为userb_passport.dwt
15.建立底部链接。修改数据库friend_link
复制第三行。修改有量的名称和地址对应。增加我们的地址为sign.html
16.修改userb_passport.dwt 和userb.php相互兼容.
17.报错没有zh_cn文件。复制zh_cn目录下的缺少文件。.php替换为*b.php
18.数据库复制一个数据。vsc_users 为vsc_users_pro
19.修改注册用户的数据保存界面为vsc_users_pro.这一步没有完成。在后面步骤完成后才能完成。
20.复制/js/user.js 为/userb.js放在user.js相同目录下。
修改用户名检测is_registered()函数为userb.php
添加变量如:function register()
{
var frm = document.forms['formUser'];
var username = Utils.trim(frm.elements['username'].value);
var email = frm.elements['email'].value;
var password = Utils.trim(frm.elements['password'].value);
var confirm_password = Utils.trim(frm.elements['confirm_password'].value);
var tel = Utils.trim(frm.elements['tel'].value);
var mobile = Utils.trim(frm.elements['mobile'].value);
var address = Utils.trim(frm.elements['address'].value);
21.修改userb.php中调用register()函数的参数。
如果不需要对增加的input数据进行检测。我认为可以不用修改register()函数。
elseif ($action == 'act_register')
{
include_once(ROOT_PATH . 'includes/lib_passport.php');
$username = isset($_POST['username']) ? trim($_POST['username']) : '';
$password = isset($_POST['password']) ? trim($_POST['password']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$tel = isset($_POST['tel']) ? trim($_POST['tel']) : '';
$mobile = isset($_POST['mobile']) ? trim($_POST['mobile']) : '';
$address = isset($_POST['address']) ? trim($_POST['address']) : '';
22.模板文件里面相对于21步骤需要添加相关的<input>数据代码。
sites/a8vsctest/themes/meilele/userb_passport.dwt 用vim 编辑器编辑。
23.修改includes/lib_passport.php 这一步的修改后来取消了。删除了$username变量的添加。没有做。
添加需要的字段。如下:register()函数添加形参变量。
function register($username, $password, $email, $tel, $mobile, $address)
{
第26步骤暂时不做。直接到第27步。这个文件的调用设计范围太宽。modules下的模版文件不要轻易修改.
只好在integrates.php 中添加函数了。
26.复制include/modules/integrates/integrates.php
命名为integratesb.php 然后对integratesb.php文件中的函数加_pro
add_user 变为 add_user_pro
为了考虑函数的兼容性,以及和整体后台的兼容性。后续的修改需要特别小心了。搞个东东还真不容易。
27.在include/modules/integrates/integrates.php中添加我们需要的函数。331行
a.添加一个新的入驻商城函数function add_user_pro(,,,)
28.这一步后来也没有了。
29.可以吧include/lib_passport.php复制一份 修改为lib_passportb.php 修改userb.php中对lib_passportb.php的引用。
或者可以直接修改lib_passport.php中的add_user()函数为add_user_pro()第77行。
我这里是跳过了第29步。
30.修改include/modules/integrates/integrate.php中的add_user_pro()的表调用users为users_pro
add_user_pro()函数部分的修改。
//下面事原始的部分。
if ($res)
{
$new_id = $this->db->Insert_ID();
return $new_id;
}
else
{
$this->error = ERR_USERNAME_EXISTS;
return 0;
}
//后面这个事我修改的部分。
if ($res)
{
// $new_id = $this->db->Insert_ID();
//return $new_id;
if ($this->need_sync)
{
$this->sync($username, $password);
}
return true;
}
else
{
$this->error = ERR_USERNAME_EXISTS;
//return 0;
return false;
}
31.这一步又有错误了。
根目录下的userb.php和adminb/users.php 两个文件都是需要修改的。也就是双入口登录。
用户单入口注册。 前台注册和后台注册数据库字节不同。需要调整。
这里修改根目录下的userb.php中的所有表为user_pro
32. 复制admin_user为admin_provider表入驻用户直接登录表。
33.修改userb.js中的374行user.php为userb.php
34.取消adminb/includes/init.php 中users_pro的修改。
admin_user需要调整为admin_provider
35.在includes/modules/integrates/integrate.hp中增加一个函数check_user_pro()
检查用户登录名称是否已经存在。指定检查表为$this->table('users_pro').
36.修改userb.php281行的
check_users为check_users_pro;
admin_registered 为 admin_registered_pro
37.新加一个函数 admin_registered_pro
includes/lib_passport.php 第393行。
function admin_registered_pro( $adminname )
{
$res = $GLOBALS['db']->getOne("SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('admin_provider') .
" WHERE user_name = '$adminname'");
return $res;
}
38. 增加函数check_email_pro在729行
include/modeles/integrates/integrate.php
function check_email_pro($email)
{
if (!empty($email))
{
/* 检查email是否重复 */
$sql = "SELECT " . $this->field_id .
" FROM " . $this->table('admin_provider').
" WHERE " . $this->field_email . " = '$email' ";
if ($this->db->getOne($sql, true) > 0)
{
$this->error = ERR_EMAIL_EXISTS;
return true;
}
return false;
}
}
39.修改userb.php 295行 check_email 为 check_email_pro
40.修改 user.php 278行为下面的,三个表都检查没有同名的
if ($user->check_user_pro($username) || $user->check_user($username) || admin_registered_pro($username))
41.修改 user.php 292行为下面的,三个表都检查没有同名的
if ($user->check_email($email) || $user->check_email_pro($email) || $user->check_email_provider($email))
42.修改includes/lib_passport.php第71行
if (admin_registered($username) || admin_registered_users($username) || admin_registered_pro($username))
43.include/modeles/integrates/integrate.php 第331行
修改add_user_pro函数
加入以下一段
/* 插入入驻商户数据库 */
$sqlb = 'INSERT INTO ' . $GLOBALS['ecs']->table('admin_provider') . '(' .
$this->field_name . ', ' . $this->field_email . ', ' . $this->field_pass . ',' . $this->field_reg_date .
' ) VALUES ( ' .
"'$username', '$email', '$password', " . time() . ')';
$resb = $this->db->query($sqlb);
验证插入是否正常
44.admin_provider下增加一个reg_time字段
45.通过vim命令复制userb_passport.dwt文件为ulogin_pro.dwt文件,。然后修改其内容。
再ulogin_pro.dwt文件中加入login.htm的数据元素,并且让ulogin_pro.php提交到privilege.php进行处理。
这个就完成了入驻商户直接登录到管理后台的功能。
把ulogin_pro.php中的所有 userb.php替换为ulogin_pro.php
46.修改 ulogin_pro.php从第304行开始。
languages/zh_cn/ulogin_pro.php语言文件夹下复制userb.php 为ulogin_pro.php
第45步到第46步暂时没有搞通。想建立一个直接登录到后台的这么一个前台程序这个没有高通。暂停。
想其他办法。
47.移动css,采取这个方法把漂亮的界面移动到loginb.htm下。
复制css文件到adminb/
48.修改前台链接文件:themes/meilele/library/page_header.lbi
修改文件内的链接增加一个入驻商城的链接到后台adminb/index.php
需要修改css把前台的顶部文件修改正确.
49.修改后台显示adminb/templates/top.htm
第402行。认证资料,账户设置导航
并增加以下几行,重复的删除掉。
<li><a href="index.php?act=renzheng" target="main-frame">商家认证</a></li>
<li><a href="index.php?act=main" target="main-frame">销售统计</a></li>
<li><a href="privilege.php?act=modif" target="main-frame">账户设置</a></li>
50.编辑start.htm删除多余的信息。只留下订单统计信息
<!-- start goods statistics -->删除掉这一行以下的所有表格的<tr></tr>行
51.找到 adminb/privilege.php文件,找到templates中的模板文件privilege_info.htm
发现pageheader.htm中没有body的结束标签。我找了引用文件。竟然也没有body的结束标签。问题?
注销掉pageheader.htm的以下内容。
<!--
{if $action_link}
<span class="action-span"><a href="{$action_link.href}">{$action_link.text}</a></span>
{/if}
{if $action_link2}
<span class="action-span"><a href="{$action_link2.href}">{$action_link2.text}</a> </span>
{/if}
-->
52.编辑privilege_info.htm取消:设置个人导航,
从第56行{/if}开始,注销掉到100行所有的行<tr></tr>注意不要多注销。
看看结果。用户名到重置都有的。就正确了。
53.复制一个模板文件renzheng.htm ,修改内容。
privilege_info.htm这个文件中的 第115行,var action = "{$action}";
修改过。取消修改了。复原为原始文件。
54.再第158行新加认证
elseif ($_REQUEST['act'] == 'renzheng')
{ $_LANG['ur_config'] = "商家认证";
$smarty->assign('renzhengzd', $_LANG['ur_config']);
//获取支付方式
$smarty->assign('ur_here', $_LANG['ur_config']);
$smarty->display('renzheng.htm');
}
55.密码修改不知道提交到哪里去了。
renzheng.htm
先注销消掉privilege.php的第364行 /*判断管理员是否已经存在 */ Email地址是否有重复的功能
56.注销掉{$lang.shop_guide},在top.htm的201这个一行的<tr></tr>.
57.修改注册成功的最后跳转链接
userb.php 第245行 array($back_act, 'userb.php')替换为'adminb/index.php'
函数主体在lib_main.php中.
58.开发到这里。基本上可以注册和登录了。就是部分页面重复。导致管理员页面看到的还是被修改过的文件。
这里我我就把所有adminb中修改过的文件统一在文件中加一个字母b,加在哪里呢?加在如top.htm就是topb.htm
文件名前缀的最后一个字母
59.开始修改了。管理后台后来统一修改为zd_top.htm,统一增加前缀zd_.
现吧top.htm替换过来.adminb下的top.htm复制为topb.htm.
把原版本top.htm注意不是admin下的。必须要其它新站目录下的。复制过来覆盖掉 top.htm
并修改所有adminb下的文件对topb.htm的引用为topb.htm
吃大亏了。模板文件一担缓存,就是通用的。好多个文件都需要修改。
仔细想想。好像也不用全部重来。只需要把后台管理部分修改久可以。
adminb/templates/topb.htm
adminb/templates/startb.htm
adminb/templates/privilege_infob.htm
adminb/privilegeb.php //php程序好像是可以不用加b字幕。不会缓存。只有模板文件会缓存。
修改完以上几个文件好像就是可以了。
adminb/templates/privilege_listb.htm
60.修改注册到users_pro和admin_provider的新用户。直接只注册到
vsc_users和vsc_admin_user
因为如果新建立表。划分权限和删除,保存无法利用。
61.调整第36步的修改。
if ($user->check_user($username) || admin_registered($username) || $user->check_user_pro($username) || admin_registered_pro($username))
62.撤销第8步的修改。
修改adminb/includes/init.php中的全部admin_provider为admin_user
63
修改/userb.php中的全部users_pro为users
64.重新修改第30步.
修改include/modules/integrates/integrate.php中的add_user_pro()的表调用users_pro为users
add_user_pro()函数部分的修改。admin_provider为admin_user
65.修改adminb/privilege.php
admin_provider 修改为 admin_user
*****
66.取消第48步的修改,把商城入驻的链接添加到底部。
(修改前台链接文件:themes/meilele/library/page_header.lbi
修改文件内的链接增加一个入驻商城的链接到后台adminb/index.php
需要修改css把前台的顶部文件修改正确.)
67.修改userb.php登录界面分买家登录和商家登录。
修改userb_passport.dwt文件。增加一个商户登录入口到注册链接前面。
sites/a8vsctest/themes/meilele/userb_passport.dwt
68.修改adminb/privilege.php,和修改admin/privilege.php代码一样。
第332行 代码:
$ec_salt=rand(1,9999);
$password = !empty($_POST['new_password']) ? ", password = '".md5(md5($_POST['new_password']).$ec_salt)."'" : '';
插入这两行到
include/modeles/integrates/integrateb.php 第331行
69.修改入驻注册时密码增加随机码ec_salt
修改以下部分插入数据库时的代码。
在add_user_pro()函数的最前面,现吧password的值付给passwordb,并定义随机编码.
$passwordb = $password;
$ec_salt=rand(1,9999);
然后对passwordb进行加密
$sqlb = 'INSERT INTO ' . $GLOBALS['ecs']->table('admin_user') . '(' .
$this->field_name . ', ' . $this->field_email . ', ' . $this->field_pass . ','.'ec_salt'.',' . $this->field_reg_date .
') VALUES ( ' .
"'$username', '$email', '$passwordb', '$ec_salt', " . time() . ')';
测试后成功搞定。
70.添加comapny_name参数到admin_user表中.和admin_provider中.char(30).
第77行includes/lib_passport.php 调用了add_user_pro函数.只带了3个参数.
为了避免错误,我们再定义一个4个参数的add_user_pro_new函数.用于插入新注册数据的数据。
add_user_pro_new函数包含好company_name的值。
71.在includes/lib_passport.php
新增加一个registerb函数
修改第187行的registerb函数中的add_user_pro为add_user_pro_new,添加$companyname变量到形参中.
include/modules/integrates/integrate.php中.
includes/lib_passport.php
以上两个文件的函数我们读修改了变量companyname,现在我们来测试一把。注册, 没有看到值,哪里错了呢。
原来是userb.php 调用函数还没有修改过来.
72.修改第208行userb.php register为registerb,并加上形式参数$companyname.
再测试。ok啦。
73.下面来开始分单的功能.
现在数据库中goods表最后添加6个字段
用户登录companyid, char(30)
随机编码ucode, int(5) 这里的随机编码需要等于admin_user中的ec_salt,验证加强.
验证码ucheck, char(10)
发布审核scheck, smallint(1) 默认都为-1
上架状态upstate, smallint(1) 默认都为-1
下架状态downstate。smallint(1)默认都为-1
74.
includes/fckeditor/fckeditor.php;// 包含 html editor 类文件
75.复制goods.php为新的goodsb.php
数据插入在827行。我们需要吧73步添加的信息插入到goods表中.
76. // 添加入驻商分单资料goodsb.php中添加105行的内容。act=‘add’的最前面.
第850行插入数据companied,code,if和else两个都需要修改哦。
测试,发现数据库没有成功添加商家信息
77.在插入商品485行加入 后来这里添加了一个sellercode的插入,因为ec_salt可能改变所以这里改用ucode和sellercode
// 添加入驻商分单资料
$companyid = $_SESSION['admin_name'];
$user_namec = "";
//$ec_saltc = "";//后来取消
$ucode = "";// 后来加入
$sellercode = "";// 后来加入
$sqlb = "SELECT user_name,ec_salt,ucode,sellercode" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
****
/* 入库 */878行修改插入数据库的字段中增加ucode,sellercode
if ($is_insert)
更新了integrate.php
goods.php
index.php
privilege.php
新建立了zd_about_us.htm
zd_pageheader.htm
zd_top.htm
78.
$sqlb = "SELECT user_name,ec_salt" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
获取admin用户名失败。
搞了好久。不知道$_SESSION['admin_id’]这个只是id。
user_name对应的是$_SESSION['admin_name’].猜对了很爽啊!!!
成功解决了从数据库选择数据,插入数据的过程。
79.修改adminb/index.php中的admin_provider为admin_user
80.
suppliers_list_info函数定义在adminb/includes/lib_main.php中
suppliers_list_name函数定义在adminb/includes/lib_main.php中
lib_main.php添加suppliers_list_name_pro()函数867行
函数顶部添加以下代码:
$companyid = $_SESSION['admin_name'];
$user_namec = "";
$ec_saltc = "";
$sqlb = "SELECT user_name,ec_salt" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
/* 查询 */修改为
$suppliers_list = suppliers_list_info_pro(" is_check = 1 and companyid ='$user_namec' and ucode='$ec_saltc' ");
81.添加suppliers_list_info_pro函数,复制suppliers_list_info
函数体没有做修改,只是函数名称修改了。
对suppliers表增加companyid char(30)和ucode int(5)字段
82.adminb/goods.php的第30行添加
以下代码:
//这里是入驻商分单的代码
$companyid = $_SESSION['admin_name'];
$user_namec = "";
$ec_saltc = "";
$sqlb = "SELECT user_name,ec_salt" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
//这里是入驻商分单的代码
83.修goods_list函数,函数定义在adminb/includes/lib_goods.php
的第812行.函数体最前面添加以下代码:局部变量获得数据库的值.
$companyid = $_SESSION['admin_name'];
$user_namec = "";
$ec_saltc = "";
$sqlb = "SELECT user_name,ec_salt" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
在函数题的/* 记录总数 */的sql语句执行之前插入以下一句话。
//这里是入驻商分单的代码
$where .= " and companyid = '$user_namec' and ucode='$ec_saltc' ";
//这里是入驻商分单的代码
/* 记录总数 */
以下函数做了变更goods.php中的
//$suppliers_list_name = suppliers_list_name_pro();
$suppliers_list_name = suppliers_list_name_pro(" is_check = 1 and companyid ='$user_namec' and ucode='$ec_saltc' ");
84.lib_main.phpz中的函数修改为以下的形式.
function suppliers_list_name_pro($conditions = '')
{
/* 查询 */
$where = '';
if (!empty($conditions))
{
$where .= 'WHERE ';
$where .= $conditions;
}
//$suppliers_list = suppliers_list_info_pro(' is_check = 1 ');
$suppliers_list = suppliers_list_info_pro($where);
//$suppliers_list = suppliers_list_info_pro(" is_check = 1 and companyid ='$user_namec' and ucode='$ec_saltc' ");
/* 供货商名字 */
$suppliers_name = array();
if (count($suppliers_list) > 0)
{
foreach ($suppliers_list as $suppliers)
{
$suppliers_name[$suppliers['suppliers_id']] = $suppliers['suppliers_name'];
}
}
return $suppliers_name;
}
85.adminb/includes/lib_goods.php的第946行
//这里是入驻商分单的代码 全局变量获得数据库值
//这里是入驻商分单的代码 全局变量获得值
$companyid = $_SESSION['admin_name'];
$user_namec = "";
$ec_saltc = "";
$sqlb = "SELECT companyid,ucode FROM " .$GLOBALS['ecs']->table('goods'). " WHERE companyid='$companyid' ";
//$resb = $GLOBALS['db']->getOne($sqlb);
//$resb = $GLOBALS['db']->getRow($sqlb);
if($resb = $GLOBALS['db']->getRow($sqlb))
{
$user_namec = $resb['companyid'];
$ec_saltc = $resb['ucode'];
}
//
拼接一条经典的where 语句
//这里是入驻商分单的代码
$where .= " and companyid = '".$user_namec."' and ucode='".$ec_saltc."' ";
//这里是入驻商分单的代码
86.
新建立goods_searchb.htm 添加入驻上companyid和ucode过滤条件。我测试的已经过滤了。暂时没有修改
87.修改入驻商后台菜单功能.
88.admin_user表中添加一个sellercode字段char(8)。用于订单区别验证
在goods表中也添加一个sellercode字段.入驻注册后一直不变的是companyid和sellercode字段。唯一区分各个卖家。
89.检查前台订单flow.php找到订单保存函数。往订单中加入companyid和sellercode的值
cart表中有一个goods_id通过这个id值来找到goods表中的入驻商家id和sellercode
flow.php 2065行修改insert into 功能添加两个字段.
90.前台购买运费无法显示问题修复.
然后打开模板文件目录下的flow.dwt文件
搜索
<div class="flowBox">
<h6><span>{$lang.shipping_method}</span></h6>
修改为
<div class="flowBox" style="display:none">
<h6><span>{$lang.shipping_method}</span></h6>
搜索
<input name="shipping" type="radio" value="{$shipping.shipping_id}" {if $order.shipping_id eq $shipping.shipping_id}checked="true"{/if} supportCod="{$shipping.support_cod}" insure="{$shipping.insure}" οnlοad="selectShipping(this)" checked="checked" />
修改为
<input id="shipping" name="shipping" type="radio" value="{$shipping.shipping_id}" {if $order.shipping_id eq $shipping.shipping_id}checked="true"{/if} supportCod="{$shipping.support_cod}" insure="{$shipping.insure}" οnlοad="selectShipping(this)" checked="checked" />
修改完成之后 在文件底部加入
<script>
οnlοad=selectShipping(document.getElementById('shipping'));
</script>
flow_order_info()函数在includes/lib_order.php文件的第1870行。如果有代码插入。可能行位有变动。
function last_shipping_and_payment()这个函数也可以修改shipping_id 和 pay_id的默认值为数据库表总对应的快递盒支付方式的表id值.我的是快递10.支付宝1
测试了好多次都没有出来。我吧数据库order_info里面的shipping_id改为10pay_id改为1。是因为对应的发货付款的表id是那个数.
91.测试mail函数服务器
<?php
if (function_exists('mail')) {
echo "mail functions are available.<br />\n";
} else {
echo "mail functions are not available.<br />\n";
}
?>
92.在order_goods后面加两个字段companyid 和sellercode
在order_info后面添加两个字段companyid 和sellercode
修改order.php中的函数order_list(),为order_list($sellerid,$sellercode);
在第4881行添加
$where .= " AND o.companyid = '".$sellerid."' AND o.sellercode='".$sellercode. "' ";
93.order.php 中act= list 第60行添加一下代码:
//商城分单代码
$companyid = $_SESSION['admin_name'];
$sellerid = "";
$sellerco = "";
$sqlb = "SELECT user_name,sellercode" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$sellerid = $row['user_name'];
$sellerco = $row['sellercode'];
}
else{
}
//商城分单代码
修改函数的参数为
order_list($sellerid,$sellerco);
94.128行.修改订单管理的查询功能.
order_list($sellerid,$sellerco);和函数
ecs_header("Location: flow.php?step=checkout\n");跳转链接
ecs_header("Location: flow.php?step=checkout\n");跳转链接
95.
在2049行.//order_info的修改
/* 插入订单表 */
$error_no = 0;
do
{
$order['order_sn'] = get_order_sn(); //获取新订单号
$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT');
$error_no = $GLOBALS['db']->errno();
if ($error_no > 0 && $error_no != 1062)
{
die($GLOBALS['db']->errorMsg());
}
}
这里有一点绕弯,goods表中有companid和sellercode.在order_goods表中有goods_id可以对应的查询出goods中对应的companyid和sellercode
另外 order_goods表中有companid和sellercode后.在order_info表中的order_id可以对应的查询出order_goods中对应的companyid和sellercode
然后原子操作保存companyid和sellercode到order_info表中。
96..2065行 'order_goods'
//更新分单编号
//更新分单编号
$goods_idb ="";
$sqlb = " SELECT goods_id ".
" FROM " .$ecs->table('cart') .
" WHERE session_id = '".SESS_ID."' AND rec_type = '".$flow_type."' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$goods_idb = $row['goods_id'];
//获得了goods_id把对应的companyid 和sellercode查找出来,update到order_info表
$sqlc = "SELECT companyid,sellercode" .
" FROM " . $ecs->table('goods') .
" WHERE goods_id = '".$goods_idb."' ";
$resc = $db->query($sqlc);
if($rowc = $db->fetchRow($resc))
{
$companyid = $rowc['companyid'];
$sellercode = $rowc['sellercode'];
//查找成功,update到order_info表
$sqlu = "update " . $ecs->table('order_info') .
" SET companyid='".$companyid."' , sellercode='".$sellercode."' WHERE order_id = '".$new_order_id."' ";
$db->query($sqlu);
//
}
else{
}
//
}else{
}
//到此步分单的功能基本完成。添加商品,订单查询。分开了。
97..
/* session 不存在,检查cookie */
if (!empty($_COOKIE['ECS']['user_id']) && !empty($_COOKIE['ECS']['password']))
{
// 找到了cookie, 验证cookie信息
$sql = 'SELECT user_id, user_name, password ' .
' FROM ' .$ecs->table('users') .
" WHERE user_id = '" . intval($_COOKIE['ECS']['user_id']) . "' AND password = '" .$_COOKIE['ECS']['password']. "'";
$row = $db->GetRow($sql);
if (!$row)
{
// 没有找到这个记录
$time = time() - 3600;
setcookie("ECS[user_id]", '', $time, '/');
setcookie("ECS[password]", '', $time, '/');
}
else
{
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['user_name'] = $row['user_name'];
update_user_info();
}
}
if (isset($smarty))
{
$smarty->assign('ecs_session', $_SESSION);
}
/Users/applezheng/sites/a8vsctest/themes/meilele
跟新的时候需要修改data/config.php 和data/configb.php数据库连接密码信息等。注意不可以复盖。只能是修改哦。里面的东西不太一样。否则启动步了。
includes/inc_constant.php定义了一些常量
admin中的esc_salt是做什么用的,我测试出来时检验密码的。如果复制md5加密后。必须要把这个字段的值也修改为一样。就可以登录了。
1.复制admin 为adminb
2.复制data/config.php,修改data/configb.php
configb.php 中的注释掉ADMIN_PATH行,重新定义为ADMIN_PATH如下
//define('ADMIN_PATH','admin');
define('ADMIN_PATH','adminb');
3.修改adminb中的include/init.php中的
define('ADMIN_PATH','admin'); 为
define('ADMIN_PATH','adminb');
4.访问后台成功。
5.再数据库内复制vsc_admin_user为vsc_admin_provider.
6.前台的模板放在themes/meilele/目录下 .dwt文件
7.后台的模板放在adminb/templates/目录下 .htm.php 文件.
8.修改init.php中的admin_users为users_pro表
并在users_pro中password字段后添加1个字段;action_list text,这个字段好像不用加。
9.修改index.php中的admin_users为admin_provider表
10. privilege.php
找到 privilege.php 修改数据表 admin_user 为我们自己的新表。users_pro
{找到 privilege.php 修改数据表 admin_user 31行为我们自己的新表。admin_provider
替换掉所有的admin_user 为 admin_provider
再替换掉2处init.php中的的admin_user 为 admin_provider
再替换掉3处init.php中的的admin_user 为 admin_provider}
11.登录测试一下。可以了进入adminb目录了。
12.然后开始创建我们自己的登录页面。
13.复制user.php 为uesrb.php (或者是provider.php这个事后来再做更新版本)
14.建立供货商注册页面。复制meilele模板下的user_passport.dwt为userb_passport.dwt
15.建立底部链接。修改数据库friend_link
复制第三行。修改有量的名称和地址对应。增加我们的地址为sign.html
16.修改userb_passport.dwt 和userb.php相互兼容.
17.报错没有zh_cn文件。复制zh_cn目录下的缺少文件。.php替换为*b.php
18.数据库复制一个数据。vsc_users 为vsc_users_pro
19.修改注册用户的数据保存界面为vsc_users_pro.这一步没有完成。在后面步骤完成后才能完成。
20.复制/js/user.js 为/userb.js放在user.js相同目录下。
修改用户名检测is_registered()函数为userb.php
添加变量如:function register()
{
var frm = document.forms['formUser'];
var username = Utils.trim(frm.elements['username'].value);
var email = frm.elements['email'].value;
var password = Utils.trim(frm.elements['password'].value);
var confirm_password = Utils.trim(frm.elements['confirm_password'].value);
var tel = Utils.trim(frm.elements['tel'].value);
var mobile = Utils.trim(frm.elements['mobile'].value);
var address = Utils.trim(frm.elements['address'].value);
21.修改userb.php中调用register()函数的参数。
如果不需要对增加的input数据进行检测。我认为可以不用修改register()函数。
elseif ($action == 'act_register')
{
include_once(ROOT_PATH . 'includes/lib_passport.php');
$username = isset($_POST['username']) ? trim($_POST['username']) : '';
$password = isset($_POST['password']) ? trim($_POST['password']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$tel = isset($_POST['tel']) ? trim($_POST['tel']) : '';
$mobile = isset($_POST['mobile']) ? trim($_POST['mobile']) : '';
$address = isset($_POST['address']) ? trim($_POST['address']) : '';
22.模板文件里面相对于21步骤需要添加相关的<input>数据代码。
sites/a8vsctest/themes/meilele/userb_passport.dwt 用vim 编辑器编辑。
23.修改includes/lib_passport.php 这一步的修改后来取消了。删除了$username变量的添加。没有做。
添加需要的字段。如下:register()函数添加形参变量。
function register($username, $password, $email, $tel, $mobile, $address)
{
第26步骤暂时不做。直接到第27步。这个文件的调用设计范围太宽。modules下的模版文件不要轻易修改.
只好在integrates.php 中添加函数了。
26.复制include/modules/integrates/integrates.php
命名为integratesb.php 然后对integratesb.php文件中的函数加_pro
add_user 变为 add_user_pro
为了考虑函数的兼容性,以及和整体后台的兼容性。后续的修改需要特别小心了。搞个东东还真不容易。
27.在include/modules/integrates/integrates.php中添加我们需要的函数。331行
a.添加一个新的入驻商城函数function add_user_pro(,,,)
28.这一步后来也没有了。
29.可以吧include/lib_passport.php复制一份 修改为lib_passportb.php 修改userb.php中对lib_passportb.php的引用。
或者可以直接修改lib_passport.php中的add_user()函数为add_user_pro()第77行。
我这里是跳过了第29步。
30.修改include/modules/integrates/integrate.php中的add_user_pro()的表调用users为users_pro
add_user_pro()函数部分的修改。
//下面事原始的部分。
if ($res)
{
$new_id = $this->db->Insert_ID();
return $new_id;
}
else
{
$this->error = ERR_USERNAME_EXISTS;
return 0;
}
//后面这个事我修改的部分。
if ($res)
{
// $new_id = $this->db->Insert_ID();
//return $new_id;
if ($this->need_sync)
{
$this->sync($username, $password);
}
return true;
}
else
{
$this->error = ERR_USERNAME_EXISTS;
//return 0;
return false;
}
31.这一步又有错误了。
根目录下的userb.php和adminb/users.php 两个文件都是需要修改的。也就是双入口登录。
用户单入口注册。 前台注册和后台注册数据库字节不同。需要调整。
这里修改根目录下的userb.php中的所有表为user_pro
32. 复制admin_user为admin_provider表入驻用户直接登录表。
33.修改userb.js中的374行user.php为userb.php
34.取消adminb/includes/init.php 中users_pro的修改。
admin_user需要调整为admin_provider
35.在includes/modules/integrates/integrate.hp中增加一个函数check_user_pro()
检查用户登录名称是否已经存在。指定检查表为$this->table('users_pro').
36.修改userb.php281行的
check_users为check_users_pro;
admin_registered 为 admin_registered_pro
37.新加一个函数 admin_registered_pro
includes/lib_passport.php 第393行。
function admin_registered_pro( $adminname )
{
$res = $GLOBALS['db']->getOne("SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('admin_provider') .
" WHERE user_name = '$adminname'");
return $res;
}
38. 增加函数check_email_pro在729行
include/modeles/integrates/integrate.php
function check_email_pro($email)
{
if (!empty($email))
{
/* 检查email是否重复 */
$sql = "SELECT " . $this->field_id .
" FROM " . $this->table('admin_provider').
" WHERE " . $this->field_email . " = '$email' ";
if ($this->db->getOne($sql, true) > 0)
{
$this->error = ERR_EMAIL_EXISTS;
return true;
}
return false;
}
}
39.修改userb.php 295行 check_email 为 check_email_pro
40.修改 user.php 278行为下面的,三个表都检查没有同名的
if ($user->check_user_pro($username) || $user->check_user($username) || admin_registered_pro($username))
41.修改 user.php 292行为下面的,三个表都检查没有同名的
if ($user->check_email($email) || $user->check_email_pro($email) || $user->check_email_provider($email))
42.修改includes/lib_passport.php第71行
if (admin_registered($username) || admin_registered_users($username) || admin_registered_pro($username))
43.include/modeles/integrates/integrate.php 第331行
修改add_user_pro函数
加入以下一段
/* 插入入驻商户数据库 */
$sqlb = 'INSERT INTO ' . $GLOBALS['ecs']->table('admin_provider') . '(' .
$this->field_name . ', ' . $this->field_email . ', ' . $this->field_pass . ',' . $this->field_reg_date .
' ) VALUES ( ' .
"'$username', '$email', '$password', " . time() . ')';
$resb = $this->db->query($sqlb);
验证插入是否正常
44.admin_provider下增加一个reg_time字段
45.通过vim命令复制userb_passport.dwt文件为ulogin_pro.dwt文件,。然后修改其内容。
再ulogin_pro.dwt文件中加入login.htm的数据元素,并且让ulogin_pro.php提交到privilege.php进行处理。
这个就完成了入驻商户直接登录到管理后台的功能。
把ulogin_pro.php中的所有 userb.php替换为ulogin_pro.php
46.修改 ulogin_pro.php从第304行开始。
languages/zh_cn/ulogin_pro.php语言文件夹下复制userb.php 为ulogin_pro.php
第45步到第46步暂时没有搞通。想建立一个直接登录到后台的这么一个前台程序这个没有高通。暂停。
想其他办法。
47.移动css,采取这个方法把漂亮的界面移动到loginb.htm下。
复制css文件到adminb/
48.修改前台链接文件:themes/meilele/library/page_header.lbi
修改文件内的链接增加一个入驻商城的链接到后台adminb/index.php
需要修改css把前台的顶部文件修改正确.
49.修改后台显示adminb/templates/top.htm
第402行。认证资料,账户设置导航
并增加以下几行,重复的删除掉。
<li><a href="index.php?act=renzheng" target="main-frame">商家认证</a></li>
<li><a href="index.php?act=main" target="main-frame">销售统计</a></li>
<li><a href="privilege.php?act=modif" target="main-frame">账户设置</a></li>
50.编辑start.htm删除多余的信息。只留下订单统计信息
<!-- start goods statistics -->删除掉这一行以下的所有表格的<tr></tr>行
51.找到 adminb/privilege.php文件,找到templates中的模板文件privilege_info.htm
发现pageheader.htm中没有body的结束标签。我找了引用文件。竟然也没有body的结束标签。问题?
注销掉pageheader.htm的以下内容。
<!--
{if $action_link}
<span class="action-span"><a href="{$action_link.href}">{$action_link.text}</a></span>
{/if}
{if $action_link2}
<span class="action-span"><a href="{$action_link2.href}">{$action_link2.text}</a> </span>
{/if}
-->
52.编辑privilege_info.htm取消:设置个人导航,
从第56行{/if}开始,注销掉到100行所有的行<tr></tr>注意不要多注销。
看看结果。用户名到重置都有的。就正确了。
53.复制一个模板文件renzheng.htm ,修改内容。
privilege_info.htm这个文件中的 第115行,var action = "{$action}";
修改过。取消修改了。复原为原始文件。
54.再第158行新加认证
elseif ($_REQUEST['act'] == 'renzheng')
{ $_LANG['ur_config'] = "商家认证";
$smarty->assign('renzhengzd', $_LANG['ur_config']);
//获取支付方式
$smarty->assign('ur_here', $_LANG['ur_config']);
$smarty->display('renzheng.htm');
}
55.密码修改不知道提交到哪里去了。
renzheng.htm
先注销消掉privilege.php的第364行 /*判断管理员是否已经存在 */ Email地址是否有重复的功能
56.注销掉{$lang.shop_guide},在top.htm的201这个一行的<tr></tr>.
57.修改注册成功的最后跳转链接
userb.php 第245行 array($back_act, 'userb.php')替换为'adminb/index.php'
函数主体在lib_main.php中.
58.开发到这里。基本上可以注册和登录了。就是部分页面重复。导致管理员页面看到的还是被修改过的文件。
这里我我就把所有adminb中修改过的文件统一在文件中加一个字母b,加在哪里呢?加在如top.htm就是topb.htm
文件名前缀的最后一个字母
59.开始修改了。管理后台后来统一修改为zd_top.htm,统一增加前缀zd_.
现吧top.htm替换过来.adminb下的top.htm复制为topb.htm.
把原版本top.htm注意不是admin下的。必须要其它新站目录下的。复制过来覆盖掉 top.htm
并修改所有adminb下的文件对topb.htm的引用为topb.htm
吃大亏了。模板文件一担缓存,就是通用的。好多个文件都需要修改。
仔细想想。好像也不用全部重来。只需要把后台管理部分修改久可以。
adminb/templates/topb.htm
adminb/templates/startb.htm
adminb/templates/privilege_infob.htm
adminb/privilegeb.php //php程序好像是可以不用加b字幕。不会缓存。只有模板文件会缓存。
修改完以上几个文件好像就是可以了。
adminb/templates/privilege_listb.htm
60.修改注册到users_pro和admin_provider的新用户。直接只注册到
vsc_users和vsc_admin_user
因为如果新建立表。划分权限和删除,保存无法利用。
61.调整第36步的修改。
if ($user->check_user($username) || admin_registered($username) || $user->check_user_pro($username) || admin_registered_pro($username))
62.撤销第8步的修改。
修改adminb/includes/init.php中的全部admin_provider为admin_user
63
修改/userb.php中的全部users_pro为users
64.重新修改第30步.
修改include/modules/integrates/integrate.php中的add_user_pro()的表调用users_pro为users
add_user_pro()函数部分的修改。admin_provider为admin_user
65.修改adminb/privilege.php
admin_provider 修改为 admin_user
*****
66.取消第48步的修改,把商城入驻的链接添加到底部。
(修改前台链接文件:themes/meilele/library/page_header.lbi
修改文件内的链接增加一个入驻商城的链接到后台adminb/index.php
需要修改css把前台的顶部文件修改正确.)
67.修改userb.php登录界面分买家登录和商家登录。
修改userb_passport.dwt文件。增加一个商户登录入口到注册链接前面。
sites/a8vsctest/themes/meilele/userb_passport.dwt
68.修改adminb/privilege.php,和修改admin/privilege.php代码一样。
第332行 代码:
$ec_salt=rand(1,9999);
$password = !empty($_POST['new_password']) ? ", password = '".md5(md5($_POST['new_password']).$ec_salt)."'" : '';
插入这两行到
include/modeles/integrates/integrateb.php 第331行
69.修改入驻注册时密码增加随机码ec_salt
修改以下部分插入数据库时的代码。
在add_user_pro()函数的最前面,现吧password的值付给passwordb,并定义随机编码.
$passwordb = $password;
$ec_salt=rand(1,9999);
然后对passwordb进行加密
$sqlb = 'INSERT INTO ' . $GLOBALS['ecs']->table('admin_user') . '(' .
$this->field_name . ', ' . $this->field_email . ', ' . $this->field_pass . ','.'ec_salt'.',' . $this->field_reg_date .
') VALUES ( ' .
"'$username', '$email', '$passwordb', '$ec_salt', " . time() . ')';
测试后成功搞定。
70.添加comapny_name参数到admin_user表中.和admin_provider中.char(30).
第77行includes/lib_passport.php 调用了add_user_pro函数.只带了3个参数.
为了避免错误,我们再定义一个4个参数的add_user_pro_new函数.用于插入新注册数据的数据。
add_user_pro_new函数包含好company_name的值。
71.在includes/lib_passport.php
新增加一个registerb函数
修改第187行的registerb函数中的add_user_pro为add_user_pro_new,添加$companyname变量到形参中.
include/modules/integrates/integrate.php中.
includes/lib_passport.php
以上两个文件的函数我们读修改了变量companyname,现在我们来测试一把。注册, 没有看到值,哪里错了呢。
原来是userb.php 调用函数还没有修改过来.
72.修改第208行userb.php register为registerb,并加上形式参数$companyname.
再测试。ok啦。
73.下面来开始分单的功能.
现在数据库中goods表最后添加6个字段
用户登录companyid, char(30)
随机编码ucode, int(5) 这里的随机编码需要等于admin_user中的ec_salt,验证加强.
验证码ucheck, char(10)
发布审核scheck, smallint(1) 默认都为-1
上架状态upstate, smallint(1) 默认都为-1
下架状态downstate。smallint(1)默认都为-1
74.
includes/fckeditor/fckeditor.php;// 包含 html editor 类文件
75.复制goods.php为新的goodsb.php
数据插入在827行。我们需要吧73步添加的信息插入到goods表中.
76. // 添加入驻商分单资料goodsb.php中添加105行的内容。act=‘add’的最前面.
第850行插入数据companied,code,if和else两个都需要修改哦。
测试,发现数据库没有成功添加商家信息
77.在插入商品485行加入 后来这里添加了一个sellercode的插入,因为ec_salt可能改变所以这里改用ucode和sellercode
// 添加入驻商分单资料
$companyid = $_SESSION['admin_name'];
$user_namec = "";
//$ec_saltc = "";//后来取消
$ucode = "";// 后来加入
$sellercode = "";// 后来加入
$sqlb = "SELECT user_name,ec_salt,ucode,sellercode" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
****
/* 入库 */878行修改插入数据库的字段中增加ucode,sellercode
if ($is_insert)
更新了integrate.php
goods.php
index.php
privilege.php
新建立了zd_about_us.htm
zd_pageheader.htm
zd_top.htm
78.
$sqlb = "SELECT user_name,ec_salt" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
获取admin用户名失败。
搞了好久。不知道$_SESSION['admin_id’]这个只是id。
user_name对应的是$_SESSION['admin_name’].猜对了很爽啊!!!
成功解决了从数据库选择数据,插入数据的过程。
79.修改adminb/index.php中的admin_provider为admin_user
80.
suppliers_list_info函数定义在adminb/includes/lib_main.php中
suppliers_list_name函数定义在adminb/includes/lib_main.php中
lib_main.php添加suppliers_list_name_pro()函数867行
函数顶部添加以下代码:
$companyid = $_SESSION['admin_name'];
$user_namec = "";
$ec_saltc = "";
$sqlb = "SELECT user_name,ec_salt" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
/* 查询 */修改为
$suppliers_list = suppliers_list_info_pro(" is_check = 1 and companyid ='$user_namec' and ucode='$ec_saltc' ");
81.添加suppliers_list_info_pro函数,复制suppliers_list_info
函数体没有做修改,只是函数名称修改了。
对suppliers表增加companyid char(30)和ucode int(5)字段
82.adminb/goods.php的第30行添加
以下代码:
//这里是入驻商分单的代码
$companyid = $_SESSION['admin_name'];
$user_namec = "";
$ec_saltc = "";
$sqlb = "SELECT user_name,ec_salt" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
//这里是入驻商分单的代码
83.修goods_list函数,函数定义在adminb/includes/lib_goods.php
的第812行.函数体最前面添加以下代码:局部变量获得数据库的值.
$companyid = $_SESSION['admin_name'];
$user_namec = "";
$ec_saltc = "";
$sqlb = "SELECT user_name,ec_salt" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$user_namec = $row['user_name'];
$ec_saltc = $row['ec_salt'];
}
else{
}
在函数题的/* 记录总数 */的sql语句执行之前插入以下一句话。
//这里是入驻商分单的代码
$where .= " and companyid = '$user_namec' and ucode='$ec_saltc' ";
//这里是入驻商分单的代码
/* 记录总数 */
以下函数做了变更goods.php中的
//$suppliers_list_name = suppliers_list_name_pro();
$suppliers_list_name = suppliers_list_name_pro(" is_check = 1 and companyid ='$user_namec' and ucode='$ec_saltc' ");
84.lib_main.phpz中的函数修改为以下的形式.
function suppliers_list_name_pro($conditions = '')
{
/* 查询 */
$where = '';
if (!empty($conditions))
{
$where .= 'WHERE ';
$where .= $conditions;
}
//$suppliers_list = suppliers_list_info_pro(' is_check = 1 ');
$suppliers_list = suppliers_list_info_pro($where);
//$suppliers_list = suppliers_list_info_pro(" is_check = 1 and companyid ='$user_namec' and ucode='$ec_saltc' ");
/* 供货商名字 */
$suppliers_name = array();
if (count($suppliers_list) > 0)
{
foreach ($suppliers_list as $suppliers)
{
$suppliers_name[$suppliers['suppliers_id']] = $suppliers['suppliers_name'];
}
}
return $suppliers_name;
}
85.adminb/includes/lib_goods.php的第946行
//这里是入驻商分单的代码 全局变量获得数据库值
//这里是入驻商分单的代码 全局变量获得值
$companyid = $_SESSION['admin_name'];
$user_namec = "";
$ec_saltc = "";
$sqlb = "SELECT companyid,ucode FROM " .$GLOBALS['ecs']->table('goods'). " WHERE companyid='$companyid' ";
//$resb = $GLOBALS['db']->getOne($sqlb);
//$resb = $GLOBALS['db']->getRow($sqlb);
if($resb = $GLOBALS['db']->getRow($sqlb))
{
$user_namec = $resb['companyid'];
$ec_saltc = $resb['ucode'];
}
//
拼接一条经典的where 语句
//这里是入驻商分单的代码
$where .= " and companyid = '".$user_namec."' and ucode='".$ec_saltc."' ";
//这里是入驻商分单的代码
86.
新建立goods_searchb.htm 添加入驻上companyid和ucode过滤条件。我测试的已经过滤了。暂时没有修改
87.修改入驻商后台菜单功能.
88.admin_user表中添加一个sellercode字段char(8)。用于订单区别验证
在goods表中也添加一个sellercode字段.入驻注册后一直不变的是companyid和sellercode字段。唯一区分各个卖家。
89.检查前台订单flow.php找到订单保存函数。往订单中加入companyid和sellercode的值
cart表中有一个goods_id通过这个id值来找到goods表中的入驻商家id和sellercode
flow.php 2065行修改insert into 功能添加两个字段.
90.前台购买运费无法显示问题修复.
然后打开模板文件目录下的flow.dwt文件
搜索
<div class="flowBox">
<h6><span>{$lang.shipping_method}</span></h6>
修改为
<div class="flowBox" style="display:none">
<h6><span>{$lang.shipping_method}</span></h6>
搜索
<input name="shipping" type="radio" value="{$shipping.shipping_id}" {if $order.shipping_id eq $shipping.shipping_id}checked="true"{/if} supportCod="{$shipping.support_cod}" insure="{$shipping.insure}" οnlοad="selectShipping(this)" checked="checked" />
修改为
<input id="shipping" name="shipping" type="radio" value="{$shipping.shipping_id}" {if $order.shipping_id eq $shipping.shipping_id}checked="true"{/if} supportCod="{$shipping.support_cod}" insure="{$shipping.insure}" οnlοad="selectShipping(this)" checked="checked" />
修改完成之后 在文件底部加入
<script>
οnlοad=selectShipping(document.getElementById('shipping'));
</script>
flow_order_info()函数在includes/lib_order.php文件的第1870行。如果有代码插入。可能行位有变动。
function last_shipping_and_payment()这个函数也可以修改shipping_id 和 pay_id的默认值为数据库表总对应的快递盒支付方式的表id值.我的是快递10.支付宝1
测试了好多次都没有出来。我吧数据库order_info里面的shipping_id改为10pay_id改为1。是因为对应的发货付款的表id是那个数.
91.测试mail函数服务器
<?php
if (function_exists('mail')) {
echo "mail functions are available.<br />\n";
} else {
echo "mail functions are not available.<br />\n";
}
?>
92.在order_goods后面加两个字段companyid 和sellercode
在order_info后面添加两个字段companyid 和sellercode
修改order.php中的函数order_list(),为order_list($sellerid,$sellercode);
在第4881行添加
$where .= " AND o.companyid = '".$sellerid."' AND o.sellercode='".$sellercode. "' ";
93.order.php 中act= list 第60行添加一下代码:
//商城分单代码
$companyid = $_SESSION['admin_name'];
$sellerid = "";
$sellerco = "";
$sqlb = "SELECT user_name,sellercode" .
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '$companyid' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$sellerid = $row['user_name'];
$sellerco = $row['sellercode'];
}
else{
}
//商城分单代码
修改函数的参数为
order_list($sellerid,$sellerco);
94.128行.修改订单管理的查询功能.
order_list($sellerid,$sellerco);和函数
ecs_header("Location: flow.php?step=checkout\n");跳转链接
ecs_header("Location: flow.php?step=checkout\n");跳转链接
95.
在2049行.//order_info的修改
/* 插入订单表 */
$error_no = 0;
do
{
$order['order_sn'] = get_order_sn(); //获取新订单号
$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT');
$error_no = $GLOBALS['db']->errno();
if ($error_no > 0 && $error_no != 1062)
{
die($GLOBALS['db']->errorMsg());
}
}
这里有一点绕弯,goods表中有companid和sellercode.在order_goods表中有goods_id可以对应的查询出goods中对应的companyid和sellercode
另外 order_goods表中有companid和sellercode后.在order_info表中的order_id可以对应的查询出order_goods中对应的companyid和sellercode
然后原子操作保存companyid和sellercode到order_info表中。
96..2065行 'order_goods'
//更新分单编号
//更新分单编号
$goods_idb ="";
$sqlb = " SELECT goods_id ".
" FROM " .$ecs->table('cart') .
" WHERE session_id = '".SESS_ID."' AND rec_type = '".$flow_type."' ";
$resb = $db->query($sqlb);
if($row = $db->fetchRow($resb))
{
$goods_idb = $row['goods_id'];
//获得了goods_id把对应的companyid 和sellercode查找出来,update到order_info表
$sqlc = "SELECT companyid,sellercode" .
" FROM " . $ecs->table('goods') .
" WHERE goods_id = '".$goods_idb."' ";
$resc = $db->query($sqlc);
if($rowc = $db->fetchRow($resc))
{
$companyid = $rowc['companyid'];
$sellercode = $rowc['sellercode'];
//查找成功,update到order_info表
$sqlu = "update " . $ecs->table('order_info') .
" SET companyid='".$companyid."' , sellercode='".$sellercode."' WHERE order_id = '".$new_order_id."' ";
$db->query($sqlu);
//
}
else{
}
//
}else{
}
//到此步分单的功能基本完成。添加商品,订单查询。分开了。
97..
/* session 不存在,检查cookie */
if (!empty($_COOKIE['ECS']['user_id']) && !empty($_COOKIE['ECS']['password']))
{
// 找到了cookie, 验证cookie信息
$sql = 'SELECT user_id, user_name, password ' .
' FROM ' .$ecs->table('users') .
" WHERE user_id = '" . intval($_COOKIE['ECS']['user_id']) . "' AND password = '" .$_COOKIE['ECS']['password']. "'";
$row = $db->GetRow($sql);
if (!$row)
{
// 没有找到这个记录
$time = time() - 3600;
setcookie("ECS[user_id]", '', $time, '/');
setcookie("ECS[password]", '', $time, '/');
}
else
{
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['user_name'] = $row['user_name'];
update_user_info();
}
}
if (isset($smarty))
{
$smarty->assign('ecs_session', $_SESSION);
}