驗證VAT號碼是否有效的簡易小程式
function checkVAT($vatNumber) {
$_vatCountry = strtoupper(substr($vatNumber, 0, 2));
$_vatNumber = substr($vatNumber, 2);
$client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl");
$checkRes = $client->checkVat(array(
'countryCode' => $_vatCountry,
'vatNumber' => $_vatNumber
));
return $checkRes;
}
現在大家常常使用feedly或者是flipboard來看網站的內容,而通常有圖片的內容會比較吸引大家進去看。雖然wordpress有提供特色圖片這個功能,但是在輸出rss的時候,卻沒有加入特色圖片的支援,造成在feedly或者是flipboard的顯示時都不會有圖片顯示。
要解決這個問題只需要安裝Featured Images in RSS w/ Size and Position這個plugin就可以解決,但是另外一個問題來了,安裝這個外掛之後,文章的內容會被加入一張wordpress的特色圖片小圖,造成內容裡面的圖片重覆,我個人是不太喜歡這樣的輸出,因此我在這個plugin加入了以下幾行程式,同時也有將這個功能提交給作者,或許有機會可以被加入這個外掛的功能中 (Remove default small image)
// 修改 wp-content/plugins/featured-images-for-rss-feeds/featured_images_in_rss.php這支程式
// 找到function featured_images_in_rss($content)這個function
// 在第42行下面,加入下面的程式
// remove default small image
$pattern = '/<div><img width="150"+.+div>/';
$replace = "";
$content = preg_replace($pattern, $replace, $content);
Git中正規的忽略檔案方式是使用.gitignore,但是總會有意外忘記忽略特定的檔案或者是目錄,也或者是就是有特殊需求需要把某些設定檔案進行追蹤,但是這些檔案又要忽略本地端的異動。很多的教學都是教我們使用stop tracking的方式,但是一旦使用stop tracking,那麼git中的這些檔案就會被刪除。
如果要將這些特定的檔案進行本地端地忽略,那麼只要使用下面的指令就可以
git update-index --assume-unchanged 要忽略的檔名
這樣就可以達到我們的需求了,如果開發團隊中每個都需要忽略本地端相同的檔案,那麼可以把上面的指令寫成一個檔案,這樣大家一來也可以把本地要忽略的檔案進行管理。另外記得這個檔案要透過.htaccess的方式來進行讀取的限制,免得讓大家都發現這個意外的驚喜。
當我們使用GroceryCRUD的時候,最簡單的設定密碼欄位方式
$crud->field_type('user_pass', 'password');
只要使用field_type進行設定,這個欄位就會變成密碼的樣式,但是卻會發生一個問題,就是進入到編輯頁面的時候,密碼欄位都會重新送出寫進資料庫,除非你的密碼沒有加密,直接使用明碼存放在資料庫裡面,不然就會發生密碼一直被修改,使用者會無法登入的慘劇。對了,如果你的密碼是明碼直接存放於資料庫,歡迎在下面留言,讓大家都知道,然後讓大家觀摩朝聖一下 😀
為了避免上述的慘劇發生,我使用下面的方法來處理
1. 我使用另外一種方式來表達密碼欄位,不使用原本的field_type的方式
$crud->callback_add_field('user_pass',array($this,'setPasswordToEmpty'));
$crud->callback_edit_field('user_pass',array($this,'setPasswordToEmpty'));
2. setPasswordToEmpty的內容
function setPasswordToEmpty() {
return "<input type='password' name='user_pass' value='' />";
}
3. 我建立下面兩個callback來處理密碼欄位
$crud->callback_before_insert(array($this, 'userPassProcess'));
$crud->callback_before_update(array($this, 'userPassProcess'));
4. 現在開始寫userPassProcess的內容
function userPassProcess($postArray, $primaryKey=null)
{
// 如果密碼欄位不等於空白
if(!empty($postArray['user_pass']))
{
$postArray['user_pass'] = $this->_encryptPass($postArray['user_pass']);
}
// 如果密碼欄位是空白
else if(empty($postArray['user_pass']))
{
// 如果沒有把密碼欄位從要傳送的array中移除,會發生密碼欄位被更新為空值的情況
unset($postArray['user_pass']);
}
return $postArray;
}
5. 最後把必填欄位也順手處理一下
if($crud->getState() == 'add')
{
$crud->required_fields('user_acct','user_pass');
}
else
{
$crud->required_fields('user_acct');
}
我們在設計表單的時候,有些欄位例如使用者帳號,我們會希望是唯一不重複的。GroceryCRUD其實有提供一個很簡單的方式達成我們這樣的需求,但是文件卻沒有寫,我原本想要自己寫一個,結果在讀原始碼的時候,發現作者早就做好這個功能了,下面跟大家分享一下怎麼使用。
首先,我們先把要檢查是否唯一不可重複的欄位設定為unique,這個使用phpMyAdmin來做應該不用另外教吧??
接下在controller裡面加上下面這行程式
$crud->unique_fields('user_account');
這樣就完成了,是不是相當的簡單呢?
如果要修改錯誤訊息的提示文字,請修改 $CI根目錄/application/language/$你的語系檔目錄/form_validation_lang.php 的$lang[‘is_unique’]就可以了