Benmr's blog

分類 · tech-note

首頁

關於

文章列表

loading..

實作 二階段驗證/雙重驗證 2FA — 以 Laravel 為例

前言或許大家已經對 二階段驗證 (Two-factor authentication) 不陌生 主要就是為了防止有心人士在獲得你的帳號密碼後,就得以登入並進行犯罪 二階段驗利用手機、或任何只有你才知道的資訊來進行第二層驗證 因此提高了安全性

更多

用 PHP 實作 Web Service-一次搞懂 XML、SOAP、WSDL (下)

實作有了上文的名詞解釋 我們總算可以開始來實作了 以下將以 PHP 的 SoapClient 為例 說明怎麼用這個 class 來對 server 端發送 request 做 XML 格式的資料交換 Contruct根據官方說明 (https://www.php.net/manual/en/soapclient.construct.php) SoapClient::__construct 可以是 WSDL 或 non-WSDL mode 的 以下將以 WSDL 為例 官方裡有提到 public SoapClient::__construct(?string $wsdl, array $options = []) 可以到有兩個要素: WSDL 和 options WSDL就是 WSDL 的位置 可能放在遠端..

更多
loading..

用 PHP 實作 Web Service-一次搞懂 XML、SOAP、WSDL (上)

前言最近真的串太多 XML 的 api 了 覺得太多眉眉角角要注意 又有滿多詭異的部份 所以這邊記下來 供有需要的朋友參考參考! 名詞解釋Web Services (Web 服務)是一種跨程式語言和跨作業系統平臺的遠端呼叫技術- 跨程式語言 - 也就是 server 端無論用什麼程式語言寫的, client 端都可以用其他語言寫 - 跨操作平臺: - server 端程式和 client 端程式可以在不同的作業系統上執行 - 遠端呼叫技術: - 機器 A 上的一個程式可以呼叫到另外機器 B 上的一個物件的方法 - 例: Youtube 把斗內的金額狀態以 Web Service 的方式暴露在外,讓 client 端可以呼叫並應用 比如說做一個斗內的進度條出..

更多
loading..

使用 Python 批次新增/修改 SQL

情境假設現在我們有一個情境要生成 500 個 SQL UPDATE `tableA` INNER JOIN `tableB` ON `tableA`.`foreign_id` = `tableB`.`id` SET `setting_value` = "number:111" WHERE `tableB`.`test_name` = "testABC"; 其中 裡面的變數 111 和 testABC 然後我們有一個 excel 的 mapping table 長的像這樣 裡面就記載了這 500 句 sql 組成的邏輯 現在是還簡單 基本上是一對一的關係 也就是: 111 會對應到 testABC 222 會對應到 testwjfaw 原則上還是可以用 excel..

更多
loading..

[編譯 vs. 直譯] / [靜態 vs. 動態] / [強型別 vs. 弱型別]

[編譯 vs. 直譯] / [靜態 vs. 動態] / [強型別 vs. 弱型別]前言最近因為 [編譯 vs. 直譯] / [靜態 vs. 動態] / [強型別 vs. 弱型別] 有各種理解上的困難 索性寫一篇文章下來當作筆記 提醒自己的同時也希望對讀者有幫助! 編譯 vs. 直譯首先我們要理解到 為了讓我們人類寫的程式碼能讓機器讀懂 中間就一定會有一個轉譯的過程 透過這個過程 將我們人看的懂的語言轉換成機器看的懂的語言 也就是 0 和 1 圖解如下: 而這個轉換的的方式則分成兩種 → 編譯 與 直譯 對應到的工具就是 編譯器 與 直譯器 差別如下: 編譯器:一次性把所有的程式碼轉成機器看的懂的 0 和 1 他的文件就是在Windows裏叫的.exe檔 或者Unix中的可執行檔 優點:..

更多
loading..

MYSQL:使用臨時表一次性大量UPDATE

前言最近遇到須要更新一堆 DB 欄位的需求 實作後發現不同的寫法對效能的影響滿大的 這就來紀錄分享一下 問題情境假設我們有2張表 分別是 order、orderDetail 其中 order 是訂單的總表 而 orderDetail 則是訂單的細節 兩者關係以下圖示之 order orderDetail 原始 table在 order裡的第一筆 (id=1) 就叫他 apple 訂單吧! 對應到 orderDetail 可以發現 apple 訂單裡面有兩個 item 分別是 雞排 和腿排 (兩者的 fk 為 fk_orderID = 1) 但為了閱讀方便 我們想要在 order 裡多新增一個 items 欄位 把這張訂單裡保括了了哪些品項給列出來 並用逗號隔開 成果如下 修改後 ta..

更多
loading..

聯盟行銷 API 串接 - 以聯盟網為例

前言近年來聯盟行銷以相當快的速度火紅起來 雖然相較於歐美,台灣算是發展相當慢的了 但遲到總比沒到好 就讓我們來了解一下聯盟行銷是什麼 以及該如何串接聯盟行銷的 API 吧! 什麼是聯盟行銷簡單來說 就是當廠商想要推廣商品時 為了讓擴散效果擴大 於是廠商找了很多推廣者來,讓這些推廣者來幫忙賣商品 如果推廣者成功賣出商品了話,就會分到一定比例的分潤 進而達到雙贏的效果 因為對廠商來說,他成功賣出了產品 對推廣者來說,他成功取得了分潤 在台灣 比較常見的機制是 廠商們和推廣者會透過中間平台 (比如說聯盟網/通路王) 媒合 這種作法的好處有二 廠商不用大肆宣傳即可接觸到很多推廣者 廠商不須一次接觸大量推廣者,而是與單一窗口對接即可 (對推廣者亦然) 其關係可以以下圖表現之 無第三方平台 有第三方平台..

更多
loading..

串接 Google OAuth 2.0 實現第三方登入

前言為了使用者方便 在目前的各大網站的註冊流程中 通常除了最基礎的註冊新帳號以外 也會提供第三方登入 比如說 google 登入、facebook 登入,甚至 github 登入等等 這樣的好處是可以讓使用者不須要額外註冊一個新帳號 而是可以直接使用現有的第三方帳號 即可達到註冊登入 達到快速轉換、降低門檻的效果 本文就是要來介紹如何使用 Google OAauth 來實現第三方登入 流程簡介 (來源: Google) 自 Google API Console 取得 Google OAuth 2.0 憑證 自 Google Authorization Server 取得 access token (圖中 Request token + User login & consent + Authori..

更多
loading..

使用 PHP 安插固定排序 & 隨機排序卡片

前言在特定情境下,我們想要把 array 裡的東西同時照特定的方式做排序 其中有幾個是固定的,有幾個是隨機的 比如說我們有 itemA ~ itemF 總共六個 item 我們想要把排序第一、第三的給固定下來 同時讓排序第二、第四個從 itemA ~ itemF 給取出但不重複 所以結果可能是這樣 也可能是這樣 那要怎麼做呢? 以下就架構,分兩個部份討論 架構一、存 db 格式為簡化討論 我們假設 itemTable 裡只有三個欄位 分別是 id、name、sort 在存資料時 我們把要固定欄位的紀錄之 sort 設為正數 (下圖例為 1、3) 而隨機排序的資料 sort 設為 -1 這樣的好處是我們一眼就可以知道 哪些紀錄是要固定欄位、哪些又是要隨機排序的 二、排序方式這邊先理理頭緒 用自然語言..

更多

PHP 排序 usort 範例教學

前言最近工作上剛好碰到排序的麻煩問題 這邊就寫下來記錄一下 首先會簡介一下各種排序 最後會針對重點 usort 自訂排序做說明教學 php 官方排序 function第一類: 用”值 (value)” 排序 由小到大排序值、且刪除 key => sort 由小到大排序值、且保留 key => asort 由大到小排序值、且刪除 key => rsort 由大到小排序值、且保留 key => arsort 第二類: 用”索引 (key)” 排序 由小到大排key => ksort 由大到小排key => krsort 第三類: 自訂排序加一個前綴 u 在相對應 sort 的前面就好了 以下以 usort 為例 ..

更多
123