購物車研究站-討論區首頁 |
說明 搜尋 會員 日曆 |
Charson |
發表於: 2006-09-29, 02:44 PM
|
一般會員 所屬群組: 註冊會員 發表總數: 18 會員編號: 7577 註冊日期: -- |
因為主機架在國外,購物車訂單有時差問題。
查過論壇試過各種方式, 例如改tchinese.php裡面的語法, 完全不能成功! 也改過twe_date_long_inc.php用加上時差方式, return gmdate('Y/m/d H:i:s', gmmktime($hour,$minute,$second,$month,$day,$year)+(3600*X)); 是否還有其他的方式? ============================================= Apache 版本 1.3.36 (Unix) MySQL 版本 4.1.20-standard PHP 版本 4.4.2 PHP 資訊 按這查看 PERL 版本 5.8.7 Kernel 版本 2.6.16.17-grsec Machine Type i686 cPanel 版本 10.8.2-RELEASE-119 cPanel Pro Version 1.0 (RC36) ============================================= 若還需要其他資訊請告知,謝謝! |
Charson |
發表於: 2006-09-30, 12:56 PM
|
||||
一般會員 所屬群組: 註冊會員 發表總數: 18 會員編號: 7577 註冊日期: -- |
對不起,我常常在這裡發表的文章都沒有人回,若是我有什麼疏忽之處請告知! 關於時差問題,我試著將下列的程式碼放在伺服器上執行:
結果出現
我想伺服器上更改時差問題看來只有最末一個方式是有效的, 另外若於前面置入 putenv("TZ=Asia/Taipei") ; 則所有的時間可以調過來, 只是一個是X*3600另一個是putenv的方式, 我試過在tchinese.php裡面改,後台訂單顯示還是有時差問題, 也試過在twe_date_long_inc.php,甚至想在orders.php裡面直接改, 都無法成功,因我對php語法不熟悉,翻了第一版的書找不到答案, 請oldpa幫個忙,感激不盡! |
||||
m0_0m |
發表於: 2006-09-30, 08:57 PM
|
進階會員 所屬群組: 註冊會員 發表總數: 179 會員編號: 5993 註冊日期: -- |
我也很抱歉...
上次我問過這問題 SO 很瞭解你的沮喪&失望 最後僅有好心的simmonhsu 解決了部分的顯示問題 因為那只是測試站 前台顯示正常 已經足夠我應付客戶了.. 套用 OSC論壇某位大大所言 ﹝ 修改這個問題是要花很大的 effort . 對我來說 -- 它不值得! ﹞ 也許TWE ..... SO 這方面目前真的是很難解決.. ------------------------------------ 又.. 我想後台訂單 的部分要由 寫入資料庫的時間 那下手 ... 又又.. 不知道可不可以請主機商處理? ------------------------------------ 話說回來 oldpa 新的2.3書 不知道有沒有關於這方面的修正 ------------------------------------ 一整個哀怨 省錢不一定省事... 天黑的..像不會再天亮了... |
Alexander |
發表於: 2006-09-30, 10:32 PM
|
版主 所屬群組: 註冊會員 發表總數: 479 會員編號: 1321 註冊日期: -- |
Hi all,
Charson 其實都快解決了....我推你一把吧 1.首先tchinese.php再最上面加上這一行 putenv("TZ=Asia/Taipei") ; 2.修改checkout_process.php 找到 'date_purchased' => 'now()', 改成 'date_purchased' => date("Y-m-d H:i:s"), 注意這部份至少有兩處.... 解釋一下為什麼putenv("TZ=Asia/Taipei") 會沒作用.... 因為它只能影響php,可是'now()'是Mysql的語法....他還是抓伺服器的時間 ㄏㄏ 本篇文章已被 Alexander 於 2006-10-01, 05:25 AM 編輯過 |
m0_0m |
發表於: 2006-10-01, 02:26 AM
|
||
進階會員 所屬群組: 註冊會員 發表總數: 179 會員編號: 5993 註冊日期: -- |
我查了一下 2.3的版本 全部檔案中有使用到 now() 的地方 找到 268個 (因為有複製個檔備份 可能有虛增) 例如create_account.php 就有找到多處..
像這樣子散佈在各檔案中的now() 可以直接全部都取代掉嗎? BTW 假設他存入資料庫用了 Y-m-d H:i:s 取出資料顯示的時候 會 DATE_FORMAT_LONG , DATE_FORMAT_SHORT 的設定顯示嗎? (Charson 麻煩你測試一下~ 我目前沒有站在國外主機.. ) 天好像要亮了 ^_^ |
||
Charson |
發表於: 2006-10-01, 10:30 AM
|
||||||
一般會員 所屬群組: 註冊會員 發表總數: 18 會員編號: 7577 註冊日期: -- |
m0_0m,天亮了! 感謝Alexander! 難怪用了那麼多方式都無效,TWE在寫入時間都是用now()函數, 在訂購過程中,對應的檔為checkout_process.php, 裡面有三處,分別為:
所以依據之前PHP那段語法實驗的結果, 若不用putenv的方式,我猜直接將'now()',改成如下兩種方式應該都可以。
或是
不過用putenv的方式較簡單且主機在國內外都沒關係。 而另外加時差的方式,若主機在國內,就又快了。 若如m0_0m所說,2.3版全部檔案有兩百多個, 是否建議oldpa未來的版本用後台的方式處理時差問題, 這樣就更棒了!實在蠻喜歡TWE的...~ 感謝了! |
||||||
Charson |
發表於: 2006-10-01, 11:12 AM
|
||
一般會員 所屬群組: 註冊會員 發表總數: 18 會員編號: 7577 註冊日期: -- |
剛剛找了一下,有now()字串的*.php檔者並沒有m0_0m兄說的那麼多啊? 在此列出來供各位參考:
另外,其實也不用在後台多設更改時差問題的選項, 因為若用putenv的方式應該國內外或相差多少的時差應都可適用吧? 除非是較舊的PHP版本伺服器不認識putenv... |
||
Charson |
發表於: 2006-10-01, 11:17 AM
|
一般會員 所屬群組: 註冊會員 發表總數: 18 會員編號: 7577 註冊日期: -- |
對不起,再補充一下,
我想用sql語法的方式導入資料庫應該也行, 但sql語法的部分我就更不懂了... |
Charson |
發表於: 2006-10-01, 12:24 PM
|
||||
一般會員 所屬群組: 註冊會員 發表總數: 18 會員編號: 7577 註冊日期: -- |
再發問: 如果我想更改Mysql now()的方式,想先作一個時差的定義:
然後再將程式中有用到now()的部分, now()改為'".NOW."' 1.我需要將這個定義放在哪一個檔案?是tchinese.php或是twe_date_long_inc.php?或application_top.php? 2.另外time()的部分呢?是否也需一併定義及更改? 因為搜到相關討論串,不過是OScommerce的, 請參考http://forums.oscommerce.com/index.php?showtopic=32920 對不起,還不是很瞭解購物車系統的架構... |
||||
Alexander |
發表於: 2006-10-01, 02:02 PM
|
版主 所屬群組: 註冊會員 發表總數: 479 會員編號: 1321 註冊日期: -- |
你的主機不認識putenv()嗎?自己手動加不是個好方法
要定義NOW建議你放在include/applicatopn_top.php裡面 但是請務必至於語系定義引入的位置之下 |
Charson |
發表於: 2006-10-01, 04:22 PM
|
一般會員 所屬群組: 註冊會員 發表總數: 18 會員編號: 7577 註冊日期: -- |
謝謝Alaxander,
我的主機是認得putenv,只是好奇因查到OScommerce的論壇有人提及, 若未來遇到不認得putenv的情況,是否可以試試這種方式? 我已將所有有now()的程式全部改成'".date("Y-m-d H:i:s")."', 目前運作上一切正常,所有需要取得日期的部分應該都可以正常顯示台灣的時間才是! 不過time()的部分呢? 是不是也需要一併改? 只有三個檔案,create_account.php,download.php及login.php |
m0_0m |
發表於: 2006-10-01, 10:18 PM
|
進階會員 所屬群組: 註冊會員 發表總數: 179 會員編號: 5993 註冊日期: -- |
剛找了 07/03 下載的版本 twecommerce2.3-utf8.zip
再可以搜尋的1517個文件中 找到 now() 208個 ------------------------- 沒辦法上傳圖片 懶的貼... includes\modules\payment 多個檔案皆有多處 (會不會影響付款模組的時差?) 例 atm.php 行108~115 admin、inc 資料夾下有、gv_send.php 有 .... 總之 找到的有這麼多個...搞不清楚沒有影響... ------------------------- time() 因為它是php函式 所以會受putenv() 影響 //Alexander大教的 不知道我有沒有又學壞了.. ------------------------- 我覺得 putenv() 比較好 這樣要搬家的話就不用改... |
Alexander |
發表於: 2006-10-01, 11:02 PM
|
版主 所屬群組: 註冊會員 發表總數: 479 會員編號: 1321 註冊日期: -- |
汗~我還以為mysql那時候多了一個time()咧? 果然三人行必有我師阿~ |