PHP 單向加密,會員資料庫密碼學

當網站需要會員機制時,除了會員名稱(姓名)、帳號外,當然最重要的就是密碼。 在此不討論那些腦殘的明文密碼http://plainpass.com/ 密碼加密的原則有

  1. 單向加密
  2. 可以比對正確與否

一、單向加密:也就是將密碼加密後,從加密資訊無法還原或得知原始密碼字串。這是後續要討論的所以先說明雙向編碼。 雙向編碼就是可還原原始資料,例如 base64

至於單向加密可以使用 md5() 或是 sha1 ,例如

  • md5() 單向「固定」加密,字元長度 32
  • sha1() 單向「固定」加密,字元長度 40

什麼是固定加密?顧名思義就是每次加密的結果是一樣的,也就是如此的特性才可以拿來當作密碼比對。

變動的加密字串

那有變動加密嗎?在 PHP 裡也是有的,可以使用 crypt()

產生加密,以 sha256 為例

當下產生的加密字串為

使用 uniqid() 的緣故,所以重新整理每次產生的字串皆不同,如此即可防止兩個相同的密碼被輕易破解

查核密碼時,因為字串變動的緣故無法單純的使用字串比對的方式,還是需要使用 crypt() function 來檢查

案例二:一個相對精簡的案例

2,187 total views, no views today

網頁表格另存 Excel – PHPExcel

網頁 (PHP) 產生 Excel 方法

  • 直接把網頁的 Table 表格轉成 .xls 檔案 Export Html Table To Excel Spreadsheet using jQuery – table2excel 。優點快速,缺點開啟時會出現警告,商業應用不適合,公司內部湊合用
  • 產書真正的 Excel ,使用本文使用 PHPExcel 套件可以讀取或產生原生 Excel 格式檔案。優點標準,缺點很麻煩

PHPExcel

使用 PHP 處理 Excel 格式檔案

讀取 Excel 檔案

產生 Excel

儲存格格式 PHPExcel_Style_NumberFormat

範例 2 – 直接輸出下載檔案

Fatal error: Allowed memory size

在寫入大量資料時,出現了 Fatal error: Allowed memory size 的錯誤

無效方案

指定欄位格式

要注意 setCellValue 修改成 setCellValueExplicit

Fatal error: Class ‘XMLWriter’ not found

補一個 php-xml 就好了

1,898 total views, 1 views today

串接 PayPal

流程

  1. 申請帳號
  2. PayPal Developer 開通開發帳號
  3. 沙盒測試網址加上 sandbox 即可
    https://www.sandbox.paypal.com
    https://ipnpb.sandbox.paypal.com
  4. 針對開發人員的 PayPal 和 IPN(交易狀態更新)介紹

開啟 IPN (交易狀態更新、即時付款通知)

個人檔案 → 我的銷售工具 → 交易狀態更新

Image 236

自訂付款

 

  • business :
  • amount :
  • return :
  • cancel_return :

一個實際案例

  • notify_url: 設定 IPN 返回網址
  • return: 成功付款返回網址
  • cancel_return: 取消交易返回網址

IPN

將接收的 IPN $_POST 轉成陣列

驗證 IPN 是否屬實

  • https://ipnpb.paypal.com/cgi-bin/webscr?cmd=_notify-validate&

VERIFIED 有效,INVALID 無效

REST API

輔助資源

3,532 total views, 1 views today

Amazon S3 (Simple Storage Service)

https://blog.csdn.net/ganggexiongqi/article/details/50483389

使用官方 SDK

任何需要使用別人提供的 PHP 程式,首先要知道的就是「該 PHP 是什麼版本寫的

換句話說,尋找 SDK 時不是說最新的最適合,而是會跑才適合。

以 Hoyo 的測試環境舉例 CentOS 6.7,這是一個相當舊的版本,PHP 為 5.3 版,網路上搜尋後可以得知適當的 Amazon PHP SDK 為 v2 版本,v3 需要 PHP 5.5 以上才支援。

使用之前

請先將 Server 的時間校準,雖然不是所有功能都對時間敏感,不過做了就沒錯

