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

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

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

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

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

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

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

變動的加密字串

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

產生加密,以 sha256 為例

當下產生的加密字串為

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

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

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

2,100 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,805 total views, no 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,046 total views, no 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 固定則上傳網址也必須隨之調整

 

936 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

491 total views, no views today

使用 PHP 取得影音檔案資訊

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

參考

官網 getID3()

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

464 total views, no views today

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

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

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

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

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

 

422 total views, no views today

Smarty 3

 

Smarty 官網沒說的祕密

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

 

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

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

 

更多相關資料

[PHP]Smarty - 變數處理

279 total views, no 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

 

917 total views, no views today