OPENCART在關鍵字上我也做到台灣第1名了

圖片

貧民出身,是臺灣該國中一小撮研究開源OPENCART購物車系統 和投票系統的人物,如果您需要中文化,破解插件,或修改客製化,除了原作外,全國找不到比我會修改的人才 ,歡迎

一年時間的研究,我竟發現,我找不到誰OPENCART插件寫的比我多
然後有在官方插件市場販售插件的台灣作者,手指頭都算得出來有幾個

此領域國外我可能500名排不到,台灣的話,鬼島人才外流嚴重
所以不好意識,一年時間的研究,你就是這領域的前10名

一位平凡工程師,卻有想靠一己之力拯救國家經濟的不平凡願望
所以我努力的學習各種程式
在我成功那天,我自然會告訴世人,我的名子,在我還沒有巨大的成績之前
各位請以代號『台灣碼農10號』稱呼我即可

30篇介紹OPENCART的文章
https://ithelp.ithome.com.tw/users/20107860/ironman/1576 IT邦 鐵人30篇文 一天介紹一個 OPENCART 插件

秀2個我於國外官方插件市場上架的插件
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=32809 後台用插件
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=33515 匯率更新用插件

我們都知道-數組 KEY重複的話後會取代前,這是鐵則,平常也絕對不會有問題但如何查出重複呢?

我們都知道 數組 KEY重複的話後會取代前,這是鐵則,平常也絕對不會有問題

可是今天當你要做打一個多國語系翻譯檔的時候
,2個不同的英文翻譯成相同的中文這件事是允許的,所以也就是值重複無所謂,但是KEY重複不允許,現在問題來了,PHP有檢查值重複的語法,但是根本就沒有檢查KEY的語法,廢話不多說 我花半天寫出了

我貼一下運行結果
zh-tw語言翻譯檔,共有字串81個
重複3個(值重複無所謂)
[‘ok’]=確定
[‘remove’]=下架
[‘specify the price’]=指定價
註解4行
內容84行
key重複3這個不要有重複
currency
delete
specified price

英文版
en語言翻譯檔,共有字串81個
值重複0個(值重複無所謂)
註解4行
內容84行
key重複3這個不要有重複
currency
delete
specified price

和英文版做比對
[’61’]=historical transaction
[’70’]=specify the price

源碼在此
===

public
function twcheck() {
$br= $this->mydata[‘br’];
//======================================================================================================
// $langs 代表語言策略1所有翻譯字
// $_l 代表語言策略2所有翻譯字
unset($this->mData);
$language = ‘zh-tw’;
$file=$this->config->item( ‘my_dir’ ) . ‘/_inc/language/’ . $language .”/”. $language . ‘.php’;
require($file);//載入語言策略第2個檔
$_1=$_;
echo $language.”語言翻譯檔,共有字串”.count($_).”個”.$br;
$inputValue=$_;
$inputValue_unique = array_unique($inputValue);
$s=count($inputValue)-count($inputValue_unique);

echo “重複”.$s.”個(值重複無所謂)”.$br;
if($s>0){
echo “


“;
$repeat_arr = array_diff_assoc ( $inputValue, $inputValue_unique ); // 获取重复数据的数组
foreach($repeat_arr as $k=>$v ){
echo “[‘”.$k.”‘]=”.$v.$br;
}
echo “


“;
}

// 開啟檔案
$file = fopen($file, ‘rb’);
$sa1=0;$sa2=0;
$repeat=array();
$repeatb=array();
// 檢查檔案是否到結尾,若尚未到結尾則取出一行文字
while ((!feof($file) && $line = trim(fgets($file)))) {
if((preg_match(“@^\/\/@i”, $line )))
{
$sa1++;
}
if((preg_match(“@\_\[‘@i”, $line )))
{
$src=substr($line,4,(strpos($line,”‘]”)-4));//切=之前的字
if(in_array($src,$repeat)){
$repeatb[]=$src;
}
$repeat[]=$src;
$sa2++;
}
}
// 關閉檔案
fclose($file);
//———————————————————————
echo “註解”.$sa1.”行”.$br;
echo “內容”.$sa2.”行”.$br;
echo “key重複”.($sa2-count($_1)).”這個不要有重複”.$br;
echo “


“;
foreach($repeatb as $k=>$v ){
echo $v.$br;
}
echo “


“;
echo $br.$br;

echo “英文版”.$br;
unset($_);
$language = ‘en’;
$file=$this->config->item( ‘my_dir’ ) . ‘/_inc/language/’ . $language .”/”. $language . ‘.php’;
require($file);//載入語言策略第2個檔
$_2=$_;
echo $language.”語言翻譯檔,共有字串”.count($_).”個”.$br;
$inputValue=$_2;
$inputValue_unique = array_unique($inputValue);
$s=count($inputValue)-count($inputValue_unique);
echo “值重複”.$s.”個(值重複無所謂)”.$br;
if($s>0){
echo “


“;
$repeat_arr = array_diff_assoc ( $inputValue, $inputValue_unique ); // 获取重复数据的数组
foreach($repeat_arr as $k=>$v ){
echo “[‘”.$k.”‘]=”.$v.$br;
}
echo “


“;
}

// 開啟檔案
$file = fopen($file, ‘rb’);
$sa1=0;$sa2=0;
$repeat=array();
$repeatb=array();
// 檢查檔案是否到結尾,若尚未到結尾則取出一行文字
while ((!feof($file) && $line = trim(fgets($file)))) {
if((preg_match(“@^\/\/@i”, $line )))
{
$sa1++;
}
if((preg_match(“@\_\[‘@i”, $line )))
{
$src=substr($line,4,(strpos($line,”‘]”)-4));//切=之前的字
if(in_array($src,$repeat)){
$repeatb[]=$src;
}
$repeat[]=$src;
$sa2++;
}
}
// 關閉檔案
fclose($file);
//———————————————————————
echo “註解”.$sa1.”行”.$br;
echo “內容”.$sa2.”行”.$br;
echo “key重複”.($sa2-count($_1)).”這個不要有重複”.$br;
echo “


“;
foreach($repeatb as $k=>$v ){
echo $v.$br;
}
echo “


“;
echo $br.$br;

echo “


“;
echo “和英文版做比對”.$br;
foreach($_1 as $k=>$v ){
$y1[]=$k;
}
foreach($_2 as $k=>$v ){
$y2[]=$k;
}
echo “


“;
//$repeat_arr = array_diff_assoc ( $_1, $_2 ); // 获取重复数据的数组
$repeat_arr = array_diff_assoc ( $y1, $y2 ); // 获取重复数据的数组
foreach($repeat_arr as $k=>$v ){
echo “[‘”.$k.”‘]=”.$v.$br;
}
echo “


“;
//======================================================================================================
}