如果看到 PHP 發生類似這個錯誤

就代表你主機的時間不準了

開始使用

參考

上傳

將 Bucket 當作本地存取

 

使用 HTML Forms 上傳及包裝成 PHP curl post

參考

和原程式差別在於 Region 的設定,有關 Region 的設定可以參考 AWS区域和终端节点

將 region 固定則上傳網址也必須隨之調整

 

984 total views, 1 views today

PHP command line 傳遞參數

  • $argc 回傳傳遞參數數量
  • $argv 以 array 型態回傳傳遞參數的值

cli.php

執行 php cli.php

看起來 cli.php 這個檔案也被 php 當成了一個傳遞參數

執行 php cli.php v1 v2 v3

558 total views, 1 views today

使用 PHP 取得影音檔案資訊

如何使用 PHP 即可取得影音檔案資訊,不須借助播放程式?

參考

官網 getID3()

對象是 MP3 也不會有另外格式的檔案,不需要搞到 ffmpeg 這麼複雜。

506 total views, 1 views today

使用 .htaccess 設定無法使用 ini_set() 的參數

當 PHPer 遇到無法修改主機 php.ini 的悲摧情境

Hoyo 本身是喜歡直接修改 php.ini,因為主機都是自己管理

遇到主機管理員不願意修改 php.ini 時,有些設定可以使用 ini_set() 設定,但不是全部都適用,例如上傳最大檔案限制 upload_max_filesize ,這時就必須使用其他手法

根據提示,後來使用的手法是修改 .htaccess

 

478 total views, 2 views today

Smarty 3

 

Smarty 官網沒說的祕密

多層 foreach 需要一次跳出迴圈,可以使用 break 加上 需要離開的層數

 

取得檔案類型名稱 (檔案副檔名)

Is there a way in Smarty to get the file extension of a string

 

更多相關資料

[PHP]Smarty - 變數處理

312 total views, 1 views today

CKEditor 4.5.3 之初步使用

為什麼是 CKEditor ?

  1. 現在還有在維護
  2. 因為還有在維護所以應該有圖檔拖曳上傳功能
  3. 真的有圖檔拖曳上傳功能 → 讚 live demo

下載及 demo 請到官網:CKEditor

如何使用

下載解壓縮

到 ckeditor/samples/toolbarconfigurator/index.html 自訂工具列

將設定值取代 config.js 檔案

使用 Ajax 上傳都是未更新前的資料問題

在上傳前套用以下程式

拖曳圖檔至編輯區

基本知識、觀念建立:File Browser/Uploader

前端的程式都可以直接從官網下載,唯一需要自己準備的只有圖檔上傳後回傳的程式,大概是長這樣:

長這樣的根據?

直接從官網範例 → File Upload ,在 Chrome 的 F12 追蹤得到上傳後需要回傳 json

硬要看官方文件的話,在這裡 → Uploading Dropped or Pasted Files

實際運用的情況

  • 目前 2015.8.26 CKEditor 的版本為 4.5.3
  • 預計達成功能
    • 基本文字編輯、格式修改
    • 附加圖檔
      • 檔案拖曳直接上傳附加
      • 複製、貼上上傳附加 (目前只支援 Firefox,找尋其他方案)
      • 已上傳可瀏覽後附加不須重新上傳

使用 Plugins

  • autogrow : 編輯區不是固定尺寸
  • uploadimage : 拖曳檔案進編輯區即可上傳
  • image2 : 讓圖片可移動以及改變大小

自訂 Plugin : 以瀏覽圖檔點選後直接插入為例

參考資料

準備好以下材料

 

操作流程長這樣

  1. 從工具列點選瀏覽圖庫按鈕,彈出一個瀏覽圖庫子視窗
  2. 選取後點選圖片
  3. 將圖片插入編輯區,關閉瀏覽圖庫視窗 (實際程式流程為相反)

實際上的操作就是按一下工具列按鈕,然後按一下圖片這兩下

關鍵點

 

編輯時和前端顯示相同 CSS 結果

config.js

 

1,027 total views, 1 views today