顯示具有 php 標籤的文章。 顯示所有文章
顯示具有 php 標籤的文章。 顯示所有文章

2016年8月11日 星期四

PHP AES encrypt

Php Aes encrypt 筆記

公司剛好有需求, 要Server端加密資料跟手機交換資料.也就是
  1.  Server端能解密手機端加密出來的資料
  2. 手機端要能解密Server端加密出來的資料
  3. 規格是以ECB 128bits 的方式來加密
接下來就是開始試著先能把自己加密出來的再解回去
encrypt.php

 <?php  
      //產生加完時要用到的KEY  
      $rand_key = random_bits(16);   
      $string = '1234567890,A,b,c';  
      echo 'string to encrypted '.$string;  
      echo "<br>";  
      $encrypted_str = aes_encrypt($string);  
      echo 'encrypted string : '.$encrypted_str;  
      echo "<br>";  
      echo 'decrypted string : '.aes_decrypt($encrypted_str);  
      function aes_encrypt($str){  
           global $rand_key;  
           $key = $rand_key;  
           $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_ECB);  
           //也可以用base64_encode來編碼, 只要注意你用什麼編就要用什麼反編  
           return bin2hex($encrypted);                                      
      }  
      function aes_decrypt($str){  
           global $rand_key;  
           $key = $rand_key;  
           //先前用16進制編碼的就用16進制反編回去  
           $str = hex2bin($str);   
           $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_ECB);  
           return $str;  
      }  
      function random_bits($l = 8) {  
           return substr(md5(uniqid(mt_rand(), true)), 0, $l);  
      }  
 ?>  

實際狀況可能會有需要自己補0, 所以當加/解密的結果不同時, 可能要注意一下是不是補0的問題


2016年6月6日 星期一

Postgresql 很棒的 NOTIFY 功能

Postgresql 有個在做即時互動很好用的功能叫Notify.

根據Documentation表示, Notify 可以在table 有insert/update/delete 的時候推出一個通知.
那麼來做個小測試吧~
首先, 我們用 pgadmin 的 query 視窗先建立一個測試用的table
CREATE TABLE test_table
(
  id serial NOT NULL,
  test_col_1 character varying
)
然後, 建立一個 trigger 觸發後要執行的 function


最後, 建立一個 trigger 來觸發事件



DB 的部分處理好了之後, 我們來寫一段小程式試試看


然後就在該目錄下cmd 執行 php notify.php, 在還沒有新增任何資料的時候只會看到


然後我們來新增一筆資料吧!

insert into test_table (test_col_1) values ('row1')

這時, 如果有成功的話應該會看到通知被推送出來



Notify 不止可以推送通知, 還可以在通知裡把有變動的資料以JSON格式一起推送. 只不過, 沒記錯的話POSTGRESQL, 要9.1版之後才有內建的JSON函式可以用

2016年6月5日 星期日

在XAMPP(WINDOWS)下安裝pthread

安裝前請先用phpinfo檢查3件事:

  1. 自己的PHP 版本
  2. Complier 的版本
  3. 64 or 32 bits
  4. Thread Safety 是 enabled
如下圖
然後到這裡找相對應的檔案下載回來. 


找到相對應的版本下載回來後, 把檔案解壓縮.
把裡面2個檔案
  1. php_pthreads.dll
  2. pthreadVC2.dll
找出來, 然後把 php_pthreads.dll copy 到 
  1. /xampp/php/ext 資料夾底下
再來把 pthreadVC2.dll copy 到
  1. /xampp/php
  2. /xampp/apache/bin
  3. windows/system32
這3個資料夾下 再重啟xampp就可以了




2016年3月3日 星期四

PHP Ratchet 的第一個範例 Hello World

上一篇我們已經把 php Ratchet 安裝好了. 現在要來試試教學上的第一個範例 Hello World.

  1. 在安裝目錄(以我的例子是D:\xampp\htdocs\ws)底下建立一個 src資料夾, 在src裡再建立一個MyApp資料夾(名字沒限制, 這裡以MyApp示範), 然後在MyApp裡建立一個管理訊息的應用程式的檔案Chat.php, 這個程式會聆聽4個事件:
    • onOpen - 有新連線的時候會呼叫這個function
    • onMessage - 有新訊息的事件
    • onClose - 連線關閉的事件
    • onError - 連線有錯誤的事件

  2. 再來, 我們要建立一個處理訊息往來的server, 在安裝目錄底下建立一個bin資料夾然後再建立一個chat-server.php的檔案
  3. 建好chat-server.php之後, 我們在該目錄下用cmd執行
    php chat-server.php
    來啟用"server".
  4. 啟用後, 我們來看看是否有成功執行:
    • 我們在根目錄(xampp是htdocs)建立一個test.html然後把底下的code貼上去
    • 然後打開2個瀏覽器各自輸入
      localhost/test.html
      127.0.0.1/test.html
    • 如果沒問題, 輸入訊息後就會看到下面的畫面
PS. 如果遇到 "Myapp/Chat not found" 的錯誤訊息, 請先確認composer.json裡的內容是否為
{

 "autoload": {

        "psr-0": {

            "MyApp": "src"

        }

    },

    "require": {

        "cboden/ratchet": "^0.3.5"

    }

}
如果不是, 請依照上面修改, 然後cmd 輸入 composer dumpautoload
重新產生composer.json檔

下一篇要來講講怎麼用Ratchet 做一個push server

在 XAMPP 上安裝 php Ratchet (Windows OS)

這幾天研究了一下用php Ratchet來建立一個websocket server,
發現他的官網給的教學不是很詳細, 在此寫一篇我在安裝流程.

  1. 首先, 要安裝COMPOSER. 對沒用過的人會比較陌生, 不過其實不難, 因為它有WINDOWS版的安裝程式, 下載後點兩下執行就可以了.
  2. 安裝完後可以開始安裝Ratchet, 用COMPOSER安裝需要幾個步驟:
    • 在windows底下, 執行CMD.EXE進入command line模式, 把目錄換到你要安裝的位置(以我的例子是D:\xampp\htdocs\ws)然後輸入
      php composer.phar require cboden/ratchet 注1, 注2
    • 執行完後, 就要開始正式安裝了, 一樣在cmd裡輸入
      php composer.phar install 
    • 等程式跑完就安裝好了Ratchet, 下一篇我會寫實際使用Ratchet做一個hello world 的範例
注1: 教學上是以LINUX為操作環境, 所以會有 ~/ 的符號.
注2: 請確定你有設定環境變數讓 Windows cmd 命令列可以執行 php 指令,這裡有教學

2015年11月29日 星期日

PHP 筆記 strrev function

PHP 筆記
最近在幫公司改舊系統的時候, 遇到一個需要把轉換出來的2進制反轉過來.
例如: 1100 要轉成 0011, 於是我就用了這個函數strrev 參考網址

範例 :
這樣就可以把1100反轉成0011了

2015年11月22日 星期日

PHP 筆記 去掉字串最後一個字元 rtrim

PHP 筆記 rtrim function

最近在組合字串要塞到DB的時候, 無意間搜到一個很便利的FUNCTION來移除字串的最後一個字元. (參考網址: rtrim)


範例:
$str = '(123456789),' ;
$str = rtrim($str, ',');
echo $str;
// (123456789) 逗號被去掉了