完美運行結果:
zh-tw語言翻譯檔,共有字串81個
重複3個(值重複無所謂)
[‘ok’]=確定
[‘remove’]=下架
[‘specify the price’]=指定價
註解4行
內容81行
key重複0這個不要有重複

英文版
en語言翻譯檔,共有字串81個
值重複0個(值重複無所謂)
註解4行
內容81行
key重複0這個不要有重複

opencart 的密碼加密機制

11:23 SAM 版主 請問一下

opencart 的密碼加密機制是
password = ‘” . $db->escape(sha1($salt . sha1($salt . sha1($data[‘password’])))) . “‘

先取得 salt 在用 sha1 加密三次變成亂數放入資料表密碼欄位

那在自寫登入程式中
要怎麼把 input 欄位取得的 password 值 轉成 opencart 的亂碼
好做登入比對呢

09:09 台灣碼農SUFFIXBIG @SAM 我是沒自製登入過 ,如果我寫過我就可以直接跟你講opencart 的密碼加密機制是什麼-然後你打得對不對之類–可惜我沒幹過這件事,如果你研究出他的加密機制是sha1($salt . sha1($salt . sha1($data[‘password’])))) 那你就把 加密的方式寫成 一個涵式

09:10 SAM 嗯嗯
09:10 SAM 好
09:10 台灣碼農SUFFIXBIG 然後’password’ => bcrypt($data[‘password’])
09:11 台灣碼農SUFFIXBIG 就是 把密碼用函式換成亂數
09:12 台灣碼農SUFFIXBIG 然後就是 資料庫查詢了
09:13 SAM 嗯嗯 我在試試
09:23 台灣碼農SUFFIXBIG 算了-A 我好像懂你問題了 你問題是 salt 怎取得的是不是
09:24 SAM 現在只是在想要怎麼把輸入的密碼加密成跟 opencart 的一樣而已
09:25 台灣碼農SUFFIXBIG

salt = ‘” . $this->db->escape($salt = token(9)) . “‘, password = ‘” . $this->db->escape(sha1($salt . sha1($salt . sha1($password)))) . “‘

09:26 台灣碼農SUFFIXBIG $salt 是 亂數 9碼
09:26 台灣碼農SUFFIXBIG 也就是說 比對時是 用 username 去抓用戶資料
09:27 台灣碼農SUFFIXBIG 然後取出 salt
09:27 台灣碼農SUFFIXBIG 在用 salt 和密碼套運算
09:28 台灣碼農SUFFIXBIG 再比對password 是否相等
09:28 台灣碼農SUFFIXBIG 圖片
09:29 台灣碼農SUFFIXBIG 解釋起來 salt 就是每個人算密碼 的KEY

圖片、檔案上傳注意事項

