Tag: string

Best practice to generate random token in PHP

Posted by – January 10, 2017

在 Stackoverflow 看到一篇超級實用的文:在 PHP 中產生隨機字串的最佳實踐。

產生隨機字串這個看似不起眼的議題實作起來還挺麻煩的,曾經為了如何產生字串跟同事討論了許久。

$length = 16;
$token = bin2hex(openssl_random_pseudo_bytes($length));
# => e9bf18672b051619a3479ecbe1cb7d08

唯一的參數 $length 可以替換成任意整數,產生的字串長度就是 $length *2。

同場加映,Google Chrome 的亂數演算法也有改過

Output Laravel 4 View as String

Posted by – October 16, 2014

覺得 Laravel 這套框架真的有很多眉眉角角的。

這回遇到的是要將 View::make() 的結果當成文字回傳,但 View::make() 回傳的內容似乎是包含 http header 的,無法直接存成純文字。

網路上找到兩種解法,都是官方文件裡沒提到的用法..... #$%^&*

$html = (string) View::make('foo', ['bar' => 'baz']);

$html = View::make('foo', ['bar' => 'baz'])->render();

兩者的差異是前者會遮蔽 Exception,而後者不會。

jQuery data() treating string as number

Posted by – July 3, 2014

自從 HTML5 開始推廣將自定義參數以 data- 型式標記後,自然也習慣地用 jQuery 的 data() function 來取值。

直到今天碰到一個很奇妙的狀況才注意到 jQuery 會將 data() 取回的資料做轉型。

HTML 長這樣…

<div data-mobile-phone="0919123456"></div>

JS 長這樣…

alert($('div').data('mobile-phone'));

每次跳出來的視窗內容都是 919123456,顯然被當成 int 處理了。

Google 了一會才發現 jQuery 文件寫了一行....

To retrieve the value's attribute as a string without any attempt to convert it, use the attr() method.

這沒熟讀文件還真的不知道,所以 JS 部份應改寫為...

alert($('div').attr('data-mobile-phone'));

才會得到正確的 0919123456。

MySQL 字串連接 concat

Posted by – June 30, 2011

在 MySQL 資料庫中想產生一組獨一無二的 key,這樣可以做為比對的依據。打算直接在資料庫上操作新增欄位,至於 key 的產生是很直覺地想用 md5() 這個 function 來處理。但是因為要拿什麼資料來雜湊呢? 想說就用其他欄位加一加,再加上時間來湊。很直覺地寫下這樣的 query

SELECT md5( id + name + now() )

可惜這樣的結果會因為 id 是 int,而且 name 是 string 而產生非預期的結果。解決方法是把所有的欄位轉成 string 來處理,這時候需要 concat() 來組合字串。

SELECT md5( concat( id, name, now() ) )

這樣就可以得到正確的 md5 值了。

deaf03c84d18a56b70e0b7d6438ada3e