ecshop 入駐開發_多使用者商城

liuzhenglsj發表於2015-11-10
/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>&nbsp;&nbsp;</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);
    }




相關文章