ecshop 入駐開發_多使用者商城
/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}" onload="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}" onload="selectShipping(this)" checked="checked" />
修改完成之後 在檔案底部加入
<script>
onload=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}" onload="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}" onload="selectShipping(this)" checked="checked" />
修改完成之後 在檔案底部加入
<script>
onload=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);
}
相關文章
- 多使用者商城系統定製開發
- 基於thinkphp 5.1 開發的多使用者商城系統 仿小米商城模板PHP
- 多商戶商城開發(功能)丨多商戶商城系統開發(開發方案)丨多商戶商城成品原始碼系統原始碼
- 多商戶商城系統開發丨多商戶商城app平臺開發APP
- 資訊釋出文章分類之java版商城Spring Cloud+SpringBoot多商家入駐商城 直播帶貨商城JavaCloudSpring Boot
- 如何開發ecshop支付外掛
- 【案例】“Weconnect”B2B2C多使用者商城系統開發案例
- 基於ecshop的二次開發
- ECshop 二次開發模板教程1
- ECshop 二次開發模板教程2
- ECshop 二次開發模板教程3
- ECshop 二次開發模板教程4
- ecshop 二次開發,原始碼分析原始碼
- 區塊鏈多商戶商城開發上線版丨區塊鏈多商戶商城系統開發(專案及方案)區塊鏈
- 多商家商城系統模式開發技術方案模式
- 電商助力神器——|多使用者商城原始碼原始碼
- Php迅貓多使用者商城系統PHP
- php多使用者商城系統推薦PHP
- ecshop仿小米商城原始碼 帶手機移動端原始碼
- Ecshop檔案結構,二次開發
- echo二次開發 ecshop 函式列表函式
- ecshop 二次開發及模板標籤
- 我的ECshop二次開發從零開始
- 【Django開發】前後端分離美多商城專案第1篇:美多商城【附程式碼文件】Django後端
- TDengine入駐Rainbond開源應用商店AI
- javab2b2c多使用者商城Java
- 商城式開發文件
- 抖音本地生活服務商入駐條件和入駐流程
- ECSHOP - 二次開發指南---購物車篇
- 即拼商城APP開發(開發APP)APP
- 商城app開發價格APP
- java 版 Spring Cloud+SpringBoot+mybatis+uniapp b2b2c 多商戶入駐商城微服務設計JavaCloudSpring BootMyBatisAPP微服務
- ecshop二次開發使用ecshop電子商務系統的100個小問題
- 基於ThinkPHP開發的多商戶微信商城小程式原始碼PHP原始碼
- 多商戶商城系統定製(平臺開發)原始碼案例原始碼
- 上雲精品,實力認證丨思邁特軟體入駐華為雲嚴選商城
- DAPP區塊鏈商城開發(多語言)丨DAPP區塊鏈商城系統開發(海外版)及案例原始碼APP區塊鏈原始碼
- 商城軟體開發、開發商城小程式的好處-北京銳智互動軟體開發