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

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

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

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

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

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

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

變動的加密字串

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

產生加密,以 sha256 為例

當下產生的加密字串為

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

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

239 total views, 4 views today

PHPExcel

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 就好了

430 total views, 3 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

輔助資源

668 total views, 3 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 固定則上傳網址也必須隨之調整

 

136 total views, 2 views today

PHP command line 傳遞參數

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

cli.php

執行 php cli.php

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

執行 php cli.php v1 v2 v3

58 total views, 1 views today

使用 PHP 取得影音檔案資訊

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

參考

官網 getID3()

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

58 total views, no views today