◎ 圖片、檔案上傳注意事項:
『上傳檔案』及『資料夾路徑』,不得含有中文或空白符號、特殊字元(例:\,/,:,*,?,”,<,>,|,%,#,+等等),系統可能會發生辨識錯誤。
檔名不得重複,否則會互相置換/覆蓋。
圖片長寬、檔案大小最好符合建議的尺寸,以免系統在縮圖時,會造成圖檔變形。
網頁圖片僅支援 JPG(*不可使用印刷檔案) 或 GIF、PNG,請使用 72dpi 的解析度(dpi)。
副檔名需為小寫。
◎ 資料上架注意事項:
HTML編輯時,不能直接從WORD剪貼複製,必須先貼到『筆記本』,確認字體大小,再複製到HTML編輯區;換行不能用 Enter,要用 Shift+Enter。

瀏覽器畫面測試:
免費測試(限制版本,速度慢)
http://browsershots.org
付費測試(速度快,有免費試用)
https://crossbrowsertesting.com
https://developer.microsoft.com/en-us/microsoft-edge/tools/screenshots/?url=http%3A%2F%2Fblog.bkk.tw

你們猜很簡單改一個姓名合併-要改動幾支程式答案是11支

你們猜很簡單改一個姓名合併-要改動幾支程式?

原版要改動9支 使用journal2模板 的話特難改 要改到11支
我以為3小時內可以搞定,結果一直遇到錯誤,最後花了我3晚,只收對方修改費2000實在是預估錯誤,我把過程紀錄一下 以後誰要改原版的話,現成的賣600元就好,對機車journal2模板的客製修改應該 聽到journal這個名子就要收貴一點。

catalog/view/theme/journal2/template/journal2/checkout/register.tpl

catalog\controller\journal2\checkout.php 不要檢查

// lastname 有2個地方

if ((utf8_strlen(trim($data[‘lastname’])) < 1) || (utf8_strlen(trim($data['lastname'])) > 32)) {
$errors[‘lastname’] = $this->language->get(‘error_lastname’);
}

Notice: Undefined variable: captcha in /home/lewiscco/17gostore.com/catalog/view/theme/journal2/template/journal2/checkout/register.tpl on line 146

修改無用問題
Notice: Error: Could not load template /home/lewiscco/17gostore.com/catalog/view/theme/default/template/journal2/checkout/register.tpl! in /home/lewiscco/17gostore.com/system/storage/modification/system/library/template/php.php on line 23

/home/lewiscco/17gostore.com/catalog/view/theme/default/template/journal2/checkout/register.tpl

/catalog/view/theme/default/template/journal2/checkout/register.tpl

/catalog/view/theme/journal2/template/journal2/checkout/register.tpl

Notice: Undefined variable: entry_newsletter in /home/lewiscco/17gostore.com/catalog/view/theme/journal2/template/journal2/checkout/register.tpl on line 286
Notice: Undefined variable: shipping_required in /home/lewiscco/17gostore.com/catalog/view/theme/journal2/template/journal2/checkout/register.tpl on line 288
Notice: Undefined variable: text_agree in /home/lewiscco/17gostore.com/catalog/view/theme/journal2/template/journal2/checkout/register.tpl on line 295

===
#帳單地址不要出現
===
catalog\view\theme\journal2\template\journal2\checkout\address_form.tpl 不是這支
catalog\controller\journal2\checkout.php
catalog\view\theme\journal2\template\journal2\checkoutcheckout.tpl
改成 不能用這樣
只能用

===
錯誤問題
===
SyntaxError: Unexpected token < in JSON at position 0 OK Notice: Undefined index: lastname in D:\wamp\www\web_opencart_17go\catalog\controller\journal2\checkout.php on line 340{“errors”:{“cart”:””},”account_status”:0,”redirect”:””,”redirect_cart”:”http:\/\/17go.test.com\/index.php?route=checkout\/cart”,”order_data”:{“invoice_prefix”:”INV-2017-

$order_data[‘lastname’] = $this->request->post[‘lastname’];

===
#註冊頁的 姓名
===
要改6支
catalog\view\theme\journal2\template\account\edit.tpl
catalog\view\theme\journal2\template\account\register.tpl

改成這樣

catalog\controller\account\register.php
catalog\controller\account\address.php
catalog\controller\account\edit.php
去掉
if ((utf8_strlen(trim($this->request->post[‘lastname’])) < 1) || (utf8_strlen(trim($this->request->post[‘lastname’])) > 32)) {
$this->error[‘lastname’] = $this->language->get(‘error_lastname’);
}

===
少了姓之後這支會檢查
===
https://www.17gostore.com/index.php?route=account/register
Notice: Undefined index: lastname in /home/lewiscco/17gostore.com/catalog/model/account/customer.php on line 14
Notice: Undefined index: lastname in /home/lewiscco/17gostore.com/catalog/model/account/customer.php on line 18
Notice: Undefined index: lastname in /home/lewiscco/17gostore.com/catalog/controller/account/register.php on line 36
Warning: Cannot modify header information – headers already sent by (output started at /home/lewiscco/17

addCustomer( 因為有呼叫 這支強制必給
gostore.com/catalog/controller/startup/error.php:34) in /home/lewiscco/17gostore.com/system/storage/modification/system/library/response.php on line 12

===
customer.php 這支要改
===
/catalog/model/account/customer.php
Notice: Undefined index: fax in /home/lewiscco/17gostore.com/catalog/model/account/customer.php on line 100Warning: Cannot modify header information – headers already sent by (output started at /home/lewiscco/17gostore.com/catalog/controller/startup/error.php:34) in /home/lewiscco/17gostore.com/system/storage/modification/system/library/response.php on line 12

===
#2018/03/29 新增一個新地址 有姓要拿掉
catalog\view\theme\journal2\template\journal2\checkout\address_form.tpl
===