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

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

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

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

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

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

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

變動的加密字串

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

產生加密,以 sha256 為例

當下產生的加密字串為

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

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

353 total views, no 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 就好了

594 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

輔助資源

886 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 固定則上傳網址也必須隨之調整

 

186 total views, no views today

PHP command line 傳遞參數

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

cli.php

執行 php cli.php

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

執行 php cli.php v1 v2 v3

85 total views, no views today

使用 PHP 取得影音檔案資訊

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

參考

官網 getID3()

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

87 total views, no views today